/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 2 ĠMat th ias ĠGe is ler Ġ( bit P ogo ) Ġ/ ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby ĠApache Ġv 2 . 0 Ċ Ġ*/ Ċ Ċ package Ġtech . ant ib y tes . k mock . proxy Ċ Ċ import Ġco . touch lab . state ly . concurrency . Atomic Reference Ċ import Ġkotlinx . atomic fu . Atomic Ref Ċ import Ġkotlinx . atomic fu . atomic Ċ import Ġtech . ant ib y tes . util . test . coroutine . clear Blocking Test Ċ import Ġtech . ant ib y tes . util . test . fixture . fixture Ċ import Ġtech . ant ib y tes . util . test . fixture . kotlin Fixture Ċ import Ġtech . ant ib y tes . util . test . must Be Ċ import Ġkotlin . js . Js Name Ċ import Ġkotlin . test . Before Test Ċ import Ġkotlin . test . Test Ċ Ċ class ĠSync Fun Proxy Un frozen Inv ocations Spec Ġ{ ĊĠĠĠ Ġprivate Ġval Ġfixture Ġ= Ġkotlin Fixture () ĊĊĠĠĠ Ġ@ Before Test ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġclear Blocking Test () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 1 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Ġwith Ġ 0 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ() Ġ-> ĠAny >( fixture . fixture (), Ġfreeze Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effect Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke () ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġproxy . get Arguments For Call ( 0 ). toList () Ġmust Be ĠarrayOf < Any >(). toList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 2 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Chain Ġwith Ġ 0 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ() Ġ-> ĠAny >( fixture . fixture (), Ġfreeze Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effects . add Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke () ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġproxy . get Arguments For Call ( 0 ). toList () Ġmust Be ĠarrayOf < Any >(). toList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 3 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠS py Ġwith Ġ 0 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġimplementation Ġ= ĠImplementation < Any >() ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ() Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġimplementation . fun 0 Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Spy If ( implementation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation . fun 0 () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġproxy . get Arguments For Call ( 0 ). toList () Ġmust Be ĠarrayOf < Any >(). toList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 4 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Ġwith Ġ 1 ĠArgument Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effect Ġ= Ġ{ Ġgiven Arg 0 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( argument 0 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 5 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Chain Ġwith Ġ 1 ĠArgument Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effects . add Ġ{ Ġgiven Arg 0 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( argument 0 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 6 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠS py Ġwith Ġ 1 ĠArgument Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġimplementation Ġ= ĠImplementation < Any >() ĊĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġimplementation . fun 1 Ġ= Ġ{ Ġgiven Arg 0 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 Ġas ĠString ?) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Spy If ( implementation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation . fun 1 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 7 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Ġwith Ġ 2 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effect Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( argument 0 , Ġargument 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 8 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Chain Ġwith Ġ 2 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effects . add Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( argument 0 , Ġargument 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 9 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠS py Ġwith Ġ 2 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġimplementation Ġ= ĠImplementation < Any >() ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġimplementation . fun 2 Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 Ġas ĠInt ?) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Spy If ( implementation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation . fun 2 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 1 0 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Ġwith Ġ 3 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĊĠĠĠĠĠĠĠ Ġproxy . side Effect Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( argument 0 , Ġargument 1 , Ġargument 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 1 1 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Chain Ġwith Ġ 3 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĊĠĠĠĠĠĠĠ Ġproxy . side Effects . add Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( argument 0 , Ġargument 1 , Ġargument 2 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 1 2 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠS py Ġwith Ġ 3 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġimplementation Ġ= ĠImplementation < Any >() ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġimplementation . fun 3 Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 Ġas ĠString ?) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Spy If ( implementation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation . fun 3 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 1 3 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Ġwith Ġ 4 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effect Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( argument 0 , Ġargument 1 , Ġargument 2 , Ġargument 3 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 1 4 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Chain Ġwith Ġ 4 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effects . add Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( argument 0 , Ġargument 1 , Ġargument 2 , Ġargument 3 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 1 5 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠS py Ġwith Ġ 4 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġimplementation Ġ= ĠImplementation < Any >() ĊĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġimplementation . fun 4 Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 Ġas ĠInt ?) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Spy If ( implementation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation . fun 4 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 1 6 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Ġwith Ġ 5 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġproxy . side Effect Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( argument 0 , Ġargument 1 , Ġargument 2 , Ġargument 3 , Ġargument 4 ) ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 1 7 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Chain Ġwith Ġ 5 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġproxy . side Effects . add Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( argument 0 , Ġargument 1 , Ġargument 2 , Ġargument 3 , Ġargument 4 ) ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 1 8 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠS py Ġwith Ġ 5 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġimplementation Ġ= ĠImplementation < Any >() ĊĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġimplementation . fun 5 Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 Ġas ĠString ?) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Spy If ( implementation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation . fun 5 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 1 9 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Ġwith Ġ 6 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effect Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( argument 0 , Ġargument 1 , Ġargument 2 , Ġargument 3 , Ġargument 4 , Ġargument 5 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 2 0 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Chain Ġwith Ġ 6 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effects . add Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( argument 0 , Ġargument 1 , Ġargument 2 , Ġargument 3 , Ġargument 4 , Ġargument 5 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 2 1 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠS py Ġwith Ġ 6 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġimplementation Ġ= ĠImplementation < Any >() ĊĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġimplementation . fun 6 Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 Ġas ĠInt ?) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Spy If ( implementation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation . fun 6 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 2 2 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Ġwith Ġ 7 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effect Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( argument 0 , Ġargument 1 , Ġargument 2 , Ġargument 3 , Ġargument 4 , Ġargument 5 , Ġargument 6 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 7 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 2 3 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Chain Ġwith Ġ 7 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effects . add Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( argument 0 , Ġargument 1 , Ġargument 2 , Ġargument 3 , Ġargument 4 , Ġargument 5 , Ġargument 6 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 7 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 2 4 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠS py Ġwith Ġ 7 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġimplementation Ġ= ĠImplementation < Any >() ĊĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġimplementation . fun 7 Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 Ġas ĠString ?) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Spy If ( implementation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation . fun 7 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 7 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 2 5 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Ġwith Ġ 8 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 7 : ĠInt Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 7 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effect Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 , Ġgiven Arg 7 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 7 . set ( given Arg 7 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġactual Argument 7 . get () Ġmust Be Ġargument 7 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 8 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 7 ] Ġmust Be Ġargument 7 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 2 6 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Chain Ġwith Ġ 8 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 7 : ĠInt Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 7 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effects . add Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 , Ġgiven Arg 7 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 7 . set ( given Arg 7 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġactual Argument 7 . get () Ġmust Be Ġargument 7 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 8 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 7 ] Ġmust Be Ġargument 7 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 2 7 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠS py Ġwith Ġ 8 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġimplementation Ġ= ĠImplementation < Any >() ĊĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 7 : ĠInt Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 7 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġimplementation . fun 8 Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 , Ġgiven Arg 7 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 7 . set ( given Arg 7 Ġas ĠInt ?) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Spy If ( implementation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation . fun 8 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġactual Argument 7 . get () Ġmust Be Ġargument 7 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 8 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 7 ] Ġmust Be Ġargument 7 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 2 8 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Ġwith Ġ 9 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 7 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 8 : ĠString Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 7 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 8 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effect Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 , Ġgiven Arg 7 , Ġgiven Arg 8 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 7 . set ( given Arg 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 8 . set ( given Arg 8 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġactual Argument 7 . get () Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġactual Argument 8 . get () Ġmust Be Ġargument 8 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 9 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 7 ] Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġarguments [ 8 ] Ġmust Be Ġargument 8 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 2 9 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Chain Ġwith Ġ 9 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 7 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 8 : ĠString Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 7 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 8 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effects . add Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 , Ġgiven Arg 7 , Ġgiven Arg 8 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 7 . set ( given Arg 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 8 . set ( given Arg 8 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġactual Argument 7 . get () Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġactual Argument 8 . get () Ġmust Be Ġargument 8 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 9 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 7 ] Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġarguments [ 8 ] Ġmust Be Ġargument 8 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 3 0 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠS py Ġwith Ġ 9 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġimplementation Ġ= ĠImplementation < Any >() ĊĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 7 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 8 : ĠString Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 7 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 8 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġimplementation . fun 9 Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 , Ġgiven Arg 7 , Ġgiven Arg 8 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 7 . set ( given Arg 7 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 8 . set ( given Arg 8 Ġas ĠString ?) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Spy If ( implementation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation . fun 9 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġactual Argument 7 . get () Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġactual Argument 8 . get () Ġmust Be Ġargument 8 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 9 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 7 ] Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġarguments [ 8 ] Ġmust Be Ġargument 8 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 3 1 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Ġwith Ġ 1 0 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 7 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 8 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 9 : ĠInt Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 7 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 8 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 9 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effect Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 , Ġgiven Arg 7 , Ġgiven Arg 8 , Ġgiven Arg 9 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 7 . set ( given Arg 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 8 . set ( given Arg 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 9 . set ( given Arg 9 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 9 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġactual Argument 7 . get () Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġactual Argument 8 . get () Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġactual Argument 9 . get () Ġmust Be Ġargument 9 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 7 ] Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġarguments [ 8 ] Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġarguments [ 9 ] Ġmust Be Ġargument 9 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 3 2 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Chain Ġwith Ġ 1 0 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 7 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 8 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 9 : ĠInt Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 7 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 8 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 9 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effects . add Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 , Ġgiven Arg 7 , Ġgiven Arg 8 , Ġgiven Arg 9 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 7 . set ( given Arg 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 8 . set ( given Arg 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 9 . set ( given Arg 9 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 9 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġactual Argument 7 . get () Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġactual Argument 8 . get () Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġactual Argument 9 . get () Ġmust Be Ġargument 9 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 7 ] Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġarguments [ 8 ] Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġarguments [ 9 ] Ġmust Be Ġargument 9 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 3 3 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠS py Ġwith Ġ 1 0 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġimplementation Ġ= ĠImplementation < Any >() ĊĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 7 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 8 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 9 : ĠInt Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 7 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 8 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 9 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġimplementation . fun 1 0 Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 , Ġgiven Arg 7 , Ġgiven Arg 8 , Ġgiven Arg 9 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 7 . set ( given Arg 7 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 8 . set ( given Arg 8 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 9 . set ( given Arg 9 Ġas ĠInt ?) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 9 , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Spy If ( implementation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation . fun 1 0 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġactual Argument 7 . get () Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġactual Argument 8 . get () Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġactual Argument 9 . get () Ġmust Be Ġargument 9 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 7 ] Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġarguments [ 8 ] Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġarguments [ 9 ] Ġmust Be Ġargument 9 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 3 4 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Ġwith Ġ 1 1 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 7 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 8 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 9 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 0 : ĠString Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 7 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 8 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 9 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effect Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 , Ġgiven Arg 7 , Ġgiven Arg 8 , Ġgiven Arg 9 , Ġgiven Arg 1 0 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 7 . set ( given Arg 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 8 . set ( given Arg 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 9 . set ( given Arg 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 0 . set ( given Arg 1 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġactual Argument 7 . get () Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġactual Argument 8 . get () Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġactual Argument 9 . get () Ġmust Be Ġargument 9 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 0 . get () Ġmust Be Ġargument 1 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 1 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 7 ] Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġarguments [ 8 ] Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġarguments [ 9 ] Ġmust Be Ġargument 9 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 0 ] Ġmust Be Ġargument 1 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 3 5 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Chain Ġwith Ġ 1 1 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 7 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 8 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 9 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 0 : ĠString Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 7 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 8 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 9 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effects . add Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 , Ġgiven Arg 7 , Ġgiven Arg 8 , Ġgiven Arg 9 , Ġgiven Arg 1 0 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 7 . set ( given Arg 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 8 . set ( given Arg 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 9 . set ( given Arg 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 0 . set ( given Arg 1 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġactual Argument 7 . get () Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġactual Argument 8 . get () Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġactual Argument 9 . get () Ġmust Be Ġargument 9 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 0 . get () Ġmust Be Ġargument 1 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 1 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 7 ] Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġarguments [ 8 ] Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġarguments [ 9 ] Ġmust Be Ġargument 9 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 0 ] Ġmust Be Ġargument 1 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 3 6 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠS py Ġwith Ġ 1 1 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġimplementation Ġ= ĠImplementation < Any >() ĊĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 7 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 8 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 9 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 0 : ĠString Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 7 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 8 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 9 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġimplementation . fun 1 1 Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 , Ġgiven Arg 7 , Ġgiven Arg 8 , Ġgiven Arg 9 , Ġgiven Arg 1 0 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 7 . set ( given Arg 7 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 8 . set ( given Arg 8 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 9 . set ( given Arg 9 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 0 . set ( given Arg 1 0 Ġas ĠString ?) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 0 , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Spy If ( implementation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation . fun 1 1 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġactual Argument 7 . get () Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġactual Argument 8 . get () Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġactual Argument 9 . get () Ġmust Be Ġargument 9 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 0 . get () Ġmust Be Ġargument 1 0 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 1 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 7 ] Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġarguments [ 8 ] Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġarguments [ 9 ] Ġmust Be Ġargument 9 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 0 ] Ġmust Be Ġargument 1 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 3 7 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Ġwith Ġ 1 2 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 7 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 8 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 9 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 1 : ĠInt Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 7 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 8 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 9 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effect Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 , Ġgiven Arg 7 , Ġgiven Arg 8 , Ġgiven Arg 9 , Ġgiven Arg 1 0 , Ġgiven Arg 1 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 7 . set ( given Arg 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 8 . set ( given Arg 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 9 . set ( given Arg 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 0 . set ( given Arg 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 1 . set ( given Arg 1 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġactual Argument 7 . get () Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġactual Argument 8 . get () Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġactual Argument 9 . get () Ġmust Be Ġargument 9 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 0 . get () Ġmust Be Ġargument 1 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 1 . get () Ġmust Be Ġargument 1 1 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 1 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 7 ] Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġarguments [ 8 ] Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġarguments [ 9 ] Ġmust Be Ġargument 9 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 0 ] Ġmust Be Ġargument 1 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 1 ] Ġmust Be Ġargument 1 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 3 8 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Chain Ġwith Ġ 1 2 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 7 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 8 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 9 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 1 : ĠInt Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 7 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 8 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 9 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effects . add Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 , Ġgiven Arg 7 , Ġgiven Arg 8 , Ġgiven Arg 9 , Ġgiven Arg 1 0 , Ġgiven Arg 1 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 7 . set ( given Arg 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 8 . set ( given Arg 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 9 . set ( given Arg 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 0 . set ( given Arg 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 1 . set ( given Arg 1 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġactual Argument 7 . get () Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġactual Argument 8 . get () Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġactual Argument 9 . get () Ġmust Be Ġargument 9 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 0 . get () Ġmust Be Ġargument 1 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 1 . get () Ġmust Be Ġargument 1 1 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 1 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 7 ] Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġarguments [ 8 ] Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġarguments [ 9 ] Ġmust Be Ġargument 9 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 0 ] Ġmust Be Ġargument 1 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 1 ] Ġmust Be Ġargument 1 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 3 9 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠS py Ġwith Ġ 1 2 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġimplementation Ġ= ĠImplementation < Any >() ĊĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 7 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 8 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 9 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 1 : ĠInt Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 7 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 8 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 9 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġimplementation . fun 1 2 Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 , Ġgiven Arg 7 , Ġgiven Arg 8 , Ġgiven Arg 9 , Ġgiven Arg 1 0 , Ġgiven Arg 1 1 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 7 . set ( given Arg 7 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 8 . set ( given Arg 8 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 9 . set ( given Arg 9 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 0 . set ( given Arg 1 0 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 1 . set ( given Arg 1 1 Ġas ĠInt ?) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 1 , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Spy If ( implementation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation . fun 1 2 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġactual Argument 7 . get () Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġactual Argument 8 . get () Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġactual Argument 9 . get () Ġmust Be Ġargument 9 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 0 . get () Ġmust Be Ġargument 1 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 1 . get () Ġmust Be Ġargument 1 1 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 1 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 7 ] Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġarguments [ 8 ] Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġarguments [ 9 ] Ġmust Be Ġargument 9 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 0 ] Ġmust Be Ġargument 1 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 1 ] Ġmust Be Ġargument 1 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 4 0 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Ġwith Ġ 1 3 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 7 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 8 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 9 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 2 : ĠString Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 7 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 8 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 9 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effect Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 , Ġgiven Arg 7 , Ġgiven Arg 8 , Ġgiven Arg 9 , Ġgiven Arg 1 0 , Ġgiven Arg 1 1 , Ġgiven Arg 1 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 7 . set ( given Arg 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 8 . set ( given Arg 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 9 . set ( given Arg 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 0 . set ( given Arg 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 1 . set ( given Arg 1 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 2 . set ( given Arg 1 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 2 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġactual Argument 7 . get () Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġactual Argument 8 . get () Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġactual Argument 9 . get () Ġmust Be Ġargument 9 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 0 . get () Ġmust Be Ġargument 1 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 1 . get () Ġmust Be Ġargument 1 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 2 . get () Ġmust Be Ġargument 1 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 1 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 7 ] Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġarguments [ 8 ] Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġarguments [ 9 ] Ġmust Be Ġargument 9 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 0 ] Ġmust Be Ġargument 1 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 1 ] Ġmust Be Ġargument 1 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 2 ] Ġmust Be Ġargument 1 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 4 1 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠSide Effect Chain Ġwith Ġ 1 3 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 7 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 8 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 9 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 2 : ĠString Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 7 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 8 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 9 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġproxy . side Effects . add Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 , Ġgiven Arg 7 , Ġgiven Arg 8 , Ġgiven Arg 9 , Ġgiven Arg 1 0 , Ġgiven Arg 1 1 , Ġgiven Arg 1 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 7 . set ( given Arg 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 8 . set ( given Arg 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 9 . set ( given Arg 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 0 . set ( given Arg 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 1 . set ( given Arg 1 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 2 . set ( given Arg 1 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 2 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġactual Argument 7 . get () Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġactual Argument 8 . get () Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġactual Argument 9 . get () Ġmust Be Ġargument 9 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 0 . get () Ġmust Be Ġargument 1 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 1 . get () Ġmust Be Ġargument 1 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 2 . get () Ġmust Be Ġargument 1 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 1 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 7 ] Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġarguments [ 8 ] Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġarguments [ 9 ] Ġmust Be Ġargument 9 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 0 ] Ġmust Be Ġargument 1 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 1 ] Ġmust Be Ġargument 1 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 2 ] Ġmust Be Ġargument 1 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ Js Name (" fn 4 2 ") ĊĠĠĠ Ġfun Ġ` Given Ġinvoke Ġis Ġcalled Ġit Ġcalls Ġthe Ġgiven ĠS py Ġwith Ġ 1 3 ĠArguments Ġand Ġdeleg ates Ġvalues `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġimplementation Ġ= ĠImplementation < Any >() ĊĊĠĠĠĠĠĠĠ Ġval Ġargument 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 2 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 3 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 4 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 5 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 6 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 7 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 8 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 9 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 0 : ĠString Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 1 : ĠInt Ġ= Ġfixture . fixture () ĊĠĠĠĠĠĠĠ Ġval Ġargument 1 2 : ĠString Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected : ĠAny Ġ= Ġfixture . fixture () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 3 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 4 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 5 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 6 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 7 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 8 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 9 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 0 Ġ= ĠAtomic Reference < String ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 1 Ġ= ĠAtomic Reference < Int ? >( null ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Argument 1 2 Ġ= ĠAtomic Reference < String ? >( null ) ĊĊĠĠĠĠĠĠĠ Ġval Ġproxy Ġ= ĠSync Fun Proxy < Any , Ġ( String , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString , ĠInt , ĠString ) Ġ-> ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfixture . fixture (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfreeze Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġimplementation . fun 1 3 Ġ= Ġ{ Ġgiven Arg 0 , Ġgiven Arg 1 , Ġgiven Arg 2 , Ġgiven Arg 3 , Ġgiven Arg 4 , Ġgiven Arg 5 , Ġgiven Arg 6 , Ġgiven Arg 7 , Ġgiven Arg 8 , Ġgiven Arg 9 , Ġgiven Arg 1 0 , Ġgiven Arg 1 1 , Ġgiven Arg 1 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 0 . set ( given Arg 0 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 . set ( given Arg 1 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 2 . set ( given Arg 2 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 3 . set ( given Arg 3 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 4 . set ( given Arg 4 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 5 . set ( given Arg 5 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 6 . set ( given Arg 6 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 7 . set ( given Arg 7 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 8 . set ( given Arg 8 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 9 . set ( given Arg 9 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 0 . set ( given Arg 1 0 Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 1 . set ( given Arg 1 1 Ġas ĠInt ?) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactual Argument 1 2 . set ( given Arg 1 2 Ġas ĠString ?) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġproxy . invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 2 ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse Spy If ( implementation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation . fun 1 3 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 6 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargument 1 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ Ġactual Ġmust Be Ġexpected ĊĠĠĠĠĠĠĠ Ġactual Argument 0 . get () Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 . get () Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 2 . get () Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġactual Argument 3 . get () Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġactual Argument 4 . get () Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġactual Argument 5 . get () Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġactual Argument 6 . get () Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġactual Argument 7 . get () Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġactual Argument 8 . get () Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġactual Argument 9 . get () Ġmust Be Ġargument 9 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 0 . get () Ġmust Be Ġargument 1 0 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 1 . get () Ġmust Be Ġargument 1 1 ĊĠĠĠĠĠĠĠ Ġactual Argument 1 2 . get () Ġmust Be Ġargument 1 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġproxy . get Arguments For Call ( 0 ) ĊĠĠĠĠĠĠĠ Ġarguments . size Ġmust Be Ġ 1 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 0 ] Ġmust Be Ġargument 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 ] Ġmust Be Ġargument 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 2 ] Ġmust Be Ġargument 2 ĊĠĠĠĠĠĠĠ Ġarguments [ 3 ] Ġmust Be Ġargument 3 ĊĠĠĠĠĠĠĠ Ġarguments [ 4 ] Ġmust Be Ġargument 4 ĊĠĠĠĠĠĠĠ Ġarguments [ 5 ] Ġmust Be Ġargument 5 ĊĠĠĠĠĠĠĠ Ġarguments [ 6 ] Ġmust Be Ġargument 6 ĊĠĠĠĠĠĠĠ Ġarguments [ 7 ] Ġmust Be Ġargument 7 ĊĠĠĠĠĠĠĠ Ġarguments [ 8 ] Ġmust Be Ġargument 8 ĊĠĠĠĠĠĠĠ Ġarguments [ 9 ] Ġmust Be Ġargument 9 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 0 ] Ġmust Be Ġargument 1 0 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 1 ] Ġmust Be Ġargument 1 1 ĊĠĠĠĠĠĠĠ Ġarguments [ 1 2 ] Ġmust Be Ġargument 1 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Js Name (" Implementation Fun Async ") ĊĠĠĠ Ġprivate Ġclass ĠImplementation < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġ_ fun 0 : ĠAtomic Ref < (() Ġ-> ĠT ) ?> Ġ= Ġatomic ( null ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġ_ fun 1 : ĠAtomic Ref < (( Any ?) Ġ-> ĠT ) ?> Ġ= Ġatomic ( null ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġ_ fun 2 : ĠAtomic Ref < (( Any ?, ĠAny ?) Ġ-> ĠT ) ?> Ġ= Ġatomic ( null ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġ_ fun 3 : ĠAtomic Ref < (( Any ?, ĠAny ?, ĠAny ?) Ġ-> ĠT ) ?> Ġ= Ġatomic ( null ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġ_ fun 4 : ĠAtomic Ref < (( Any ?, ĠAny ?, ĠAny ?, ĠAny ?) Ġ-> ĠT ) ?> Ġ= Ġatomic ( null ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġ_ fun 5 : ĠAtomic Ref < (( Any ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?) Ġ-> ĠT ) ?> Ġ= Ġatomic ( null ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġ_ fun 6 : ĠAtomic Ref < (( Any ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?) Ġ-> ĠT ) ?> Ġ= Ġatomic ( null ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġ_ fun 7 : ĠAtomic Ref < (( Any ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?) Ġ-> ĠT ) ?> Ġ= Ġatomic ( null ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġ_ fun 8 : ĠAtomic Ref < (( Any ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?) Ġ-> ĠT ) ?> Ġ= Ġatomic ( null ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġ_ fun 9 : ĠAtomic Ref < (( Any ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?) Ġ-> ĠT ) ?> Ġ= Ġatomic ( null ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġ_ fun 1 0 : ĠAtomic Ref < (( Any ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?) Ġ-> ĠT ) ?> Ġ= Ġatomic ( null ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġ_ fun 1 1 : ĠAtomic Ref < (( Any ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?) Ġ-> ĠT ) ?> Ġ= Ġatomic ( null ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġ_ fun 1 2 : ĠAtomic Ref < (( Any ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?) Ġ-> ĠT ) ?> Ġ= Ġatomic ( null ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġ_ fun 1 3 : ĠAtomic Ref < (( Any ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?, ĠAny ?) Ġ-> ĠT ) ?> Ġ= Ġatomic ( null ) ĊĊĠĠĠĠĠĠĠ Ġ@ Js Name (" fun 0 a ") ĊĠĠĠĠĠĠĠ Ġvar Ġfun 0 Ġby Ġ_ fun 0 ĊĠĠĠĠĠĠĠ Ġ@ Js Name (" fun 1 a ") ĊĠĠĠĠĠĠĠ Ġvar Ġfun 1 Ġby Ġ_ fun 1 ĊĠĠĠĠĠĠĠ Ġ@ Js Name (" fun 2 a ") ĊĠĠĠĠĠĠĠ Ġvar Ġfun 2 Ġby Ġ_ fun 2 ĊĠĠĠĠĠĠĠ Ġ@ Js Name (" fun 3 a ") ĊĠĠĠĠĠĠĠ Ġvar Ġfun 3 Ġby Ġ_ fun 3 ĊĠĠĠĠĠĠĠ Ġ@ Js Name (" fun 4 a ") ĊĠĠĠĠĠĠĠ Ġvar Ġfun 4 Ġby Ġ_ fun 4 ĊĠĠĠĠĠĠĠ Ġ@ Js Name (" fun 5 a ") ĊĠĠĠĠĠĠĠ Ġvar Ġfun 5 Ġby Ġ_ fun 5 ĊĠĠĠĠĠĠĠ Ġ@ Js Name (" fun 6 a ") ĊĠĠĠĠĠĠĠ Ġvar Ġfun 6 Ġby Ġ_ fun 6 ĊĠĠĠĠĠĠĠ Ġ@ Js Name (" fun 7 a ") ĊĠĠĠĠĠĠĠ Ġvar Ġfun 7 Ġby Ġ_ fun 7 ĊĠĠĠĠĠĠĠ Ġ@ Js Name (" fun 8 a ") ĊĠĠĠĠĠĠĠ Ġvar Ġfun 8 Ġby Ġ_ fun 8 ĊĠĠĠĠĠĠĠ Ġ@ Js Name (" fun 9 a ") ĊĠĠĠĠĠĠĠ Ġvar Ġfun 9 Ġby Ġ_ fun 9 ĊĠĠĠĠĠĠĠ Ġ@ Js Name (" fun 1 0 a ") ĊĠĠĠĠĠĠĠ Ġvar Ġfun 1 0 Ġby Ġ_ fun 1 0 ĊĠĠĠĠĠĠĠ Ġ@ Js Name (" fun 1 1 a ") ĊĠĠĠĠĠĠĠ Ġvar Ġfun 1 1 Ġby Ġ_ fun 1 1 ĊĠĠĠĠĠĠĠ Ġ@ Js Name (" fun 1 2 a ") ĊĠĠĠĠĠĠĠ Ġvar Ġfun 1 2 Ġby Ġ_ fun 1 2 ĊĠĠĠĠĠĠĠ Ġ@ Js Name (" fun 1 3 a ") ĊĠĠĠĠĠĠĠ Ġvar Ġfun 1 3 Ġby Ġ_ fun 1 3 ĊĊĠĠĠĠĠĠĠ Ġfun Ġfun 0 (): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ fun 0 . value ?. invoke () Ġ?: Ġthrow ĠRuntimeException (" Missing Ġside effect Ġfun 0 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfun 1 ( arg 0 : ĠAny ?): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ fun 1 . value ?. invoke ( arg 0 ) Ġ?: Ġthrow ĠRuntimeException (" Missing Ġside effect Ġfun 1 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfun 2 ( arg 0 : ĠAny ?, Ġarg 1 : ĠAny ?): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ fun 2 . value ?. invoke ( arg 0 , Ġarg 1 ) Ġ?: Ġthrow ĠRuntimeException (" Missing Ġside effect Ġfun 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfun 3 ( arg 0 : ĠAny ?, Ġarg 1 : ĠAny ?, Ġarg 2 : ĠAny ?): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ fun 3 . value ?. invoke ( arg 0 , Ġarg 1 , Ġarg 2 ) Ġ?: Ġthrow ĠRuntimeException (" Missing Ġside effect Ġfun 3 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfun 4 ( arg 0 : ĠAny ?, Ġarg 1 : ĠAny ?, Ġarg 2 : ĠAny ?, Ġarg 3 : ĠAny ?): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ fun 4 . value ?. invoke ( arg 0 , Ġarg 1 , Ġarg 2 , Ġarg 3 ) Ġ?: Ġthrow ĠRuntimeException (" Missing Ġside effect Ġfun 4 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfun 5 ( arg 0 : ĠAny ?, Ġarg 1 : ĠAny ?, Ġarg 2 : ĠAny ?, Ġarg 3 : ĠAny ?, Ġarg 4 : ĠAny ?): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ fun 5 . value ?. invoke ( arg 0 , Ġarg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 ) Ġ?: Ġthrow ĠRuntimeException (" Missing Ġside effect Ġfun 5 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfun 6 ( arg 0 : ĠAny ?, Ġarg 1 : ĠAny ?, Ġarg 2 : ĠAny ?, Ġarg 3 : ĠAny ?, Ġarg 4 : ĠAny ?, Ġarg 5 : ĠAny ?): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ fun 6 . value ?. invoke ( arg 0 , Ġarg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 ) Ġ?: Ġthrow ĠRuntimeException (" Missing Ġside effect Ġfun 6 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfun 7 ( arg 0 : ĠAny ?, Ġarg 1 : ĠAny ?, Ġarg 2 : ĠAny ?, Ġarg 3 : ĠAny ?, Ġarg 4 : ĠAny ?, Ġarg 5 : ĠAny ?, Ġarg 6 : ĠAny ?): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ fun 7 . value ?. invoke ( arg 0 , Ġarg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠRuntimeException (" Missing Ġside effect Ġfun 7 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfun 8 ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 0 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 : ĠAny ? ĊĠĠĠĠĠĠĠ Ġ): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ fun 8 . value ?. invoke ( arg 0 , Ġarg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠRuntimeException (" Missing Ġside effect Ġfun 8 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfun 9 ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 0 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 : ĠAny ?, ĊĠĠĠĠĠĠĠ Ġ): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ fun 9 . value ?. invoke ( arg 0 , Ġarg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠRuntimeException (" Missing Ġside effect Ġfun 9 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfun 1 0 ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 0 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 : ĠAny ?, ĊĠĠĠĠĠĠĠ Ġ): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ fun 1 0 . value ?. invoke ( arg 0 , Ġarg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 , Ġarg 9 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠRuntimeException (" Missing Ġside effect Ġfun 1 0 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfun 1 1 ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 0 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 : ĠAny ?, ĊĠĠĠĠĠĠĠ Ġ): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ fun 1 1 . value ?. invoke ( arg 0 , Ġarg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 , Ġarg 9 , Ġarg 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠRuntimeException (" Missing Ġside effect Ġfun 1 1 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfun 1 2 ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 0 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 : ĠAny ?, ĊĠĠĠĠĠĠĠ Ġ): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ fun 1 2 . value ?. invoke ( arg 0 , Ġarg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 , Ġarg 9 , Ġarg 1 0 , Ġarg 1 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠRuntimeException (" Missing Ġside effect Ġfun 1 2 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfun 1 3 ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 0 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 2 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 3 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 4 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 5 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 6 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 7 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 8 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 9 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 0 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 1 : ĠAny ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg 1 2 : ĠAny ?, ĊĠĠĠĠĠĠĠ Ġ): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ fun 1 3 . value ?. invoke ( arg 0 , Ġarg 1 , Ġarg 2 , Ġarg 3 , Ġarg 4 , Ġarg 5 , Ġarg 6 , Ġarg 7 , Ġarg 8 , Ġarg 9 , Ġarg 1 0 , Ġarg 1 1 , Ġarg 1 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠRuntimeException (" Missing Ġside effect Ġfun 1 3 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ