package Ġorg . s job lo mj . ad vent of code . day 2 Ċ Ċ import Ġorg . junit . Test Ċ import Ġjava . lang . RuntimeException Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assert Fails With Ċ Ċ class ĠDay 2 Tests Ġ{ ĊĊ ĉ @ Test Ċ ĉ fun Ġ` Calcul ates Ġthe Ġcorrect Ġanswers `() Ġ{ Ċĉ ĉ assertEquals ( Pair ( 5 8 6 6 6 6 3 , Ġ 4 2 5 9 ), Ġday 2 ()) Ċ ĉ } ĊĊĊ ĉ @ Test Ċ ĉ fun Ġ` Can Ġinitialize Ġprogram `() Ġ{ Ċĉ ĉ val Ġinput Ġ= Ġ" 2 , 4 , 4 , 5 , 9 9 , 0 ". list ify () Ċĉ ĉ assertEquals (" 2 , 1 2 , 2 , 5 , 9 9 , 0 ". list ify (), Ġinitialize Program ( input , Ġ 1 2 , Ġ 2 )) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġ` Single ĠAdding Ġopcode `() Ġ{ Ċĉ ĉ val Ġinput 0 Ġ= Ġ" 1 , 2 , 1 , 2 ". list ify () Ċĉ ĉ assertEquals (" 1 , 2 , 3 , 2 ". list ify (), Ġcalculate Op codes ( input 0 )) ĊĊĉ ĉ val Ġinput 1 Ġ= Ġ" 1 , 0 , 0 , 0 ". list ify () Ċĉ ĉ assertEquals (" 2 , 0 , 0 , 0 ". list ify (), Ġcalculate Op codes ( input 1 )) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġ` Single ĠMultiply ing Ġopcode `() Ġ{ Ċĉ ĉ val Ġinput 0 Ġ= Ġ" 2 , 2 , 1 , 2 ". list ify () Ċĉ ĉ assertEquals (" 2 , 2 , 2 , 2 ". list ify (), Ġcalculate Op codes ( input 0 )) ĊĊĉ ĉ val Ġinput 1 Ġ= Ġ" 2 , 3 , 0 , 3 ". list ify () Ċĉ ĉ assertEquals (" 2 , 3 , 0 , 6 ". list ify (), Ġcalculate Op codes ( input 1 )) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġ` Input Ġof Ġtwo Ġop codes `() Ġ{ Ċĉ ĉ val Ġinput Ġ= Ġ" 1 , 4 , 1 , 3 , 2 , 3 , 1 , 0 ". list ify () Ċĉ ĉ assertEquals (" 2 4 , 4 , 1 , 6 , 2 , 3 , 1 , 0 ". list ify (), Ġcalculate Op codes ( input )) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġ` Can Ġhandle ĠExit Ġopcode `() Ġ{ Ċĉ ĉ val Ġinput Ġ= Ġ" 1 , 4 , 1 , 3 , 2 , 3 , 1 , 0 , 9 9 ". list ify () Ċĉ ĉ assertEquals (" 2 4 , 4 , 1 , 6 , 2 , 3 , 1 , 0 , 9 9 ". list ify (), Ġcalculate Op codes ( input )) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġ` Can Ġhandle Ġadditional Ġdata Ġafter ĠExit Ġopcode `() Ġ{ Ċĉ ĉ val Ġinput Ġ= Ġ" 1 , 4 , 1 , 3 , 2 , 3 , 1 , 0 , 9 9 , 3 0 , 4 0 , 5 0 ". list ify () Ċĉ ĉ assertEquals (" 2 4 , 4 , 1 , 6 , 2 , 3 , 1 , 0 , 9 9 , 3 0 , 4 0 , 5 0 ". list ify (), Ġcalculate Op codes ( input )) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġ` Throws Ġexception Ġon Ġunexpected Ġdata `() Ġ{ Ċĉ ĉ assert Fails With ( IllegalArgumentException :: class ) Ġ{ Ċĉĉ ĉ calculate Op codes (" 1 , 4 , 1 , 3 , 7 1 ". list ify ()) Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġ` Example Ġinput `() Ġ{ Ċĉ ĉ val Ġinput 0 Ġ= Ġ" 2 , 4 , 4 , 5 , 9 9 , 0 ". list ify () Ċĉ ĉ assertEquals (" 2 , 4 , 4 , 5 , 9 9 , 9 8 0 1 ". list ify (), Ġcalculate Op codes ( input 0 )) ĊĊĉ ĉ val Ġinput 1 Ġ= Ġ" 1 , 1 , 1 , 4 , 9 9 , 5 , 6 , 0 , 9 9 ". list ify () Ċĉ ĉ assertEquals (" 3 0 , 1 , 1 , 4 , 2 , 5 , 6 , 0 , 9 9 ". list ify (), Ġcalculate Op codes ( input 1 )) ĊĊĉ ĉ val Ġinput 2 Ġ= Ġ" 1 , 9 , 1 0 , 3 , 2 , 3 , 1 1 , 0 , 9 9 , 3 0 , 4 0 , 5 0 ". list ify () Ċĉ ĉ assertEquals (" 3 5 0 0 , 9 , 1 0 , 7 0 , 2 , 3 , 1 1 , 0 , 9 9 , 3 0 , 4 0 , 5 0 ". list ify (), Ġcalculate Op codes ( input 2 )) Ċ ĉ } ĊĊĊ ĉ @ Test Ċ ĉ fun Ġ` Calculate Ġprogram Ġoutput `() Ġ{ Ċĉ ĉ val Ġinput Ġ= Ġ" 1 , 9 , 1 0 , 3 , 2 , 3 , 1 1 , 0 , 9 9 , 3 0 , 4 0 , 5 0 ". list ify () Ċĉ ĉ assertEquals ( 3 5 0 0 , Ġcalculate Program Output ( input )) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġ` Can Ġcalculate Ġno un Ġand Ġverb `() Ġ{ Ċĉ ĉ assertEquals ( 1 2 0 2 , Ġno un And Verb Calculation ( 1 2 , Ġ 2 )) Ċ ĉ } ĊĊĊ ĉ @ Test Ċ ĉ fun Ġ` Finding Ġno Ġverb Ġand Ġno un Ġwill Ġthrow ĠException `() Ġ{ Ċĉ ĉ assert Fails With ( RuntimeException :: class ) Ġ{ Ċĉĉ ĉ val Ġinput Ġ= Ġ" 1 , 9 , 1 0 , 3 , 2 , 3 , 1 1 , 0 , 9 9 , 3 0 , 4 0 , 5 0 ". list ify () Ċĉĉ ĉ find Input Pair ( input , Ġ 1 5 1 , Ġ 1 0 ) Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġ` Find Ġinput Ġpair `() Ġ{ Ċĉ ĉ val Ġinput Ġ= Ġ" 1 , 9 , 1 0 , 3 , 2 , 3 , 1 1 , 0 , 9 9 , 3 0 , 4 0 , 5 0 ". list ify () ĊĊĉ ĉ val Ġ( no un , Ġverb ) Ġ= Ġfind Input Pair ( input , Ġ 2 5 0 , Ġ 1 0 ) ĊĊĉ ĉ assertEquals ( 3 , Ġno un ) Ċĉ ĉ assertEquals ( 2 , Ġverb ) Ċ ĉ } ĊĊĊ ĉ private Ġfun ĠString . list ify () Ġ= Ġthis . toInt List (). to Mutable List () Ċ } Ċ