/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 - 2 0 1 9 ĠJetBrains Ġs . r . o . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 ĠLicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġtests . stress . list Ċ Ċ import Ġkotlinx . collections . immutable . Persistent List Ċ import Ġkotlinx . collections . immutable . persistent ListOf Ċ import Ġtests . N For Algorithm Complexity Ċ import Ġtests . distinct String Values Ċ import Ġtests . stress . Execution Time Meas uring Test Ċ import Ġkotlin . random . Random Ċ import Ġkotlin . test .* ĊĊ Ċ class ĠPersistent List Test Ġ: ĠExecution Time Meas uring Test () Ġ{ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠisEmpty Tests () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvector Ġ= Ġpersistent ListOf < String >() ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( vector . isEmpty ()) ĊĠĠĠĠĠĠĠ ĠassertFalse ( vector . add (" last "). isEmpty ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġelements ToAdd Ġ= ĠN For Algorithm Complexity . O _ N ĊĊĠĠĠĠĠĠĠ Ġval Ġelements Ġ= Ġdistinct String Values ( elements ToAdd ) ĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . add ( elements [ index ]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( vector . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . remove At ( vector . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( vector . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . remove At ( vector . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( vector . isEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsize Tests () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvector Ġ= Ġpersistent ListOf < Int >() ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( vector . size Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġvector . add ( 1 ). size ) ĊĊĠĠĠĠĠĠĠ Ġval Ġelements ToAdd Ġ= ĠN For Algorithm Complexity . O _ N ĊĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . add ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( index Ġ+ Ġ 1 , Ġvector . size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . remove At ( vector . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( elements ToAdd Ġ- Ġindex Ġ- Ġ 1 , Ġvector . size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġfirst Tests () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvector Ġ= Ġpersistent ListOf < Int >() ĊĊĠĠĠĠĠĠĠ ĠassertNull ( vector . first OrNull ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġvector . add ( 0 , Ġ 1 ). first ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġvector . add ( 1 ). first ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġelements ToAdd Ġ= ĠN For Algorithm Complexity . O _ NN ĊĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . add ( 0 , Ġindex ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( index , Ġvector . first ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( elements ToAdd Ġ- Ġindex Ġ- Ġ 1 , Ġvector . first ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . remove At ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertNull ( vector . first OrNull ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġlast Tests () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvector Ġ= Ġpersistent ListOf < Int >() ĊĊĠĠĠĠĠĠĠ ĠassertNull ( vector . last OrNull ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġvector . add ( 0 , Ġ 1 ). last ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġvector . add ( 1 ). last ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġelements ToAdd Ġ= ĠN For Algorithm Complexity . O _ N ĊĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . add ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( index , Ġvector . last ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( elements ToAdd Ġ- Ġindex Ġ- Ġ 1 , Ġvector . last ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . remove At ( vector . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertNull ( vector . last OrNull ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġto List Test () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvector Ġ= Ġpersistent ListOf < Int >() ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( emptyList < Int >(), Ġvector . toList ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( 1 ), Ġvector . add ( 1 ). toList ()) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvector ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( 1 ). add ( 2 ). add ( 3 ). add ( 4 ). add ( 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 , Ġ 1 0 , Ġ 1 1 , Ġ 1 2 , Ġ 1 3 , Ġ 1 4 , Ġ 1 5 , Ġ 1 6 , Ġ 1 7 , Ġ 1 8 , Ġ 1 9 , Ġ 2 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvector ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( 1 ). add ( 2 ). add ( 3 ). add ( 4 ). add ( 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( 6 ). add ( 7 ). add ( 8 ). add ( 9 ). add ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( 1 1 ). add ( 1 2 ). add ( 1 3 ). add ( 1 4 ). add ( 1 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( 1 6 ). add ( 1 7 ). add ( 1 8 ). add ( 1 9 ). add ( 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġelements ToAdd Ġ= ĠN For Algorithm Complexity . O _ NN ĊĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . add ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( list , Ġvector . toList ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd First Tests () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvector Ġ= Ġpersistent ListOf < Int >() ĊĊĠĠĠĠĠĠĠ ĠassertNull ( vector . first OrNull ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġvector . add ( 0 , Ġ 1 ). first ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġvector . add ( 0 , Ġ 1 ). last ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġelements ToAdd Ġ= ĠN For Algorithm Complexity . O _ NN ĊĊĠĠĠĠĠĠĠ Ġval Ġall Elements Ġ= ĠList ( elements ToAdd ) Ġ{ Ġelements ToAdd Ġ- Ġit Ġ- Ġ 1 Ġ} ĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . add ( 0 , Ġindex ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( index , Ġvector . first ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġvector . last ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( index Ġ+ Ġ 1 , Ġvector . size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Content Ġ= Ġall Elements . sub List ( elements ToAdd Ġ- Ġvector . size , Ġelements ToAdd ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected Content , Ġvector . toList ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd Last Tests () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvector Ġ= Ġpersistent ListOf < Int >() ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġvector . add ( 1 )[ 0 ]) ĊĊĠĠĠĠĠĠĠ Ġval Ġelements ToAdd Ġ= ĠN For Algorithm Complexity . O _ NN ĊĊĠĠĠĠĠĠĠ Ġval Ġall Elements Ġ= ĠList ( elements ToAdd ) Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . add ( index ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġvector [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( index , Ġvector [ index ]) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( index Ġ+ Ġ 1 , Ġvector . size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( all Elements . sub List ( 0 , Ġvector . size ), Ġvector ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġremove First Tests () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvector Ġ= Ġpersistent ListOf < Int >() ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < Index OutOfBoundsException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector . remove At ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( vector . add ( 1 ). remove At ( 0 ). isEmpty ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( vector . add ( 0 , Ġ 1 ). remove At ( 0 ). isEmpty ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġelements ToAdd Ġ= ĠN For Algorithm Complexity . O _ NN ĊĊĠĠĠĠĠĠĠ Ġval Ġall Elements Ġ= ĠList ( elements ToAdd ) Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . add ( index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( elements ToAdd Ġ- Ġ 1 , Ġvector . last ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( index , Ġvector . first ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( elements ToAdd Ġ- Ġindex , Ġvector . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( all Elements . sub List ( index , Ġelements ToAdd ), Ġvector ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . remove At ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġremove Last Tests () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvector Ġ= Ġpersistent ListOf < Int >() ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < Index OutOfBoundsException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector . remove At ( vector . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertTrue ( vector . add ( 1 ). remove At ( 0 ). isEmpty ()) ĊĠĠĠĠĠĠĠ ĠassertTrue ( vector . add ( 0 , Ġ 1 ). remove At ( 0 ). isEmpty ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġelements ToAdd Ġ= ĠN For Algorithm Complexity . O _ NN ĊĊĠĠĠĠĠĠĠ Ġval Ġall Elements Ġ= ĠList ( elements ToAdd ) Ġ{ Ġelements ToAdd Ġ- Ġit Ġ- Ġ 1 Ġ} ĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . add ( 0 , Ġindex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( index , Ġvector . last ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( elements ToAdd Ġ- Ġ 1 , Ġvector . first ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( elements ToAdd Ġ- Ġindex , Ġvector . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( all Elements . sub List ( 0 , Ġvector . size ), Ġvector ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . remove At ( vector . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlinear Ġ= ĠN For Algorithm Complexity . O _ N ĊĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġlinear ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . add ( index ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġlinear ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( linear Ġ- Ġ 1 Ġ- Ġindex , Ġvector . last ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġvector . first ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( linear Ġ- Ġindex , Ġvector . size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . remove At ( vector . size Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget Tests () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvector Ġ= Ġpersistent ListOf < Int >() ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < Index OutOfBoundsException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector [ 0 ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġvector . add ( 1 )[ 0 ]) ĊĊĠĠĠĠĠĠĠ Ġval Ġelements ToAdd Ġ= ĠN For Algorithm Complexity . O _ NN log N ĊĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . add ( index ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( i , Ġvector [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġindex Ġuntil Ġelements ToAdd ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( i , Ġvector [ i Ġ- Ġindex ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . remove At ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġset Tests () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġvector Ġ= Ġpersistent ListOf < Int >() ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < Index OutOfBoundsException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector . set ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġvector . add ( 1 ). set ( 0 , Ġ 2 )[ 0 ]) ĊĊĠĠĠĠĠĠĠ Ġval Ġelements ToAdd Ġ= ĠN For Algorithm Complexity . O _ NN log N ĊĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . add ( index Ġ* Ġ 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( i Ġ+ Ġindex , Ġvector [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . set ( i , Ġi Ġ+ Ġindex Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( i Ġ+ Ġindex Ġ+ Ġ 1 , Ġvector [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġelements ToAdd ) Ġ{ Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġelements ToAdd Ġ- Ġindex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġelements ToAdd Ġ+ Ġi ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected , Ġvector [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . set ( i , Ġexpected Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expected Ġ- Ġ 1 , Ġvector [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . remove At ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd All AtIndex Tests () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmax BufferSize Ġ= Ġ 3 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġlist Sizes Ġ= ĠlistOf ( 0 , Ġ 1 , Ġ 1 0 , Ġ 3 1 , Ġ 3 2 , Ġ 3 3 , Ġ 6 4 , Ġ 6 5 , Ġ 1 0 0 , Ġ 1 0 2 4 , Ġ 1 0 5 6 , Ġ 1 0 5 7 , Ġ 1 0 0 0 0 , Ġ 1 0 0 0 0 0 ). filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ<= ĠN For Algorithm Complexity . O _ NN ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( initial Size Ġin Ġlist Sizes ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinitial Elements Ġ= ĠList ( initial Size ) Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġinitial Elements . fold ( persistent ListOf < Int >()) Ġ{ Ġlist , Ġelement Ġ-> Ġlist . add ( element ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadd Index Ġ= Ġmutable ListOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Size Ġ// Ġappend ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( initial Size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Index . add ( 0 ) Ġ// Ġprepend ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Index . add ( Random . nextInt ( initial Size )) Ġ// Ġat Ġrandom Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( initial Size Ġ> Ġmax BufferSize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Size Ġ= Ġ( initial Size Ġ- Ġ 1 ) Ġand Ġ( max BufferSize Ġ- Ġ 1 ). inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtail Size Ġ= Ġinitial Size Ġ- Ġroot Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Index . add ( Random . nextInt ( max BufferSize )) Ġ// Ġfirst Ġleaf ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Index . add ( root Size Ġ+ ĠRandom . nextInt ( tail Size )) Ġ// Ġtail ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Index . add ( root Size Ġ- ĠRandom . nextInt ( max BufferSize )) Ġ// Ġlast Ġleaf ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Index . add ( root Size ) Ġ// Ġafter Ġthe Ġlast Ġleaf ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadd Size Ġ= ĠRandom . nextInt ( max BufferSize Ġ* Ġ 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġadd Index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( size Ġin Ġadd Size .. ( add Size Ġ+ Ġmax BufferSize )) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelements ToAdd Ġ= ĠList ( size ) Ġ{ Ġinitial Size Ġ+ Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġlist . addAll ( index , Ġelements ToAdd ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġinitial Elements . to Mutable List (). also Ġ{ Ġit . addAll ( index , Ġelements ToAdd ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals < List < *> >( expected , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġremove All Tests () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmax BufferSize Ġ= Ġ 3 2 ĊĊĠĠĠĠĠĠĠ Ġval Ġlist Sizes Ġ= ĠlistOf ( 0 , Ġ 1 , Ġ 1 0 , Ġ 3 1 , Ġ 3 2 , Ġ 3 3 , Ġ 6 4 , Ġ 6 5 , Ġ 1 0 0 , Ġ 1 0 2 4 , Ġ 1 0 5 6 , Ġ 1 0 5 7 , Ġ 1 0 0 0 0 , Ġ 3 3 0 0 0 ). filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ<= ĠN For Algorithm Complexity . O _ NN ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( initial Size Ġin Ġlist Sizes ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinitial Elements Ġ= ĠList ( initial Size ) Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġinitial Elements . fold ( persistent ListOf < Int >()) Ġ{ Ġlist , Ġelement Ġ-> Ġlist . add ( element ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġremove Elements Ġ= Ġmutable ListOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Elements Ġ// Ġall ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( initial Size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Elements . add ( emptyList ()) Ġ// Ġnone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Elements . add ( List ( 1 ) Ġ{ ĠRandom . nextInt ( initial Size ) Ġ}) Ġ// Ġa Ġrandom Ġelement ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Elements . add ( List ( max BufferSize ) Ġ{ ĠRandom . nextInt ( initial Size ) Ġ}) Ġ// Ġrandom Ġelements ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Elements . add ( List ( initial Size Ġ/ Ġ 2 ) Ġ{ ĠRandom . nextInt ( initial Size ) Ġ}) Ġ// Ġ~ half Ġelements ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Elements . add ( List ( initial Size ) Ġ{ ĠRandom . nextInt ( initial Size ) Ġ}) Ġ// Ġ~ more Ġthan Ġhalf Ġelements ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Elements . add ( List ( initial Size Ġ/ Ġ 2 ) Ġ{ Ġit Ġ}) Ġ// Ġ~ first Ġhalf ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Elements . add ( List ( initial Size Ġ/ Ġ 2 ) Ġ{ Ġinitial Size Ġ- Ġit Ġ}) Ġ// Ġ~ last Ġhalf ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( initial Size Ġ> Ġmax BufferSize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Size Ġ= Ġ( initial Size Ġ- Ġ 1 ) Ġand Ġ( max BufferSize Ġ- Ġ 1 ). inv () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtail Size Ġ= Ġinitial Size Ġ- Ġroot Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Elements . add ( List ( max BufferSize ) Ġ{ Ġit Ġ}) Ġ// Ġfirst Ġleaf ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Elements . add ( List ( tail Size ) Ġ{ Ġroot Size Ġ+ Ġit Ġ}) Ġ// Ġtail ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Elements . add ( List ( max BufferSize ) Ġ{ Ġroot Size Ġ- Ġit Ġ}) Ġ// Ġlast Ġleaf ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( shift Ġin Ġ 5 Ġuntil Ġ 3 0 Ġstep Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbranches Ġ= Ġ 1 Ġshl Ġshift ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( branches Ġ> Ġroot Size ) Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Elements . add ( initial Elements . sh uffled (). take ( initial Size Ġ- Ġroot Size Ġ/ Ġbranches )) Ġ// Ġdecrease Ġroot Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( elements Ġin Ġremove Elements ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġinitial Elements . to Mutable List (). also Ġ{ Ġit . removeAll ( elements ) Ġ} Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("${ initial Elements . size } Ġ-> Ġ${ expected . size } Ġ: Ġ${ initial Elements . size . toDouble () Ġ/ Ġexpected . size }") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġlist . removeAll ( elements ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Predicate Ġ= Ġlist . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhash Set Ġ= Ġelements . to HashSet () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . removeAll Ġ{ Ġe Ġ-> Ġhash Set . contains ( e ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals < List < *> >( expected , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals < List < *> >( expected , Ġresult Predicate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrandom Operations Tests () Ġ{ ĊĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġ 1 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlists Ġ= ĠList ( 2 0 ) Ġ{ Ġmutable ListOf < Int >() Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvectors Ġ= ĠMutable List ( 2 0 ) Ġ{ Ġpersistent ListOf < Int >() Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoperation Count Ġ= ĠN For Algorithm Complexity . O _ N log N ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeat ( times Ġ= Ġoperation Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= ĠRandom . nextInt ( lists . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġlists [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvector Ġ= Ġvectors [ index ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoperation Type Ġ= ĠRandom . next Double () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoperation Index Ġ= Ġif Ġ( list . size Ġ> Ġ 1 ) ĠRandom . nextInt ( list . size ) Ġelse Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshould Remove Ġ= Ġoperation Type Ġ< Ġ 0 . 1 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshould Set Ġ= Ġoperation Type Ġ> Ġ 0 . 1 5 Ġ&& Ġoperation Type Ġ< Ġ 0 . 3 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Vector Ġ= Ġif Ġ( list . isNotEmpty () Ġ&& Ġshould Remove ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . remove At ( operation Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvector . remove At ( operation Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( list . isNotEmpty () Ġ&& Ġshould Set ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠRandom . nextInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist [ operation Index ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvector . set ( operation Index , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠRandom . nextInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( operation Index , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvector . add ( operation Index , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest After Operation ( list , Ġnew Vector , Ġoperation Index ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvectors [ index ] Ġ= Ġnew Vector ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals < List < *> >( lists , Ġvectors ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠmaxSize Ġ= Ġvectors . max Of Ġ{ Ġit . size Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" L argest Ġpersistent Ġlist Ġsize : Ġ$ maxSize ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlists . forEach Indexed Ġ{ Ġindex , Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvector Ġ= Ġvectors [ index ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( list . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġremove Index Ġ= ĠRandom . nextInt ( list . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . remove At ( remove Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvector Ġ= Ġvector . remove At ( remove Index ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest After Operation ( list , Ġvector , Ġremove Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtest After Operation ( list : ĠList < Int >, Ġvector : ĠPersistent List < Int >, Ġoperation Index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( list . first OrNull (), Ġvector . first OrNull ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( list . last OrNull (), Ġvector . last OrNull ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( list . size , Ġvector . size ) ĊĠĠĠĠĠĠĠ Ġif Ġ( operation Index Ġ< Ġlist . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( list [ operation Index ], Ġvector [ operation Index ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( operation Index Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( list [ operation Index Ġ- Ġ 1 ], Ġvector [ operation Index Ġ- Ġ 1 ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( operation Index Ġ+ Ġ 1 Ġ< Ġlist . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( list [ operation Index Ġ+ Ġ 1 ], Ġvector [ operation Index Ġ+ Ġ 1 ]) ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ // ĠĠĠĠĠĠĠ ĠassertEquals ( list , Ġvector ) ĊĠĠĠ Ġ} Ċ }