from slidge_style_parser import format_body
MATRIX_FORMATS = {
"_": ("", ""),
"*": ("", ""),
"~": ("", ""),
"`": ("", ""),
"```": ("
", ""),
"```language": ("", ""),
">": ("", ""), "||": ("", "") } 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 = "
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\ngrouped" assert(format_body(test, MATRIX_FORMATS) == formatted_body) test = ">>double" formatted_body = "
" assert(format_body(test, MATRIX_FORMATS) == formatted_body) test = ">>double\n>>double" formatted_body = "double
" assert(format_body(test, MATRIX_FORMATS) == formatted_body) test = ">>double\n&>not quote" formatted_body = "double\ndouble
\n&>not quote" assert(format_body(test, MATRIX_FORMATS) == formatted_body) test = ">>double\n>grouped single" formatted_body = "double
" assert(format_body(test, MATRIX_FORMATS) == formatted_body) test = ">>>tripple\n>single\n>>double" formatted_body = "double\ngrouped single
" assert(format_body(test, MATRIX_FORMATS) == formatted_body) def test_code_blocks(): test = "```\nhacker\ncode\n```" formatted_body = "\nsingle\ntrippledouble
hacker\ncode"
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 = ">```java\n>why are you quoting a code block\n>```"
formatted_body = "" assert(format_body(test, MATRIX_FORMATS) == formatted_body) test = ">```\n>please stop trying to break my parser ;-;\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 = "please stop trying to break my parser ;-;
\nnormal text" 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 = "\nsingle quote not in code blockdouble quote code block
\nnormal text" assert(format_body(test, MATRIX_FORMATS) == formatted_body) test = "_```_ignored\ninvalid code block\n```" formatted_body = "```ignored\ninvalid code block\n```" 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 = "\nsingle quote not in code block>>double quote code block
\n>none\ntripple
" assert(format_body(test, MATRIX_FORMATS) == formatted_body) def test_nested(): test = "`*~_code span_~*`" formatted_body = "double
*~_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 = "||\nalso\nnot\na\nspoiler||" assert(format_body(test, MATRIX_FORMATS) == formatted_body) test = "`no code\nblock here`" formatted_body = "`no code\nblock here`" assert(format_body(test, MATRIX_FORMATS) == formatted_body) test = "invalid ```\ncode block\n```" formatted_body = "invalid ```\ncode block\n```" assert(format_body(test, MATRIX_FORMATS) == formatted_body) test = "```\ncode block\ninvalid```" formatted_body = "```\ncode block\ninvalid```" assert(format_body(test, MATRIX_FORMATS) == formatted_body) test = "```\ncode block\n```invalid" formatted_body = "```\ncode block\n```invalid" assert(format_body(test, MATRIX_FORMATS) == formatted_body) def test_assorted(): 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 thecode span
quote\nnothing\nnothing\n
" 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 = "another quote with```four```
\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 = "
", "")
}
def test_limited():
test = "_underline_ *bold* ~strikethrough~ >not quote ||spoiler||\n>quote\nnothing\nnothing\n>>>>another quote with ||~_*```four```*_~||"
formatted_body = "underline *bold*