def testBrokenRealDictionaryArticle(self): # zh => ru, http://bkrs.info/slovo.php?ch=一一相应 before = """一一相应 yīyī xiāngyìng [m1][c][i]мат.[/c][/i] взаимнооднозначное соответствие[/m]""" after = """一一相应 yīyī xiāngyìng [m1][p]мат.[/p] взаимнооднозначное соответствие[/m]""" self.assertEqual(after, parse(before))
def testBrokenManyRealDictionaryArticle(self): # zh => ru, http://bkrs.info/slovo.php?ch=一轮 before = """一轮 yīlún [m1]1) одна очередь[/m][m1]2) цикл ([i]в 12 лет[/i])[/m][m1]3) диск ([c][i]напр.[/c] луны[/i])[/m]\ [m1]4) [c] [i]спорт[/c][/i] раунд, круг ([i]встречи спортсменов[/i])[/m]\ [m1]5) [c] [i]дипл.[/c][/i] раунд ([i]переговоров[/i])[/m]""" after = """一轮 yīlún [m1]1) одна очередь[/m][m1]2) цикл ([i]в 12 лет[/i])[/m][m1]3) диск ([i][c]напр.[/c] луны[/i])[/m]\ [m1]4) [c] [i]спорт[/i][/c] раунд, круг ([i]встречи спортсменов[/i])[/m]\ [m1]5) [c] [i]дипл.[/i][/c] раунд ([i]переговоров[/i])[/m]""" self.assertEqual(after, parse(before))
def testStandaloneOpenedAtTheEnd(self): before = """...[i],,,""" after = """...,,,""" self.assertEqual(after, parse(before))
def testEndsWithStandaloneOpened(self): before = """...[i]""" after = """...""" self.assertEqual(after, parse(before))
def testTagMInsideAnotherTag(self): # tag order. before = "[c][m1]...[/m][/c]" after = "[m1][c]...[/c][/m]" self.assertEqual(after, parse(before))
def testWrongOrder2_WithConent(self): before = """[b]...[c red]...[/b]...[/c]""" after = """[b]...[c red]...[/c][/b][c red]...[/c]""" self.assertEqual(after, parse(before))
def testPoorlyEscapedBracketsWithTags(self): before = r"""...\[c],,,[/c]+++""" after = r"""...\[c],,,+++""" self.assertEqual(after, parse(before))
def testNestedWithBrokenOutter(self): before = """[i][p]...[/p][/c]""" after = """[p]...[/p]""" self.assertEqual(after, parse(before))
def testValidEmptyTagsDestructionOne(self): before = """...[i][/i],,,""" after = """...,,,""" self.assertEqual(after, parse(before))
def testBrokenEmptyTagsDestructionMany(self): before = """...[b][i][c][/b][/c][/i],,,""" after = """...,,,""" self.assertEqual(after, parse(before))
def testStartsWtihClosingAndEndsWithOpening(self): before = """[/c]...[i]""" after = """...""" self.assertEqual(after, parse(before))
def testOpenOneCloseAnother(self): before = """...[i],,,[/p]+++""" after = """...,,,+++""" self.assertEqual(after, parse(before))
def testWrongOrder3(self): before = """...[i][c],,,[b]+++[/i][/c][/b]---""" after = """...[p],,,[b]+++[/b][/p]---""" self.assertEqual(after, parse(before))
def testWrongOrder2(self): before = """...[i][b],,,[/i][/b]+++""" after = """...[i][b],,,[/b][/i]+++""" self.assertEqual(after, parse(before))
def testHorriblyBrokenTags(self): before = """[/c]...[i][/p],,,[/i]+++[b]""" after = """...[i],,,[/i]+++""" self.assertEqual(after, parse(before))
def testWrongOrderWithTextBefore(self): before = "[c]...[i],,,[/c][/i]" after = "[c]...[i],,,[/i][/c]" self.assertEqual(after, parse(before))
def testRespect_m_TagsProperly(self): before = """ [m1]for tags like: [p]n[/c][/i][/p], the line needs scan again[/m]""" after = """ [m1]for tags like: [p]n[/p], the line needs scan again[/m]""" self.assertEqual(after, parse(before))
def testValidRealDictionaryArticle(self): # zh => ru, http://bkrs.info/slovo.php?ch=和田 before = after = """和田 [m1][p]г. и уезд[/p] Хотан ([i]Синьцзян-Уйгурский[c] авт.[/c] р-н, КНР[/i])[/m]\ [m2][*][ex]和田玉 Хотанский нефрит[/ex][/*][/m]""" self.assertEqual(after, parse(before))
def testNoTagsDoNothing(self): before = after = """no tags, do nothing""" self.assertEqual(after, parse(before))
def testOneLastTextLetter(self): before = after = "b" self.assertEqual(after, parse(before))
def testBrokenNestedTags(self): before = """...[b][i][c]...[/b][/c][/i]...""" after = """...[b][p]...[/p][/b]...""" self.assertEqual(after, parse(before))
def testTagMDeepInside(self): before = "...[i],,,[b]+++[c green][/b]---[m1]```[/i][/c][/m]..." after = "...[i],,,[b]+++[/b][c green]---[/c][/i][m1][i][c green]```[/c][/i][/m]..." self.assertEqual(after, parse(before))
def testEscapedBrackets(self): before = after = r"""on \[the\] top""" self.assertEqual(after, parse(before))
def testStandaloneOpenedAtTheEndAfterMarkup(self): before = """...[i][b],,,[/b][/i]+++[i]---""" after = """...[i][b],,,[/b][/i]+++---""" self.assertEqual(after, parse(before))
def testPoorlyEscapedBracketsWithTags2(self): before = r"""on \[the\] [b]roof[/b]]""" after = r"""on \[the\] [b]roof[/b]]""" self.assertEqual(after, parse(before))
def testSameTagsNested(self): before = "...[p],,,[p]+++[/p]---[/p]```" after = "...[p],,,+++[/p]---```" self.assertEqual(after, parse(before))
def testOneLastTextLetterAfterTag(self): before = after = "...[b],,,[/b]b" self.assertEqual(after, parse(before))
def testTagMInsideAnotherTagAfterText(self): before = "[c]...[m1],,,[/m][/c]" after = "[c]...[/c][m1][c],,,[/c][/m]" self.assertEqual(after, parse(before))
def testTagMInsideBroken(self): before = "[m1][*]- [ref]...[/ref][/m][m1]- [ref],,,[/ref][/*][/m]" after = "[m1][*]- [ref]...[/ref][/*][/m][m1][*]- [ref],,,[/ref][/*][/m]" self.assertEqual(after, parse(before))
def testStandaloneClosedAtTheBeginningBeforeMarkup(self): before = """...[/p],,,[i][b]+++[/b][/i]---""" after = """...,,,[i][b]+++[/b][/i]---""" self.assertEqual(after, parse(before))