package Ġru . alf ab ank . e comm . d creator . parser . line Ċ Ċ import Ġru . alf ab ank . e comm . d creator . nodes .* Ċ import Ġru . alf ab ank . e comm . d creator . parser . Markdown Parser Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠSimple Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġparser Ġ= ĠMarkdown Parser () ĊĠĠĠ Ġprivate Ġval Ġline Parser Ġ= Ġparser . line Parser ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsimple _ bounds _ test () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Italic Ġ= Ġline Parser . parse ("_ ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı _ ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Italic Node ( Text Node (" ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı ")), Ġtest Italic ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Italic 2 Ġ= Ġline Parser . parse ("* ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı * ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Italic Node ( Text Node (" ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı ")), Ġtest Italic 2 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Italic 3 Ġ= Ġline Parser . parse (" ** ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı * ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Italic Node ( Text Node ("* ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı ")), Ġtest Italic 3 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Italic 4 Ġ= Ġline Parser . parse (" ** ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı * saf ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Row Layout ( listOf ( Italic Node ( Text Node ("* ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı ")), ĠText Node (" saf ")) ), Ġtest Italic 4 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Bold Ġ= Ġline Parser . parse ("__ ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı __ ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Bold Node ( Text Node (" ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı ")), Ġtest Bold ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Bold 2 Ġ= Ġline Parser . parse (" ** ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı ** ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Bold Node ( Text Node (" ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı ")), Ġtest Bold 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// combine ĊĠĠĠĠĠĠĠ Ġval Ġtest Combine Ġ= Ġline Parser . parse (" ** _ ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı _** ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Bold Node ( Italic Node ( Text Node (" ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı ")) ), Ġtest Combine ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Combine 2 Ġ= Ġline Parser . parse (" ** Ġ_ ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı _** ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Bold Node ( Row Layout ( listOf ( Text Node (" Ġ"), ĠIt alic Node ( Text Node (" ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı ")) ))), Ġtest Combine 2 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Combine 3 Ġ= Ġline Parser . parse (" ** Ġ_ ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı Ġ_ ** ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Bold Node ( Row Layout ( listOf ( Text Node (" Ġ"), ĠIt alic Node ( Text Node (" ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı Ġ" )))) ), Ġtest Combine 3 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Combine 4 Ġ= Ġline Parser . parse (" ** Ġ_ ĠÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı Ġ_ ** ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB old Node ( Row Layout ( listOf ( Text Node (" Ġ"), ĠIt alic Node ( Text Node (" ĠÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı Ġ" )))) ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Combine 4 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// combine Ġreverse ĊĠĠĠĠĠĠĠ Ġval Ġtest Combine Reverse Ġ= Ġline Parser . parse ("_ ** ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı ** _ ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Italic Node ( Bold Node ( Text Node (" ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı ")) ), Ġtest Combine Reverse ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Combine Reverse 2 Ġ= Ġline Parser . parse ("_ Ġ** ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı ** _ ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIt alic Node ( Row Layout ( listOf ( Text Node (" Ġ"), ĠB old Node ( Text Node (" ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı ")) ))), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Combine Reverse 2 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Combine Reverse 3 Ġ= Ġline Parser . parse ("_ Ġ** ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı ** Ġ_ ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIt alic Node ( Row Layout ( listOf ( Text Node (" Ġ"), ĠB old Node ( Text Node (" ÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı ")), ĠText Node (" Ġ" )))), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Combine Reverse 3 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Combine Reverse 4 Ġ= Ġline Parser . parse ("_ Ġ** ĠÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı Ġ**_ ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIt alic Node ( Row Layout ( listOf ( Text Node (" Ġ"), ĠB old Node ( Text Node (" ĠÑĢ ÐµÐ³ Ð¸ÑģÑĤ ÑĢÐ° ÑĨÐ¸ Ð¾Ð½ Ð½Ð°Ñı Ġ" )))) ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Combine Reverse 4 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// underline ĊĠĠĠĠĠĠĠ Ġval Ġunderline Ġ= Ġline Parser . parse (" ++ some Ġtext ++ ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Underline Node ( Text Node (" some Ġtext ")), Ġunderline ) ĊĊĠĠĠĠĠĠĠ Ġ// strike though ĊĠĠĠĠĠĠĠ Ġval Ġstrike through Ġ= Ġline Parser . parse (" ~~ some Ġtext ~~ ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Stri ke through Node ( Text Node (" some Ġtext ")), Ġstrike through ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsimple _ code _ tests () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Code Ġ= Ġline Parser . parse (" ` some Ġcode Ġ` ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Code Sample Node (" some Ġcode Ġ"), Ġtest Code ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Code 2 Ġ= Ġline Parser . parse (" ` Ġ** some Ġcode ** Ġ` ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( Code Sample Node (" Ġ** some Ġcode ** Ġ"), Ġtest Code 2 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Code 3 Ġ= Ġline Parser . parse (" some Ġ* text *` Ġ_ Ġ** some Ġcode ** Ġ_ Ġ` Ġmo ** re Ġother ** Ġtext ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRow Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Node (" some Ġ"), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIt alic Node ( Text Node (" text ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCode Sample Node (" Ġ_ Ġ** some Ġcode ** Ġ_ Ġ"), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Node (" Ġmo "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB old Node ( Text Node (" re Ġother ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Node (" Ġtext ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġtest Code 3 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsimple _ html _ tests () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtest Html Ġ= Ġline Parser . parse ("< tr Ġclass =\" clazz 1 \"> Ġtext </ tr >") ĊĠĠĠĠĠĠĠ ĠassertEquals ( HTML Node ("< tr Ġclass =\" clazz 1 \"> Ġtext </ tr > "), Ġtest Html ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Html A Ġ= Ġline Parser . parse ("< a Ġhref =\" http :// localhost \"> text </ a >") ĊĠĠĠĠĠĠĠ ĠassertEquals ( HTML Node ("< a Ġhref =\" http :// localhost \"> text </ a > "), Ġtest Html A ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Html Complex Ġ= Ġline Parser . parse (" some Ġtext Ġ** bold Text ** Ġ< tr Ġclass =\" clazz 1 \"> Ġ** text *</ tr > Ġend Text ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRow Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Node (" some Ġtext Ġ"), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB old Node ( Text Node (" bold Text ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Node (" Ġ"), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHTML Node ("< tr Ġclass =\" clazz 1 \"> Ġ** text *</ tr > "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Node (" Ġend Text ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġtest Html Complex ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Html Complex 2 Ġ= Ġline Parser . parse (" some Ġtext Ġ** bold Text ** Ġ< tr Ġclass =\" clazz 1 \" Ġ** text *</ tr > Ġend Text ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRow Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Node (" some Ġtext Ġ"), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB old Node ( Text Node (" bold Text ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Node (" Ġ< tr Ġclass =\" clazz 1 \" Ġ"), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIt alic Node ( Text Node ("* text ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Node ("</ tr > Ġend Text ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġtest Html Complex 2 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Html Complex 3 Ġ= Ġline Parser . parse (" some Ġtext Ġ** bold Text ** Ġ< a Ġclass =\" clazz 1 \" Ġ** text *</ a > Ġend Text ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRow Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Node (" some Ġtext Ġ"), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB old Node ( Text Node (" bold Text ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Node (" Ġ< a Ġclass =\" clazz 1 \" Ġ"), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIt alic Node ( Text Node ("* text ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Node ("</ a > Ġend Text ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġtest Html Complex 3 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcomplex _ links _ test _ 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcomplex Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ[![ N | Solid ]( https :// cl dup . com / d Tx p Pi 9 l Df . thumb . png )]( https :// node source . com / products / ns olid Ġ" some Ġtitle ") ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġline Parser . parse ( complex ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠLink Node ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠImage Link Node (" N | Solid ", Ġ" https :// cl dup . com / d Tx p Pi 9 l Df . thumb . png "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// node source . com / products / ns olid ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" some Ġtitle " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġactual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcomplex _ links _ test _ 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcomplex Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsome Ġbegin Ġtext [** asdf asd ** Ġ![ N | Solid ]( https :// cl dup . com / d Tx p Pi 9 l Df . thumb . png )]( https :// node source . com / products / ns olid Ġ" some Ġtitle ") ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġline Parser . parse ( complex ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠRow Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Node (" some Ġbegin Ġtext "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLink Node ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRow Layout ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB old Node ( Text Node (" asdf asd ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText Node (" Ġ"), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Link Node (" N | Solid ", Ġ" https :// cl dup . com / d Tx p Pi 9 l Df . thumb . png ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// node source . com / products / ns olid ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" some Ġtitle " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġactual ) ĊĠĠĠ Ġ} ĊĊ Ċ }