package Ġorg . open rs 2 . cache Ċ Ċ import Ġorg . open rs 2 . util . kr HashCode Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assert Fails With Ċ import Ġkotlin . test . assertFalse Ċ import Ġkotlin . test . assertNull Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠNamed Entry Collection Test Ġ{ ĊĠĠĠ Ġprivate Ġclass ĠTest Entry ( ĊĠĠĠĠĠĠĠ Ġparent : ĠMutable Named Entry Collection < Test Entry >, ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġid : ĠInt ĊĠĠĠ Ġ) Ġ: ĠMutable Named Entry Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġparent : ĠMutable Named Entry Collection < Test Entry >? Ġ= Ġparent ĊĊĠĠĠĠĠĠĠ Ġoverride Ġvar Ġname Hash : ĠInt Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent ?. rename ( id , Ġfield , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġremove () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent ?. remove ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠTest Collection Ġ: ĠMutable Named Entry Collection < Test Entry >( :: Test Entry ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Bounds () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 Ġin Ġcollection ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection . contains Named (- 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection [- 1 ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection . getName d (- 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection . create Or Get (- 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection . create Or Get Named (- 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection . remove (- 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalArgumentException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollection . remove Named (- 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Empty () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( emptyList (), Ġcollection . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Single Entry () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġcollection . create Or Get ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcollection . capacity ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry , Ġcollection . create Or Get ( 0 )) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcollection . capacity ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( 0 Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( 1 Ġin Ġcollection ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry , Ġcollection [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [ 1 ]) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry ), Ġcollection . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Multiple Entries () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 0 Ġ= Ġcollection . create Or Get ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry 0 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 0 . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 1 Ġ= Ġcollection . create Or Get ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġentry 1 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 1 . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcollection . capacity ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection . create Or Get ( 0 )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection . create Or Get ( 1 )) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcollection . capacity ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( 0 Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( 1 Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( 2 Ġin Ġcollection ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection [ 1 ]) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [ 2 ]) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry 0 , Ġentry 1 ), Ġcollection . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Single Named Entry () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġcollection . create Or Get (" hello ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" hello ". kr HashCode (), Ġentry . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcollection . capacity ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry , Ġcollection . create Or Get (" hello ")) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcollection . capacity ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue (" hello " Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertFalse (" world " Ġin Ġcollection ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry , Ġcollection [" hello "]) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" world "]) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry ), Ġcollection . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Multiple Named Entries () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 0 Ġ= Ġcollection . create Or Get (" hello ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry 0 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" hello ". kr HashCode (), Ġentry 0 . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 1 Ġ= Ġcollection . create Or Get (" world ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġentry 1 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" world ". kr HashCode (), Ġentry 1 . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcollection . capacity ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection . create Or Get (" hello ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection . create Or Get (" world ")) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcollection . capacity ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue (" hello " Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertTrue (" world " Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertFalse (" !" Ġin Ġcollection ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" hello "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection [" world "]) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" ! "]) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry 0 , Ġentry 1 ), Ġcollection . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Rename () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġcollection . create Or Get (" hello ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" hello ". kr HashCode (), Ġentry . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue (" hello " Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertFalse (" world " Ġin Ġcollection ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry , Ġcollection [" hello "]) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" world "]) ĊĊĠĠĠĠĠĠĠ Ġentry . setName (" world ") ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" hello " Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertTrue (" world " Ġin Ġcollection ) ĊĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" hello "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry , Ġcollection [" world "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Single Entry SetName () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġcollection . create Or Get ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" hello " Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry . setName (" hello ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" hello ". kr HashCode (), Ġentry . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue (" hello " Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry , Ġcollection [" hello "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Single Entry Reset Name () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġcollection . create Or Get (" hello ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" hello ". kr HashCode (), Ġentry . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue (" hello " Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry . name Hash Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" hello " Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" hello "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Multiple Entries SetName () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 0 Ġ= Ġcollection . create Or Get ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry 0 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 0 . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 1 Ġ= Ġcollection . create Or Get ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġentry 1 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 1 . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" hello " Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 0 . setName (" hello ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" hello ". kr HashCode (), Ġentry 0 . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue (" hello " Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" hello "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Multiple Entries Reset Name () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 0 Ġ= Ġcollection . create Or Get (" hello ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry 0 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" hello ". kr HashCode (), Ġentry 0 . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 1 Ġ= Ġcollection . create Or Get ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġentry 1 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 1 . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue (" hello " Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 0 . name Hash Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 0 . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" hello " Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" hello "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Single Entry Remove () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġcollection . create Or Get ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry , Ġcollection [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry ), Ġcollection . toList ()) ĊĊĠĠĠĠĠĠĠ Ġentry . remove () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( emptyList (), Ġcollection . toList ()) ĊĊĠĠĠĠĠĠĠ Ġentry . setName (" hello ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" hello ". kr HashCode (), Ġentry . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" hello " Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry . remove () ĊĠĠĠĠĠĠĠ ĠassertEquals ( emptyList (), Ġcollection . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Single Entry Remove ById () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġcollection . create Or Get ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry , Ġcollection [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry ), Ġcollection . toList ()) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry , Ġcollection . remove ( 0 )) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( emptyList (), Ġcollection . toList ()) ĊĊĠĠĠĠĠĠĠ Ġentry . setName (" hello ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" hello ". kr HashCode (), Ġentry . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" hello " Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" hello "]) ĊĊĠĠĠĠĠĠĠ ĠassertNull ( collection . remove ( 0 )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( emptyList (), Ġcollection . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Single Entry Remove ByName () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġcollection . create Or Get (" hello ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" hello ". kr HashCode (), Ġentry . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry , Ġcollection [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry ), Ġcollection . toList ()) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry , Ġcollection . remove (" hello ")) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( emptyList (), Ġcollection . toList ()) ĊĊĠĠĠĠĠĠĠ Ġentry . setName (" world ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" world ". kr HashCode (), Ġentry . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" world " Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" world "]) ĊĊĠĠĠĠĠĠĠ ĠassertNull ( collection . remove (" hello ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( emptyList (), Ġcollection . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Multiple Entries Remove () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 0 Ġ= Ġcollection . create Or Get ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry 0 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 0 . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 1 Ġ= Ġcollection . create Or Get ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġentry 1 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 1 . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection [ 1 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry 0 , Ġentry 1 ), Ġcollection . toList ()) ĊĊĠĠĠĠĠĠĠ Ġentry 0 . remove () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection [ 1 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry 1 ), Ġcollection . toList ()) ĊĊĠĠĠĠĠĠĠ Ġentry 0 . setName (" world ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" world ". kr HashCode (), Ġentry 0 . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" world " Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" world "]) ĊĊĠĠĠĠĠĠĠ Ġentry 0 . remove () ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry 1 ), Ġcollection . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Multiple Entries Remove ById () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 0 Ġ= Ġcollection . create Or Get ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry 0 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 0 . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 1 Ġ= Ġcollection . create Or Get ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġentry 1 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 1 . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection [ 1 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry 0 , Ġentry 1 ), Ġcollection . toList ()) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection . remove ( 0 )) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [ 0 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection [ 1 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry 1 ), Ġcollection . toList ()) ĊĊĠĠĠĠĠĠĠ Ġentry 0 . setName (" world ") ĊĠĠĠĠĠĠĠ ĠassertEquals (" world ". kr HashCode (), Ġentry 0 . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" world " Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" world "]) ĊĊĠĠĠĠĠĠĠ ĠassertNull ( collection . remove ( 0 )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry 1 ), Ġcollection . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Multiple Entries Remove ByName () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 0 Ġ= Ġcollection . create Or Get (" hello ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry 0 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" hello ". kr HashCode (), Ġentry 0 . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 1 Ġ= Ġcollection . create Or Get (" world ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġentry 1 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" world ". kr HashCode (), Ġentry 1 . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 2 Ġ= Ġcollection . create Or Get (" abc ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġentry 2 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" abc ". kr HashCode (), Ġentry 2 . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" hello "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection [" world "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 2 , Ġcollection [" abc "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry 0 , Ġentry 1 , Ġentry 2 ), Ġcollection . toList ()) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection . remove (" hello ")) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" hello "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection [" world "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 2 , Ġcollection [" abc "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry 1 , Ġentry 2 ), Ġcollection . toList ()) ĊĊĠĠĠĠĠĠĠ Ġentry 0 . setName (" !") ĊĠĠĠĠĠĠĠ ĠassertEquals (" ! ". kr HashCode (), Ġentry 0 . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse (" !" Ġin Ġcollection ) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" ! "]) ĊĊĠĠĠĠĠĠĠ ĠassertNull ( collection . remove (" hello ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry 1 , Ġentry 2 ), Ġcollection . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Remove Last Named Entry () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 0 Ġ= Ġcollection . create Or Get (" hello ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry 0 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" hello ". kr HashCode (), Ġentry 0 . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 1 Ġ= Ġcollection . create Or Get ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġentry 1 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 1 . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 2 Ġ= Ġcollection . create Or Get ( 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġentry 2 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 2 . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" hello "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection [ 1 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 2 , Ġcollection [ 2 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry 0 , Ġentry 1 , Ġentry 2 ), Ġcollection . toList ()) ĊĊĠĠĠĠĠĠĠ Ġentry 0 . remove () ĊĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" hello "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection [ 1 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 2 , Ġcollection [ 2 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry 1 , Ġentry 2 ), Ġcollection . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Non Cont iguous Ids () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 1 Ġ= Ġcollection . create Or Get ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġentry 1 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 1 . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 4 Ġ= Ġcollection . create Or Get ( 4 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġentry 4 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 4 . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 3 Ġ= Ġcollection . create Or Get ( 3 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġentry 3 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 3 . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 5 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry 1 , Ġentry 3 , Ġentry 4 ), Ġcollection . toList ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 0 Ġ= Ġcollection . create Or Get (" hello ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry 0 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" hello ". kr HashCode (), Ġentry 0 . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 2 Ġ= Ġcollection . create Or Get (" world ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġentry 2 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" world ". kr HashCode (), Ġentry 2 . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 5 Ġ= Ġcollection . create Or Get (" !") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 5 , Ġentry 5 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" ! ". kr HashCode (), Ġentry 5 . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 6 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 6 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry 0 , Ġentry 1 , Ġentry 2 , Ġentry 3 , Ġentry 4 , Ġentry 5 ), Ġcollection . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Non Cont iguous Ids Single Entry () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 1 Ġ= Ġcollection . create Or Get ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġentry 1 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 1 . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry 1 ), Ġcollection . toList ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 0 Ġ= Ġcollection . create Or Get (" hello ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry 0 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" hello ". kr HashCode (), Ġentry 0 . name Hash ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( listOf ( entry 0 , Ġentry 1 ), Ġcollection . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Empty Iterator () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġit Ġ= Ġcollection . iterator () ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . remove () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( it . hasNext ()) ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < NoSuch ElementException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . next () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . remove () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Single Entry Iterator () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġcollection . create Or Get ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġit Ġ= Ġcollection . iterator () ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . remove () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( it . hasNext ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry , Ġit . next ()) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( it . hasNext ()) ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < NoSuch ElementException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . next () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . remove () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Multiple Entries Iterator () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 0 Ġ= Ġcollection . create Or Get ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry 0 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 0 . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 1 Ġ= Ġcollection . create Or Get ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġentry 1 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 1 . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġit Ġ= Ġcollection . iterator () ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . remove () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( it . hasNext ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġit . next ()) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( it . hasNext ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġit . next ()) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( it . hasNext ()) ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < NoSuch ElementException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . next () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . remove () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Single Entry Remove Iterator () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġcollection . create Or Get ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġit Ġ= Ġcollection . iterator () ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( it . hasNext ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry , Ġit . next ()) ĊĊĠĠĠĠĠĠĠ Ġit . remove () ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . remove () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( it . hasNext ()) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( emptyList (), Ġcollection . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Multiple Entries Remove Iterator () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 0 Ġ= Ġcollection . create Or Get ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġentry 0 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 0 . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 1 Ġ= Ġcollection . create Or Get ( 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġentry 1 . id ) ĊĠĠĠĠĠĠĠ ĠassertEquals (- 1 , Ġentry 1 . name Hash ) ĊĊĠĠĠĠĠĠĠ Ġval Ġit Ġ= Ġcollection . iterator () ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( it . hasNext ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġit . next ()) ĊĊĠĠĠĠĠĠĠ Ġit . remove () ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . remove () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( it . hasNext ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġit . next ()) ĊĊĠĠĠĠĠĠĠ Ġit . remove () ĊĊĠĠĠĠĠĠĠ Ġassert Fails With < IllegalStateException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . remove () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( it . hasNext ()) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġcollection . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġcollection . capacity ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( emptyList (), Ġcollection . toList ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest NameHash Collision () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 0 Ġ= Ġcollection . create Or Get ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġentry 1 Ġ= Ġcollection . create Or Get ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġentry 2 Ġ= Ġcollection . create Or Get ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġentry 0 . setName (" hello ") ĊĠĠĠĠĠĠĠ Ġentry 1 . setName (" hello ") ĊĠĠĠĠĠĠĠ Ġentry 2 . setName (" hello ") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 0 . clear Name () ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 1 . clear Name () ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 2 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 2 . clear Name () ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" hello "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest NameHash Collision Opp osite Order () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 0 Ġ= Ġcollection . create Or Get ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġentry 1 Ġ= Ġcollection . create Or Get ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġentry 2 Ġ= Ġcollection . create Or Get ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġentry 2 . setName (" hello ") ĊĠĠĠĠĠĠĠ Ġentry 1 . setName (" hello ") ĊĠĠĠĠĠĠĠ Ġentry 0 . setName (" hello ") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 2 . clear Name () ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 1 . clear Name () ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 0 . clear Name () ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" hello "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest NameHash Collision Remove () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 0 Ġ= Ġcollection . create Or Get ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġentry 1 Ġ= Ġcollection . create Or Get ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġentry 2 Ġ= Ġcollection . create Or Get ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġentry 0 . setName (" hello ") ĊĠĠĠĠĠĠĠ Ġentry 1 . setName (" hello ") ĊĠĠĠĠĠĠĠ Ġentry 2 . setName (" hello ") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 0 . remove () ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 1 . remove () ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 2 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 2 . remove () ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" hello "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest NameHash Collision Opp osite Order Remove () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 0 Ġ= Ġcollection . create Or Get ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġentry 1 Ġ= Ġcollection . create Or Get ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġentry 2 Ġ= Ġcollection . create Or Get ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġentry 2 . setName (" hello ") ĊĠĠĠĠĠĠĠ Ġentry 1 . setName (" hello ") ĊĠĠĠĠĠĠĠ Ġentry 0 . setName (" hello ") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 2 . remove () ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 1 . remove () ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 0 . remove () ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" hello "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest NameHash Collision Rename () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 0 Ġ= Ġcollection . create Or Get ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġentry 1 Ġ= Ġcollection . create Or Get ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġentry 2 Ġ= Ġcollection . create Or Get ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġentry 0 . setName (" hello ") ĊĠĠĠĠĠĠĠ Ġentry 1 . setName (" hello ") ĊĠĠĠĠĠĠĠ Ġentry 2 . setName (" hello ") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 0 . setName (" entry 0 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" entry 0 "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 1 . setName (" entry 1 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" entry 0 "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection [" entry 1 "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 2 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 2 . setName (" entry 2 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" entry 0 "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection [" entry 1 "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 2 , Ġcollection [" entry 2 "]) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" hello "]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest NameHash Collision Opp osite Order Rename () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcollection Ġ= ĠTest Collection () ĊĊĠĠĠĠĠĠĠ Ġval Ġentry 0 Ġ= Ġcollection . create Or Get ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġentry 1 Ġ= Ġcollection . create Or Get ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġentry 2 Ġ= Ġcollection . create Or Get ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġentry 2 . setName (" hello ") ĊĠĠĠĠĠĠĠ Ġentry 1 . setName (" hello ") ĊĠĠĠĠĠĠĠ Ġentry 0 . setName (" hello ") ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 2 . setName (" entry 2 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 2 , Ġcollection [" entry 2 "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 1 . setName (" entry 1 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection [" entry 1 "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 2 , Ġcollection [" entry 2 "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" hello "]) ĊĊĠĠĠĠĠĠĠ Ġentry 0 . setName (" entry 0 ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 0 , Ġcollection [" entry 0 "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 1 , Ġcollection [" entry 1 "]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( entry 2 , Ġcollection [" entry 2 "]) ĊĠĠĠĠĠĠĠ ĠassertNull ( collection [" hello "]) ĊĠĠĠ Ġ} Ċ } Ċ