package Ġdev . par do . dice . app Ċ Ċ import Ġdev . par do . dice . app . Dice . Model Ċ import Ġdev . par do . dice . app . Dice . Msg Ċ import Ġdev . par do . dice . app . Dice . make Update Ċ import Ġdev . par do . dice . data . Get History Ċ import Ġdev . par do . dice . data . Put History Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠD ice Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġget History : ĠGet History Ġ= Ġ{ Ġstub Rol ls ( 3 ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġput History : ĠPut History Ġ= Ġ{ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Set Rol ls Ġupdates Ġroll Ġlist `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroll s Ġ= Ġstub Rol ls ( 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġupdate Ġ= Ġmake Update ( put History ) ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠModel ( emptyList (), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġnext Ġ= Ġupdate ( Msg . Set Rol ls ( roll s ), Ġmodel ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( next . first . roll s , Ġroll s ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Add Roll Ġapp ends Ġroll Ġto Ġroll Ġlist `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġupdate Ġ= Ġmake Update ( put History ) ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠModel ( emptyList (), Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġroll 1 Ġ= Ġstub Roll ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġnext 1 Ġ= Ġupdate ( Msg . Add Roll ( roll 1 ), Ġmodel ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( next 1 . first . roll s , ĠlistOf ( roll 1 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġroll 2 Ġ= Ġstub Roll ( 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġnext 2 Ġ= Ġupdate ( Msg . Add Roll ( roll 2 ), Ġmodel ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( next 2 . first . roll s , ĠlistOf ( roll 1 , Ġroll 2 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġroll 3 Ġ= Ġstub Roll ( 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġnext 3 Ġ= Ġupdate ( Msg . Add Roll ( roll 3 ), Ġmodel ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( next 3 . first . roll s , ĠlistOf ( roll 1 , Ġroll 2 , Ġroll 3 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstub Rol ls ( count : ĠInt ): ĠList < Roll > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( 1 .. count ). map (:: stub Roll ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstub Roll ( i : ĠInt ): ĠRoll Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRoll ( i , Ġi ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ