/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġandroidx . compose . runtime . snapshots Ċ Ċ import Ġandroidx . compose . runtime . Experimental Compose Api Ċ import Ġandroidx . compose . runtime . mutable State ListOf Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertFalse Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠSnapshot State List Tests Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcan Create A State List () Ġ{ ĊĠĠĠĠĠĠĠ Ġmutable State ListOf < Any >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcan Create A State ListOf Ints () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġlist . forEach Indexed Ġ{ Ġindex , Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( index , Ġitem ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate Size () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġlist . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate Contains () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġ( 0 .. 4 ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( list . contains ( it )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertFalse ( list . contains ( 5 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate Contains All () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( list . contains All ( listOf ( 1 , Ġ 2 , Ġ 3 ))) ĊĠĠĠĠĠĠĠ ĠassertFalse ( list . contains All ( listOf ( 0 , Ġ 2 , Ġ 3 , Ġ 5 ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate Get () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġ( 0 .. 3 ). forEach Ġ{ ĠassertEquals ( it , Ġlist [ it ]) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠIndex OutOfBoundsException :: class ) ĊĠĠĠ Ġfun Ġvalidate Get _ Index OutOf Bound () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġlist [ 4 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate IsEmpty () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( list . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġval Ġempty List Ġ= Ġmutable State ListOf < Any >() ĊĠĠĠĠĠĠĠ ĠassertTrue ( emptyList . isEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate Iterator () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġvar Ġexpected Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġlist ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected ++, Ġitem ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 5 , Ġexpected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠIllegalStateException :: class ) ĊĠĠĠ Ġfun Ġvalidate Iterator _ remove () Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate ( mutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 )) Ġ{ Ġnormal List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġnormal List . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . remove () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . remove () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . remove () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate Last IndexOf () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġ( 0 .. 4 ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it Ġ+ Ġ 5 , Ġlist . lastIndexOf ( it )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate List Iterator () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġlist . list Iterator () ĊĠĠĠĠĠĠĠ Ġrepeat ( list . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it , Ġlist [ iterator . next Index ()]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it , Ġiterator . next ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertFalse ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠ Ġrepeat ( list . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( iterator . has Previous ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( list . size Ġ- Ġit Ġ- Ġ 1 , Ġlist [ iterator . previous Index ()]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( list . size Ġ- Ġit Ġ- Ġ 1 , Ġiterator . previous ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertFalse ( iterator . has Previous ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate List Iterator _ add () Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate ( mutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 )) Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġlist . list Iterator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . add ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . add ( 1 0 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . add ( 1 0 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . previous () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . previous () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . add ( 1 0 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate List Iterator _ mutation Error _ set () Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate ( mutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 )) Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġlist . list Iterator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . set ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġiterator . set ( 1 0 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate List Iterator _ index () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġlist . list Iterator ( 3 ) ĊĠĠĠĠĠĠĠ Ġrepeat ( 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it Ġ+ Ġ 3 , Ġiterator . next ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertFalse ( iterator . hasNext ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ sub List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal List Ġ= ĠlistOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal Sub List Ġ= Ġnormal List . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġexpected ( normal Sub List , Ġsub List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ sub List _ size () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 0 , Ġlist . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( list . size , Ġsub List . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ sub List _ contains () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( sub List . contains ( 0 )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( sub List . contains ( 1 )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( sub List . contains ( 2 )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( sub List . contains ( 3 )) ĊĠĠĠĠĠĠĠ ĠassertTrue ( sub List . contains ( 4 )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( sub List . contains ( 5 )) ĊĠĠĠĠĠĠĠ ĠassertFalse ( sub List . contains ( 6 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ sub List _ contains All () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( sub List . contains All ( listOf ( 2 , Ġ 3 , Ġ 4 ))) ĊĠĠĠĠĠĠĠ ĠassertFalse ( sub List . contains All ( listOf ( 2 , Ġ 3 , Ġ 4 , Ġ 5 ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ sub List _ get () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġrepeat ( 3 ) Ġ{ ĠassertEquals ( it Ġ+ Ġ 2 , Ġsub List [ it ]) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( java . lang . Index OutOfBoundsException :: class ) ĊĠĠĠ Ġfun Ġvalidate _ sub List _ get _ out Of Range () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġsub List [ 3 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ sub List _ indexOf () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġrepeat ( sub List . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it , Ġsub List . indexOf ( it Ġ+ Ġ 2 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġsub List . indexOf ( 0 )) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġsub List . indexOf ( 5 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ sub List _ add () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal List Ġ= Ġmutable ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġsub List . add ( 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal Sub List Ġ= Ġnormal List . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġnormal Sub List . add ( 1 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġexpected ( normal Sub List , Ġsub List ) ĊĠĠĠĠĠĠĠ Ġexpected ( normal List , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ sub List _ add _ index () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal List Ġ= Ġmutable ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġsub List . add ( 1 , Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal Sub List Ġ= Ġnormal List . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġnormal Sub List . add ( 1 , Ġ 1 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġexpected ( normal Sub List , Ġsub List ) ĊĠĠĠĠĠĠĠ Ġexpected ( normal List , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ sub List _ addAll () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal List Ġ= Ġmutable ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġsub List . addAll ( listOf ( 1 0 0 , Ġ 1 0 1 , Ġ 1 0 2 )) ĊĠĠĠĠĠĠĠ Ġval Ġnormal Sub List Ġ= Ġnormal List . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġnormal Sub List . addAll ( listOf ( 1 0 0 , Ġ 1 0 1 , Ġ 1 0 2 )) ĊĊĠĠĠĠĠĠĠ Ġexpected ( normal Sub List , Ġsub List ) ĊĠĠĠĠĠĠĠ Ġexpected ( normal List , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ sub List _ addAll _ index () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal List Ġ= Ġmutable ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġsub List . addAll ( 1 , ĠlistOf ( 1 0 0 , Ġ 1 0 1 , Ġ 1 0 2 )) ĊĠĠĠĠĠĠĠ Ġval Ġnormal Sub List Ġ= Ġnormal List . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġnormal Sub List . addAll ( 1 , ĠlistOf ( 1 0 0 , Ġ 1 0 1 , Ġ 1 0 2 )) ĊĊĠĠĠĠĠĠĠ Ġexpected ( normal Sub List , Ġsub List ) ĊĠĠĠĠĠĠĠ Ġexpected ( normal List , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ sub List _ clear () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal List Ġ= Ġmutable ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġsub List . clear () ĊĠĠĠĠĠĠĠ Ġval Ġnormal Sub List Ġ= Ġnormal List . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġnormal Sub List . clear () ĊĊĠĠĠĠĠĠĠ Ġexpected ( normal Sub List , Ġsub List ) ĊĠĠĠĠĠĠĠ Ġexpected ( normal List , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ sub List _ list Iterator () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 1 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġsub List . list Iterator () ĊĠĠĠĠĠĠĠ Ġrepeat ( sub List . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it Ġ+ Ġ 1 , Ġsub List [ iterator . next Index ()]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it Ġ+ Ġ 1 , Ġiterator . next ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertFalse ( iterator . hasNext ()) ĊĠĠĠĠĠĠĠ Ġrepeat ( sub List . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( iterator . has Previous ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Index Ġ= Ġsub List . size Ġ- Ġit Ġ- Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected Index Ġ+ Ġ 1 , Ġsub List [ iterator . previous Index ()]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected Index Ġ+ Ġ 1 , Ġiterator . previous ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertFalse ( iterator . has Previous ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠIllegalStateException :: class ) ĊĠĠĠ Ġfun Ġvalidate _ sub List _ list Iterator _ add () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 1 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġsub List . list Iterator () ĊĠĠĠĠĠĠĠ Ġiterator . next () ĊĠĠĠĠĠĠĠ Ġiterator . add ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠIllegalStateException :: class ) ĊĠĠĠ Ġfun Ġvalidate _ sub List _ list Iterator _ remove () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 1 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġsub List . list Iterator () ĊĠĠĠĠĠĠĠ Ġiterator . next () ĊĠĠĠĠĠĠĠ Ġiterator . remove () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠIllegalStateException :: class ) ĊĠĠĠ Ġfun Ġvalidate _ sub List _ list Iterator _ set () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 1 , Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġiterator Ġ= Ġsub List . list Iterator () ĊĠĠĠĠĠĠĠ Ġiterator . next () ĊĠĠĠĠĠĠĠ Ġiterator . set ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ sub List _ remove () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal List Ġ= Ġmutable ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġsub List . remove ( 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal Sub List Ġ= Ġnormal List . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġnormal Sub List . remove ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġexpected ( normal Sub List , Ġsub List ) ĊĠĠĠĠĠĠĠ Ġexpected ( normal List , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ sub List _ removeAll () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal List Ġ= Ġmutable ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġsub List . removeAll ( listOf ( 2 , Ġ 3 )) ĊĠĠĠĠĠĠĠ Ġval Ġnormal Sub List Ġ= Ġnormal List . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġnormal Sub List . removeAll ( listOf ( 2 , Ġ 3 )) ĊĊĠĠĠĠĠĠĠ Ġexpected ( normal Sub List , Ġsub List ) ĊĠĠĠĠĠĠĠ Ġexpected ( normal List , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ sub List _ remove At () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal List Ġ= Ġmutable ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġsub List . remove At ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal Sub List Ġ= Ġnormal List . sub List ( 2 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġnormal Sub List . remove At ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġexpected ( normal Sub List , Ġsub List ) ĊĠĠĠĠĠĠĠ Ġexpected ( normal List , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ sub List _ retain All () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal List Ġ= Ġmutable ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 1 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġsub List . retain All ( listOf ( 2 , Ġ 4 , Ġ 6 , Ġ 8 )) ĊĠĠĠĠĠĠĠ Ġval Ġnormal Sub List Ġ= Ġnormal List . sub List ( 1 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġnormal Sub List . retain All ( listOf ( 2 , Ġ 4 , Ġ 6 , Ġ 8 )) ĊĊĠĠĠĠĠĠĠ Ġexpected ( normal Sub List , Ġsub List ) ĊĠĠĠĠĠĠĠ Ġexpected ( normal List , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ sub List _ set () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal List Ġ= Ġmutable ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 1 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġsub List [ 1 ] Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġnormal Sub List Ġ= Ġnormal List . sub List ( 1 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġnormal Sub List [ 1 ] Ġ= Ġ 1 0 0 ĊĊĠĠĠĠĠĠĠ Ġexpected ( normal Sub List , Ġsub List ) ĊĠĠĠĠĠĠĠ Ġexpected ( normal List , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ sub List _ sub List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal List Ġ= Ġmutable ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsub List Ġ= Ġlist . sub List ( 1 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġsub List Sub List Ġ= Ġsub List . sub List ( 1 , Ġ 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal Sub List Ġ= Ġnormal List . sub List ( 1 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal Sub List Sub List Ġ= Ġnormal Sub List . sub List ( 1 , Ġ 3 ) ĊĊĠĠĠĠĠĠĠ Ġexpected ( normal Sub List Sub List , Ġsub List Sub List ) ĊĠĠĠĠĠĠĠ Ġexpected ( normal Sub List , Ġsub List ) ĊĠĠĠĠĠĠĠ Ġexpected ( normal List , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠConcurrent Modification Exception :: class ) ĊĠĠĠ Ġfun Ġvalidate _ sub List _ concurrent Changes () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġsub List 1 Ġ= Ġlist . sub List ( 1 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġsub List 2 Ġ= Ġlist . sub List ( 1 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġsub List 1 . remove ( 3 ) ĊĠĠĠĠĠĠĠ Ġsub List 2 . remove ( 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġvalidate _ indexOf () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 ) ĊĠĠĠĠĠĠĠ Ġ( 0 .. 7 ). forEach Ġ{ ĠassertEquals ( it , Ġlist . indexOf ( it )) Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġlist . indexOf ( 1 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcan Modify A State List _ add () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġlist . add ( 3 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġlist . size ) ĊĠĠĠĠĠĠĠ Ġlist . forEach Indexed Ġ{ Ġindex , Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( index , Ġitem ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcan Modify A State List _ addIndex () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġlist . add ( 0 , Ġ 3 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġlist . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġlist [ 0 ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcan Remove From A State List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġlist . remove ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġlist . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġlist [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġlist [ 1 ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcan RemoveAll From A State List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal List Ġ= Ġmutable ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġlist . removeAll ( listOf ( 2 , Ġ 4 )) ĊĠĠĠĠĠĠĠ Ġnormal List . removeAll ( listOf ( 2 , Ġ 4 )) ĊĠĠĠĠĠĠĠ Ġexpected ( normal List , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcan RemoveAt From A State List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal List Ġ= Ġmutable ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġlist . remove At ( 2 ) ĊĠĠĠĠĠĠĠ Ġnormal List . remove At ( 2 ) ĊĠĠĠĠĠĠĠ Ġexpected ( normal List , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcan Ret ain All Of A State List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal List Ġ= Ġmutable ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġlist . retain All ( listOf ( 2 , Ġ 4 , Ġ 6 , Ġ 8 )) ĊĠĠĠĠĠĠĠ Ġnormal List . retain All ( listOf ( 2 , Ġ 4 , Ġ 6 , Ġ 8 )) ĊĠĠĠĠĠĠĠ Ġexpected ( normal List , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcan Set An Element Of A State List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġnormal List Ġ= Ġmutable ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġlist [ 2 ] Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġnormal List [ 2 ] Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġexpected ( normal List , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Opt In ( Experimental Compose Api :: class ) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġstate Lists Can Be Snapshot () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoriginal Ġ= ĠlistOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġmutable List Ġ= Ġoriginal . to Mutable List () ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable State ListOf ( 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġsnapshot Ġ= ĠSnapshot . take Snapshot () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist [ 1 ] Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmutable List [ 1 ] Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ( mutable List , Ġlist ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsnapshot . enter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpected ( original , Ġlist ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsnapshot . dispose () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġexpected ( mutable List , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġvalidate ( list : ĠMutable List < T >, Ġblock : Ġ( list : ĠMutable List < T >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnormal List Ġ= Ġlist . to Mutable List () ĊĠĠĠĠĠĠĠ Ġblock ( normal List ) ĊĠĠĠĠĠĠĠ Ġblock ( list ) ĊĠĠĠĠĠĠĠ Ġexpected ( normal List , Ġlist ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġexpected ( expected : ĠList < T >, Ġactual : ĠList < T >) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected . size , Ġactual . size ) ĊĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġexpected . size ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected [ it ], Ġactual [ it ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }