package Ġme . s arg un vo h ra . lib . cake parse Ċ Ċ import Ġme . s arg un vo h ra . lib . cake parse . api .* Ċ import Ġme . s arg un vo h ra . lib . cake parse . exception .* Ċ import Ġme . s arg un vo h ra . lib . cake parse . lexer . Lexer Ċ import Ġorg . testng . annotations . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assert Fails With Ċ Ċ class ĠError Test Ġ{ ĊĊĠĠĠ Ġfun Ġlex ( input : ĠString ) Ġ= ĠCalc . all Tokens . lexer (). lex ( input ) ĊĊĠĠĠ Ġprivate Ġfun Ġparse ( input : ĠString ) Ġ= Ġlex ( input ). parse ToEnd ( Calc . Rules . expr ). value ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġno Tokens () Ġ= Ġassert Fails With < IllegalArgumentException > Ġ{ ĠLex er ( empty Set ()) Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġexpected E of () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= Ġassert Fails With < Unexpected Token Exception > Ġ{ Ġparse (" 1 + 1 Ġ 1 ") Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( null , Ġe . expected ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Calc . Tokens . number , Ġe . got . type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġexpected Other Token () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= Ġassert Fails With < Unexpected Token Exception > Ġ{ Ġparse (" () ") Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( Calc . Tokens . l Par , Ġe . expected ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Calc . Tokens . r Par , Ġe . got . type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġunexpected E of () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= Ġassert Fails With < Unexpected E of Exception > Ġ{ Ġparse (" (" ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( Calc . Tokens . l Par , Ġe . expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrepeat Too F ew () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= Ġassert Fails With < Unexpected E of Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlex (" 1 \ n 2 \ n 3 \ n 4 \ n "). parse ToEnd ( repeat ( 5 , ĠCalc . Rules . expr Ġ Ġbefore ĠCalc . Tokens . newline )). value ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( Calc . Tokens . l Par , Ġe . expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrepeat Too Many () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= Ġassert Fails With < Unexpected Token Exception > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlex (" 1 \ n 2 \ n 3 \ n 4 \ n 5 \ n 6 \ n "). parse ToEnd ( repeat ( 5 , ĠCalc . Rules . expr Ġ Ġbefore ĠCalc . Tokens . newline )). value ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( null , Ġe . expected ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Calc . Tokens . number , Ġe . got . type ) ĊĠĠĠ Ġ} Ċ }