package Ġcom . github . mur z agal in . evaluator . tokenizer Ċ Ċ import Ġcom . github . mur z agal in . evaluator . Token Ċ import Ġcom . github . mur z agal in . evaluator . Tokenizer Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assert Content Equals Ċ import Ġkotlin . test . assertEquals Ċ Ċ internal Ġclass ĠSimple Tokenizer Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġsubject Ġ= ĠToken izer () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġparsing _ int _ value () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsubject . tokenize (" 1 2 3 4 5 ") ĊĊĠĠĠĠĠĠĠ Ġassert Content Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Token . Operand . Number ( 1 2 3 4 5 )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsum _ of _ 2 _ simple _ operands () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsubject . tokenize (" 3 + 4 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġresult . size ) ĊĠĠĠĠĠĠĠ Ġassert Content Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operator . Plus , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġplus _ an _ minus _ after _ br ackets () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert Content Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Bracket . Left , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 1 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operator . Plus , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 3 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Bracket . Right , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operator . Minus , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . tokenize ("( 1 2 + 3 2 )- 3 ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert Content Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Bracket . Left , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 1 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operator . Plus , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 3 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Bracket . Right , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operator . Plus , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . tokenize ("( 1 2 + 3 2 )+ 3 ") ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsub _ of _ 2 _ operands () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsubject . tokenize (" 9 6 8 3 - 2 3 6 5 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġresult . size ) ĊĠĠĠĠĠĠĠ Ġassert Content Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 9 6 8 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operator . Minus , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 2 3 6 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġpow _ of _ 2 _ simple _ operands () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsubject . tokenize (" 3 3 ^ 4 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġresult . size ) ĊĠĠĠĠĠĠĠ Ġassert Content Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 3 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operator . Power , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdivision _ of _ 2 _ operands () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsubject . tokenize (" 2 5 3 6 / 5 7 5 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġresult . size ) ĊĠĠĠĠĠĠĠ Ġassert Content Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 2 5 3 6 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operator . Division , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 5 7 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsum _ of _ 2 _ simple _ operands _ with _ spaces () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsubject . tokenize (" Ġ 3 Ġ+ Ġ 4 Ġ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġresult . size ) ĊĠĠĠĠĠĠĠ Ġassert Content Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operator . Plus , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmultiplication _ of _ 2 _ operands () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsubject . tokenize (" 5 3 2 5 * 2 8 9 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġresult . size ) ĊĠĠĠĠĠĠĠ Ġassert Content Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 5 3 2 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operator . Multip lication , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 2 8 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsum _ and _ multip lication _ with _ 3 _ simple _ operands () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsubject . tokenize (" 1 Ġ+ Ġ 8 * 9 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 5 , Ġresult . size ) ĊĠĠĠĠĠĠĠ Ġassert Content Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operator . Plus , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 8 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operator . Multip lication , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsum _ and _ multip lication _ with _ 3 _ operands () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsubject . tokenize (" 1 4 3 2 Ġ+ Ġ 8 5 8 5 * 9 3 4 6 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 5 , Ġresult . size ) ĊĠĠĠĠĠĠĠ Ġassert Content Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 1 4 3 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operator . Plus , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 8 5 8 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operator . Multip lication , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 9 3 4 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġexpression _ with _ br ackets () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsubject . tokenize ("( 1 4 3 2 Ġ+ Ġ 8 5 8 5 )* 9 3 4 6 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 7 , Ġresult . size ) ĊĠĠĠĠĠĠĠ Ġassert Content Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Bracket . Left , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 1 4 3 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operator . Plus , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 8 5 8 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Bracket . Right , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operator . Multip lication , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 9 3 4 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġmodulo () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsubject . tokenize (" 2 . 5 % 0 . 2 6 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġresult . size ) ĊĠĠĠĠĠĠĠ Ġassert Content Equals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 2 . 5 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operator . Modulo , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToken . Operand . Number ( 0 . 2 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }