package ĠE quation Core Ċ Ċ import Ġorg . hamcrest . Core Matchers .` is ` Ċ import Ġorg . hamcrest . Matcher Assert . assertThat Ċ import Ġorg . junit . Test Ċ import Ġjava . lang . IllegalArgumentException Ċ import Ġkotlin . test . assert Fails With Ċ Ċ class ĠEq Tests Ġ{ ĊĊĠĠĠ Ġfun Ġcreate Eq (): ĠEq Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEq ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠParser ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScanner ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEn r icher ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScanner ())) ĊĊĠĠĠ Ġfun Ġtest Failure ( text : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġeq Ġ= Ġcreate Eq () ĊĠĠĠĠĠĠĠ Ġassert Fails With ( IllegalArgumentException :: class , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeq . eval ( text ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` n ons ense Ġin Ġn ons ense Ġout `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Failure (" n ons ense ") ĊĠĠĠĠĠĠĠ Ġtest Failure ("") ĊĠĠĠĠĠĠĠ Ġtest Failure ( null ) ĊĠĠĠĠĠĠĠ Ġtest Failure ("* ") ĊĠĠĠĠĠĠĠ Ġtest Failure ("+ ") ĊĠĠĠĠĠĠĠ Ġtest Failure ("- ") ĊĠĠĠĠĠĠĠ Ġtest Failure ("/") ĊĠĠĠĠĠĠĠ Ġtest Failure ("^ ") ĊĠĠĠĠĠĠĠ Ġtest Failure (" 1 Ġ+ ") ĊĠĠĠĠĠĠĠ Ġtest Failure ("( 1 Ġ+ Ġ 1 ") ĊĠĠĠĠĠĠĠ Ġtest Failure (" 1 Ġ+ Ġ 1 Ġ 2 Ġ- Ġ 2 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Eq ( text : ĠString , Ġexpected : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġeq Ġ= Ġcreate Eq () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġeq . eval ( text ) ĊĠĠĠĠĠĠĠ ĠassertThat ( result , Ġ` is `( expected )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` simple Ġnumber `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Eq (" 1 ", Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtest Eq (" 2 ", Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtest Eq (" 2 9 9 9 8 7 ", Ġ 2 9 9 9 8 7 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` addition `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Eq (" 1 Ġ+ Ġ 1 ", Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtest Eq (" 1 Ġ+ Ġ 2 ", Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġtest Eq (" 2 Ġ+ Ġ 2 ", Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġtest Eq (" 1 Ġ+ Ġ 2 Ġ+ Ġ 3 ", Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġtest Eq (" 1 Ġ+ Ġ 2 Ġ+ Ġ 3 Ġ+ Ġ 9 9 9 9 Ġ+ Ġ 3 2 1 ", Ġ 1 0 3 2 6 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` sub traction `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Eq (" 1 Ġ- Ġ 1 ", Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtest Eq (" 1 0 Ġ- Ġ 5 ", Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġtest Eq (" 1 0 0 Ġ- Ġ 1 0 Ġ- Ġ 1 0 Ġ- Ġ 1 0 Ġ- Ġ 1 0 Ġ- Ġ 1 0 ", Ġ 5 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` add Ġand Ġsub `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Eq (" 1 Ġ+ Ġ 1 0 Ġ- Ġ 5 Ġ+ Ġ 3 Ġ- Ġ 1 Ġ+ Ġ 5 Ġ+ Ġ 1 0 ", Ġ 2 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` br ackets `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Eq ("( 1 Ġ+ Ġ 1 0 ) Ġ- Ġ 1 0 ", Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtest Eq (" 1 0 0 Ġ+ Ġ( 1 Ġ+ Ġ 1 0 ) Ġ- Ġ(( 1 3 Ġ- Ġ 3 ) Ġ+ Ġ 2 )", Ġ 9 9 ) ĊĠĠĠĠĠĠĠ Ġtest Eq (" (( 1 0 0 Ġ- Ġ 5 0 ) Ġ- Ġ( 4 0 Ġ+ Ġ 2 5 Ġ- Ġ 3 0 )) Ġ- Ġ( 1 Ġ+ Ġ 1 0 ) Ġ- Ġ(( 1 3 Ġ- Ġ 3 ) Ġ+ Ġ 2 )", Ġ- 8 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` multiply `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Eq (" 1 Ġ* Ġ 1 ", Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtest Eq (" 1 Ġ* Ġ 2 ", Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġtest Eq (" 5 Ġ* Ġ 5 ", Ġ 2 5 ) ĊĠĠĠĠĠĠĠ Ġtest Eq (" 5 Ġ* Ġ 5 Ġ* Ġ 5 ", Ġ 1 2 5 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` br ackets Ġand Ġmultiply `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Eq (" (( 1 0 Ġ- Ġ 2 Ġ- Ġ 3 ) Ġ+ Ġ 5 ) Ġ* Ġ( 2 Ġ+ Ġ 3 )", Ġ 5 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` division `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Eq (" 1 Ġ/ Ġ 1 ", Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġtest Eq (" 8 Ġ/ Ġ 2 Ġ/ Ġ 2 ", Ġ 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` combin ation `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Eq (" 4 Ġ* Ġ 5 Ġ/ Ġ 2 Ġ+ Ġ 7 ", Ġ 1 7 ) ĊĠĠĠĠĠĠĠ Ġtest Eq (" (( 2 5 Ġ/ Ġ 5 Ġ* Ġ 2 ) Ġ/ Ġ 2 ) Ġ* Ġ 3 0 Ġ- Ġ 5 Ġ+ Ġ 5 ", Ġ 1 5 0 ) ĊĠĠĠĠĠĠĠ Ġtest Eq (" 7 Ġ+ Ġ 7 Ġ/ Ġ 7 Ġ+ Ġ 7 Ġ* Ġ 7 Ġ- Ġ 7 ", Ġ 5 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` div ides Ġwhich Ġresult Ġin Ġdecimals Ġfail `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Failure (" 5 Ġ/ Ġ 3 ") ĊĠĠĠ Ġ} Ċ }