package Ġm ary k . datastore . test Ċ Ċ import Ġm ary k . core . properties . types . Key Ċ import Ġm ary k . core . query . changes . Change Ċ import Ġm ary k . core . query . changes . change Ċ import Ġm ary k . core . query . filters . Equals Ċ import Ġm ary k . core . query . filters . Not Ċ import Ġm ary k . core . query . pairs . with Ċ import Ġm ary k . core . query . requests . add Ċ import Ġm ary k . core . query . requests . change Ċ import Ġm ary k . core . query . requests . delete Ċ import Ġm ary k . core . query . requests . get Ċ import Ġm ary k . core . query . requests . get Changes Ċ import Ġm ary k . core . query . requests . get Updates Ċ import Ġm ary k . core . query . responses . statuses . Add Success Ċ import Ġm ary k . core . query . responses . updates . Addition Update Ċ import Ġm ary k . core . query . responses . updates . Change Update Ċ import Ġm ary k . core . query . responses . updates . Initial Changes Update Ċ import Ġm ary k . core . query . responses . updates . Initial Values Update Ċ import Ġm ary k . core . query . responses . updates . Ordered Keys Update Ċ import Ġm ary k . core . query . responses . updates . Removal Reason . NotIn Range Ċ import Ġm ary k . core . query . responses . updates . Removal Reason . Soft Delete Ċ import Ġm ary k . core . query . responses . updates . Removal Update Ċ import Ġm ary k . datastore . shared . Is DataStore Ċ import Ġm ary k . test . assert Type Ċ import Ġm ary k . test . models . Simple M ary k Model Ċ import Ġm ary k . test . models . Simple M ary k Model . Properties Ċ import Ġm ary k . test . run Sus pending Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNull Ċ import Ġkotlin . test . expect Ċ Ċ class ĠData Store Get Updates And Flow Test ( ĊĠĠĠ Ġval Ġdata Store : ĠIs DataStore Ċ ) Ġ: ĠIs DataStore Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtest Keys Ġ= Ġmutable ListOf < Key < Simple M ary k Model >>() ĊĠĠĠ Ġprivate Ġvar Ġlowest Version Ġ= ĠU Long . MAX _ VALUE ĊĠĠĠ Ġprivate Ġvar Ġhighest Init Version Ġ= ĠU Long . MIN _ VALUE ĊĊĠĠĠ Ġoverride Ġval Ġall Tests Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġ" execute Simple Get Updates Request " Ġto Ġ:: execute Simple Get Updates Request , ĊĠĠĠĠĠĠĠ Ġ" execute Get Values As Flow Request " Ġto Ġ:: execute Get Values As Flow Request , ĊĠĠĠĠĠĠĠ Ġ" execute Get Changes As Flow Request " Ġto Ġ:: execute Get Changes As Flow Request , ĊĠĠĠĠĠĠĠ Ġ" execute Get Updates As Flow Request " Ġto Ġ:: execute Get Updates As Flow Request , ĊĠĠĠĠĠĠĠ Ġ" execute Get Updates As Flow With Mutable Where Request " Ġto Ġ:: execute Get Updates As Flow With Mutable Where Request , ĊĠĠĠĠĠĠĠ Ġ" execute Get Updates With Init Changes As Flow Request " Ġto Ġ:: execute Get Updates With Init Changes As Flow Request ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Sus pending Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadd Response Ġ= Ġdata Store . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple M ary k Model . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple M ary k Model ( value Ġ= Ġ" h aha 1 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple M ary k Model ( value Ġ= Ġ" h aha 2 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple M ary k Model ( value Ġ= Ġ" h aha 3 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Response . statuses . forEach Ġ{ Ġstatus Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġassert Type < Add Success < Simple M ary k Model >>( status ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest Keys . add ( response . key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . version Ġ< Ġlowest Version ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd Ġlowest Ġversion Ġfor Ġscan Ġtest ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlowest Version Ġ= Ġresponse . version ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . version Ġ> Ġhighest Init Version ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhighest Init Version Ġ= Ġresponse . version ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreset Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Sus pending Test Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Store . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple M ary k Model . delete (* test Keys . to Typed Array (), Ġhard Delete Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtest Keys . clear () ĊĠĠĠĠĠĠĠ Ġlowest Version Ġ= ĠU Long . MAX _ VALUE ĊĠĠĠĠĠĠĠ Ġhighest Init Version Ġ= ĠU Long . MIN _ VALUE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexecute Simple Get Updates Request () Ġ= Ġrun Sus pending Test Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġget Response Ġ= Ġdata Store . execute ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSimple M ary k Model . get Updates ( test Keys [ 0 ], Ġtest Keys [ 1 ]) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġexpect ( 3 ) Ġ{ Ġget Response . updates . size Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Type < Ordered Keys Update < *, Ġ* >>( getResponse . updates [ 0 ]). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( test Keys [ 0 ], Ġtest Keys [ 1 ]), Ġkeys ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( sorting Keys ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( highest Init Version , Ġversion ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Type < Addition Update < Simple M ary k Model , ĠProperties >>( getResponse . updates [ 1 ]). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( test Keys [ 0 ], Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Simple M ary k Model ( value Ġ= Ġ" h aha 1 "), Ġvalues ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Type < Addition Update < Simple M ary k Model , ĠProperties >>( getResponse . updates [ 2 ]). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( test Keys [ 1 ], Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Simple M ary k Model ( value Ġ= Ġ" h aha 2 "), Ġvalues ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexecute Get Values As Flow Request () Ġ= Ġupdate Listener Tester ( ĊĠĠĠĠĠĠĠ Ġdata Store , ĊĠĠĠĠĠĠĠ ĠSimple M ary k Model . get ( test Keys [ 0 ], Ġtest Keys [ 1 ]), ĊĠĠĠĠĠĠĠĠ 2 ĊĠĠĠ Ġ) Ġ{ Ġresponses Ġ-> ĊĠĠĠĠĠĠĠ Ġassert Type < Initial Values Update < *, Ġ* >>( responses [ 0 ]. await ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( test Keys [ 0 ], Ġtest Keys [ 1 ]), Ġvalues . map Ġ{ Ġit . key Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( highest Init Version , Ġversion ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġchange 1 Ġ= ĠChange ( Simple M ary k Model Ġ{ Ġvalue :: ref Ġ} Ġwith Ġ" h aha Ġ 5 5 ") ĊĠĠĠĠĠĠĠ Ġdata Store . execute ( Simple M ary k Model . change ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Keys [ 0 ]. change ( change 1 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĊĠĠĠĠĠĠĠ Ġval Ġchange Update 1 Ġ= Ġresponses [ 1 ]. await () ĊĠĠĠĠĠĠĠ Ġassert Type < Change Update < *, Ġ* >>( change Update 1 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( test Keys [ 0 ], Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( change 1 ), Ġchanges ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexecute Get Changes As Flow Request () Ġ= Ġupdate Listener Tester ( ĊĠĠĠĠĠĠĠ Ġdata Store , ĊĠĠĠĠĠĠĠ ĠSimple M ary k Model . get Changes ( test Keys [ 0 ], Ġtest Keys [ 1 ]), ĊĠĠĠĠĠĠĠĠ 2 ĊĠĠĠ Ġ) Ġ{ Ġresponses Ġ-> ĊĠĠĠĠĠĠĠ Ġassert Type < Initial Changes Update < *, Ġ* >>( responses [ 0 ]. await ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( test Keys [ 0 ], Ġtest Keys [ 1 ]), Ġchanges . map Ġ{ Ġit . key Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( highest Init Version , Ġversion ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġchange 1 Ġ= ĠChange ( Simple M ary k Model Ġ{ Ġvalue :: ref Ġ} Ġwith Ġ" h aha Ġ 6 6 ") ĊĠĠĠĠĠĠĠ Ġdata Store . execute ( Simple M ary k Model . change ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Keys [ 0 ]. change ( change 1 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĊĠĠĠĠĠĠĠ Ġval Ġchange Update 1 Ġ= Ġresponses [ 1 ]. await () ĊĠĠĠĠĠĠĠ Ġassert Type < Change Update < *, Ġ* >>( change Update 1 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( test Keys [ 0 ], Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( change 1 ), Ġchanges ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexecute Get Updates As Flow Request () Ġ= Ġupdate Listener Tester ( ĊĠĠĠĠĠĠĠ Ġdata Store , ĊĠĠĠĠĠĠĠ ĠSimple M ary k Model . get Updates ( test Keys [ 0 ], Ġtest Keys [ 1 ], Ġfrom Version Ġ= Ġhighest Init Version Ġ+ Ġ 1 u L ), ĊĠĠĠĠĠĠĠĠ 4 ĊĠĠĠ Ġ) Ġ{ Ġresponses Ġ-> ĊĠĠĠĠĠĠĠ Ġassert Type < Ordered Keys Update < *, Ġ* >>( responses [ 0 ]. await ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( test Keys [ 0 ], Ġtest Keys [ 1 ]), Ġkeys ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( highest Init Version , Ġversion ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġchange 1 Ġ= ĠChange ( Simple M ary k Model Ġ{ Ġvalue :: ref Ġ} Ġwith Ġ" h aha 5 ") ĊĠĠĠĠĠĠĠ Ġdata Store . execute ( Simple M ary k Model . change ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Keys [ 0 ]. change ( change 1 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĊĠĠĠĠĠĠĠ Ġval Ġchange Update 1 Ġ= Ġresponses [ 1 ]. await () ĊĠĠĠĠĠĠĠ Ġassert Type < Change Update < *, Ġ* >>( change Update 1 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( test Keys [ 0 ], Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( change 1 ), Ġchanges ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġchange 2 Ġ= ĠChange ( Simple M ary k Model Ġ{ Ġvalue :: ref Ġ} Ġwith Ġ" h aha 6 ") ĊĠĠĠĠĠĠĠ Ġdata Store . execute ( Simple M ary k Model . change ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Keys [ 1 ]. change ( change 2 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġchange Ġshould Ġbe Ġignored , Ġotherwise Ġkey Ġis Ġwrong Ġafter Ġchange Update 2 Ġcheck ĊĠĠĠĠĠĠĠ Ġdata Store . execute ( Simple M ary k Model . change ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Keys [ 2 ]. change ( change 2 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĊĠĠĠĠĠĠĠ Ġval Ġchange Update 2 Ġ= Ġresponses [ 2 ]. await () ĊĠĠĠĠĠĠĠ Ġassert Type < Change Update < *, Ġ* >>( change Update 2 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( test Keys [ 1 ], Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( change 2 ), Ġchanges ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdata Store . execute ( Simple M ary k Model . delete ( test Keys [ 1 ])) ĊĊĠĠĠĠĠĠĠ Ġval Ġremoval Update 1 Ġ= Ġresponses [ 3 ]. await () ĊĠĠĠĠĠĠĠ Ġassert Type < Removal Update < *, Ġ* >>( remo val Update 1 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( test Keys [ 1 ], Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Soft Delete , Ġreason ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexecute Get Updates As Flow With Mutable Where Request () Ġ= Ġupdate Listener Tester ( ĊĠĠĠĠĠĠĠ Ġdata Store , ĊĠĠĠĠĠĠĠ ĠSimple M ary k Model . get Updates ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Keys [ 0 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Keys [ 1 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhere Ġ= ĠNot ( Equals ( Simple M ary k Model Ġ{ Ġvalue :: ref Ġ} Ġwith Ġ" h aha 0 ")), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Version Ġ= Ġhighest Init Version Ġ+ Ġ 1 u L ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠ 3 ĊĠĠĠ Ġ) Ġ{ Ġresponses Ġ-> ĊĠĠĠĠĠĠĠ Ġassert Type < Ordered Keys Update < *, Ġ* >>( responses [ 0 ]. await ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( test Keys [ 0 ], Ġtest Keys [ 1 ]), Ġkeys ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( highest Init Version , Ġversion ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġchange 1 Ġ= ĠChange ( Simple M ary k Model Ġ{ Ġvalue :: ref Ġ} Ġwith Ġ" h aha 5 ") ĊĠĠĠĠĠĠĠ Ġdata Store . execute ( Simple M ary k Model . change ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Keys [ 0 ]. change ( change 1 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĊĠĠĠĠĠĠĠ Ġval Ġchange Update 1 Ġ= Ġresponses [ 1 ]. await () ĊĠĠĠĠĠĠĠ Ġassert Type < Change Update < *, Ġ* >>( change Update 1 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( test Keys [ 0 ], Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( change 1 ), Ġchanges ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġchange 2 Ġ= ĠChange ( Simple M ary k Model Ġ{ Ġvalue :: ref Ġ} Ġwith Ġ" h aha 0 ") ĊĠĠĠĠĠĠĠ Ġdata Store . execute ( Simple M ary k Model . change ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Keys [ 1 ]. change ( change 2 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĊĠĠĠĠĠĠĠ Ġval Ġchange Update 2 Ġ= Ġresponses [ 2 ]. await () ĊĠĠĠĠĠĠĠ Ġassert Type < Removal Update < *, Ġ* >>( change Update 2 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( test Keys [ 1 ], Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( NotIn Range , Ġreason ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexecute Get Updates With Init Changes As Flow Request () Ġ= Ġupdate Listener Tester ( ĊĠĠĠĠĠĠĠ Ġdata Store , ĊĠĠĠĠĠĠĠ ĠSimple M ary k Model . get Updates ( test Keys [ 0 ], Ġtest Keys [ 2 ]), ĊĠĠĠĠĠĠĠĠ 4 ĊĠĠĠ Ġ) Ġ{ Ġresponses Ġ-> ĊĠĠĠĠĠĠĠ Ġassert Type < Ordered Keys Update < *, Ġ* >>( responses [ 0 ]. await ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( test Keys [ 0 ], Ġtest Keys [ 2 ]), Ġkeys ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( highest Init Version , Ġversion ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Type < Addition Update < Simple M ary k Model , ĠProperties >>( responses [ 1 ]. await ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( test Keys [ 0 ], Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( lowest Version , Ġversion ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple M ary k Model ( value Ġ= Ġ" h aha 1 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġassert Type < Addition Update < Simple M ary k Model , ĠProperties >>( responses [ 2 ]. await ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( test Keys [ 2 ], Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( highest Init Version , Ġversion ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple M ary k Model ( value Ġ= Ġ" h aha 3 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġchange 1 Ġ= ĠChange ( Simple M ary k Model Ġ{ Ġvalue :: ref Ġ} Ġwith Ġ" h aha 5 ") ĊĠĠĠĠĠĠĠ Ġdata Store . execute ( Simple M ary k Model . change ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Keys [ 0 ]. change ( change 1 ) ĊĠĠĠĠĠĠĠ Ġ)) ĊĊĠĠĠĠĠĠĠ Ġval Ġchange Update 1 Ġ= Ġresponses [ 3 ]. await () ĊĠĠĠĠĠĠĠ Ġassert Type < Change Update < *, Ġ* >>( change Update 1 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( test Keys [ 0 ], Ġkey ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( change 1 ), Ġchanges ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ