From 13043d6ec8efe62d13336745a0f650ff3e899648 Mon Sep 17 00:00:00 2001 From: SavagePeanut Date: Sun, 3 Sep 2023 15:11:01 -0500 Subject: rename matrix tests --- tests/test_matrix_style_parser.py | 280 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 280 insertions(+) create mode 100644 tests/test_matrix_style_parser.py diff --git a/tests/test_matrix_style_parser.py b/tests/test_matrix_style_parser.py new file mode 100644 index 0000000..b8ed112 --- /dev/null +++ b/tests/test_matrix_style_parser.py @@ -0,0 +1,280 @@ +from slidge_style_parser import format_body + +MATRIX_FORMATS = { + "_": ("", ""), + "*": ("", ""), + "~": ("", ""), + "`": ("", ""), + "```": ("
", "
"), + "```language": ("
", "
"), + ">": ("
", "
"), + "||": ("", ""), + "\n": ("
", "") +} + +def test_basic(): + test = "_underline_" + formatted_body = "underline" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "*bold*" + formatted_body = "bold" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "~strikethrough~" + formatted_body = "strikethrough" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "`code span`" + formatted_body = "code span" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = """ + ```python + def test_basic(): + test = "_underline_" + formatted_body = "underline" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + ``` + """ + formatted_body = test = """
def test_basic():
test = "_underline_"
formatted_body = "underline"
assert(format_body(test, MATRIX_FORMATS) == (test, formatted_body))

""" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "```\ncode block\n```" + formatted_body = "
code block
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "||this message contains a spoiler||" + formatted_body = "this message contains a spoiler" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + +def test_quotes(): + test = ">single" + formatted_body = "
single
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = ">single arrow ->" + formatted_body = "
single arrow ->
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = ">single\n>grouped" + formatted_body = "
single
grouped
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = ">>double" + formatted_body = "
double
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = ">>double\n>>double" + formatted_body = "
double
double
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = ">>double\n&>not quote" + formatted_body = "
double

&>not quote" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = ">>double\n>grouped single" + formatted_body = "
double

grouped single
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = ">>>tripple\n>single\n>>double" + formatted_body = "
tripple

single
double
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + +def test_code_blocks(): + test = "```\nhacker\ncode\n```" + formatted_body = "
hacker
code
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "```python\nhacker code\n```" + formatted_body = "
hacker code
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "```python\nhacker code\n```\nnormal text" + formatted_body = "
hacker code

normal text" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "```python\nhacker code\n```\nnormal text\n```java\npublic static void main(String [])\n```" + formatted_body = "
hacker code

normal text
public static void main(String [])
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = ">```java\n>why are you quoting a code block\n>```" + formatted_body = "
why are you quoting a code block
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = ">>```\n>>double quote code block\n>single quote not in code block\nnormal text" + formatted_body = "
double quote code block

single quote not in code block

normal text" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = ">```\n>please stop trying to break my parser ;-;" + formatted_body = "
please stop trying to break my parser ;-;
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = ">>```\n>>>>double quote code block\n>single quote not in code block\nnormal text" + formatted_body = "
>>double quote code block

single quote not in code block

normal text" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "_```_ignored\ninvalid code block\n```" + formatted_body = "```ignored
invalid code block
```" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + +def test_escaped(): + test = "\\_no underline_" + formatted_body = "_no underline_" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "\\\\_no underline_" + formatted_body = "\\_no underline_" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = ">>>tripple\n\\>none\n>>double" + formatted_body = "
tripple

>none
double
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + +def test_nested(): + test = "`*~_code span_~*`" + formatted_body = "*~_code span_~*" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "*_~`code span`~_*" + formatted_body = "code span" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = ">*_~`code span`~_*" + formatted_body = "
code span
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "*bold star >*< star bold*" + formatted_body = "bold star >*< star bold" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "*_bold*_" + formatted_body = "_bold_" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "__underlined__" + formatted_body = "underlined" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + +def test_no_changes(): + test = "" + formatted_body = "" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "~~ empty `````` styles **" + formatted_body = "~~ empty `````` styles **" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "this is not an empty string" + formatted_body = "this is not an empty string" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "arrow ->" + formatted_body = "arrow ->" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = " > no quote" + formatted_body = " > no quote" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "_not underlined" + formatted_body = "_not underlined" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "|not a spoiler|" + formatted_body = "|not a spoiler|" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "||\nalso\nnot\na\nspoiler||" + formatted_body = "||
also
not
a
spoiler||" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "`no code\nblock here`" + formatted_body = "`no code
block here`" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "invalid ```\ncode block\n```" + formatted_body = "invalid ```
code block
```" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "```\ncode block\ninvalid```" + formatted_body = "```
code block
invalid```" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "```\ncode block\n```invalid" + formatted_body = "```
code block
```invalid" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + +def test_assorted(): + test = "\n" + formatted_body = "
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "at the ||end||" + formatted_body = "at the end" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "in the ~middle~ here" + formatted_body = "in the middle here" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "_underline_ *bold* ~strikethrough~ >not quote ||spoiler||\n>quote\nnothing\nnothing\n>>>>another quote with ||~_*```four```*_~||" + formatted_body = "underline bold strikethrough >not quote spoiler
quote

nothing
nothing
another quote with ```four```
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = ">```\n>do be do be dooo ba do be do be do ba\n>>>" + formatted_body = "
do be do be dooo ba do be do be do ba
>>
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "\n\n>```\n>do be do be dooo ba do be do be do ba\na\n\n\naoeu\n" + formatted_body = "

do be do be dooo ba do be do be do ba

a


aoeu
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = ">```\n>do be do be dooo ba do be do be do ba\n>\n>\n>aoeu" + formatted_body = "
do be do be dooo ba do be do be do ba


aoeu
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = ">```\n>code block\n>```invalid end\n" + formatted_body = "
code block
```invalid end

" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "invalid ```\ncode block\n*bold*\n```" + formatted_body = "invalid ```
code block
bold
```" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + +def test_weird_utf8(): + test = "โค๏ธ๐Ÿ’“๐Ÿ’•๐Ÿ’–๐Ÿ’— ||๐Ÿ’™๐Ÿ’š๐Ÿ’›๐Ÿ’œ๐Ÿ–ค|| ๐Ÿ’๐Ÿ’ž๐Ÿ’Ÿโฃ๏ธ" + formatted_body = "โค๏ธ๐Ÿ’“๐Ÿ’•๐Ÿ’–๐Ÿ’— ๐Ÿ’™๐Ÿ’š๐Ÿ’›๐Ÿ’œ๐Ÿ–ค ๐Ÿ’๐Ÿ’ž๐Ÿ’Ÿโฃ๏ธ" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง _underline_๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ง" + formatted_body = "๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง underline๐Ÿ‘ฉโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ง" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "\u202eRight to left" + formatted_body = "\u202eRight to left" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = ">\u202eRight to left quote?" + formatted_body = "
\u202eRight to left quote?
" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "_Invisible\u200bseparator_" + formatted_body = "Invisible\u200bseparator" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + + test = "~\u200b~" + formatted_body = "\u200b" + assert(format_body(test, MATRIX_FORMATS) == formatted_body) + +LIMITED_FORMATS = { + "_": ("", ""), + "~": ("", ""), + "`": ("", "") +} + +def test_limited(): + test = "_underline_ *bold* ~strikethrough~ >not quote ||spoiler||\n>quote\nnothing\nnothing\n>>>>another quote with ||~_*```four```*_~||" + formatted_body = "underline *bold* strikethrough >not quote ||spoiler||\n>quote\nnothing\nnothing\n>>>>another quote with ||*```four```*||" + assert(format_body(test, LIMITED_FORMATS) == formatted_body) -- cgit v1.2.3