package Ġosu . framework . tests . bind ables čĊč Ċ import Ġorg . junit . jupiter . api . BeforeEach č Ċ import Ġorg . junit . jupiter . api . Test č Ċ import Ġorg . junit . jupiter . api . assert All č Ċ import Ġorg . junit . jupiter . api . assert Throws č Ċ import Ġosu . framework . bind ables . Bind able Mutable List č Ċ import Ġkotlin . test . assertEquals č Ċ import Ġkotlin . test . assertTrue č Ċ import Ġkotlin . test . fail čĊč Ċ class ĠBind able Mutable List Test Ġ{ čĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbind able String List : ĠBind able Mutable List < String > čĊčĊĠĠĠ Ġ@ BeforeEach čĊĠĠĠ Ġfun ĠsetUp () Ġ{ čĊĠĠĠĠĠĠĠ Ġbind able String List Ġ= ĠBind able Mutable List () čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest Constructor DoesNot Add Items ByDefault () Ġ{ čĊĠĠĠĠĠĠĠ ĠassertTrue ( bind able String List . isEmpty ()) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest Constructor With Items Adds Items Intern ally () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠlistOf (" ok ", Ġ" no pe ", Ġ" random ", Ġ"") čĊčĊĠĠĠĠĠĠĠ Ġval Ġbind able Mutable List Ġ= ĠBind able Mutable List ( list ) čĊčĊĠĠĠĠĠĠĠ Ġassert All ({ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert All ( list . map Ġ{ Ġstr Ġ-> Ġ{ ĠassertTrue ( bind able Mutable List . contains ( str )) Ġ} Ġ}) čĊĠĠĠĠĠĠĠ Ġ}, Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( list . size , Ġbind able Mutable List . size ) čĊĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun ĠtestGet Retrie ves Object AtIndex () Ġ{ čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 0 ") čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 1 ") čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 2 ") čĊčĊĠĠĠĠĠĠĠ ĠassertEquals (" 1 ", Ġbind able String List [ 1 ]) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest Set Mut ates Object AtIndex () Ġ{ čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 0 ") čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 1 ") čĊĠĠĠĠĠĠĠ Ġbind able String List [ 1 ] Ġ= Ġ" 2 " čĊčĊĠĠĠĠĠĠĠ ĠassertEquals (" 2 ", Ġbind able String List [ 1 ]) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun ĠtestGet While Disabled DoesNot Throw Unsupported OperationException () Ġ{ čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 0 ") čĊĠĠĠĠĠĠĠ Ġbind able String List . disabled Ġ= Ġtrue čĊčĊĠĠĠĠĠĠĠ ĠassertEquals (" 0 ", Ġbind able String List [ 0 ]) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest Set While Disabled Throws Unsupported OperationException () Ġ{ čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 0 ") čĊĠĠĠĠĠĠĠ Ġbind able String List . disabled Ġ= Ġtrue čĊčĊĠĠĠĠĠĠĠ ĠassertThrows < Unsupported OperationException > Ġ{ Ġbind able String List [ 0 ] Ġ= Ġ" 1 " Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest Set Not ifies Sub scribers () Ġ{ čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 0 ") čĊčĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġadded Item : ĠString čĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġremoved Item : ĠString čĊčĊĠĠĠĠĠĠĠ Ġbind able String List . item Added Ġ+= Ġ{ Ġadded Item Ġ= Ġit Ġ} čĊĠĠĠĠĠĠĠ Ġbind able String List . item Removed Ġ+= Ġ{ Ġremoved Item Ġ= Ġit Ġ} čĊčĊĠĠĠĠĠĠĠ Ġbind able String List [ 0 ] Ġ= Ġ" 1 " čĊčĊĠĠĠĠĠĠĠ ĠassertEquals (" 0 ", Ġremoved Item ) čĊĠĠĠĠĠĠĠ ĠassertEquals (" 1 ", Ġadded Item ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest Set Not ifies Bound Lists () Ġ{ čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 0 ") čĊčĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġadded Item : ĠString čĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġremoved Item : ĠString čĊčĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠBind able Mutable List < String >() čĊĠĠĠĠĠĠĠ Ġlist . bind To ( bind able String List ) čĊĠĠĠĠĠĠĠ Ġbind able String List . item Added Ġ+= Ġ{ Ġadded Item Ġ= Ġit Ġ} čĊĠĠĠĠĠĠĠ Ġbind able String List . item Removed Ġ+= Ġ{ Ġremoved Item Ġ= Ġit Ġ} čĊčĊĠĠĠĠĠĠĠ Ġbind able String List [ 0 ] Ġ= Ġ" 1 " čĊčĊĠĠĠĠĠĠĠ ĠassertEquals (" 0 ", Ġremoved Item ) čĊĠĠĠĠĠĠĠ ĠassertEquals (" 1 ", Ġadded Item ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest Add Inser ts Item AtIndex () Ġ{ čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 0 ") čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 2 ") čĊčĊĠĠĠĠĠĠĠ Ġbind able String List . add ( 1 , Ġ" 1 ") čĊčĊĠĠĠĠĠĠĠ Ġassert All ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals (" 0 ", Ġbind able String List [ 0 ]) Ġ}, čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals (" 1 ", Ġbind able String List [ 1 ]) Ġ}, čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals (" 2 ", Ġbind able String List [ 2 ]) Ġ} čĊĠĠĠĠĠĠĠ Ġ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest Add Not ifies Sub scribers () Ġ{ čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 0 ") čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 2 ") čĊčĊĠĠĠĠĠĠĠ Ġvar Ġwas Added Ġ= Ġfalse čĊĠĠĠĠĠĠĠ Ġbind able String List . item Added Ġ+= Ġ{ Ġwas Added Ġ= Ġtrue Ġ} čĊĠĠĠĠĠĠĠ Ġbind able String List . add ( 1 , Ġ" 1 ") čĊčĊĠĠĠĠĠĠĠ ĠassertTrue ( was Added ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest Add Not ifies Bound Lists () Ġ{ čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 0 ") čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 2 ") čĊčĊĠĠĠĠĠĠĠ Ġvar Ġwas Added Ġ= Ġfalse čĊčĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠBind able Mutable List < String >() čĊĠĠĠĠĠĠĠ Ġlist . bind To ( bind able String List ) čĊĠĠĠĠĠĠĠ Ġlist . item Added Ġ+= Ġ{ Ġwas Added Ġ= Ġtrue Ġ} čĊčĊĠĠĠĠĠĠĠ Ġbind able String List . add ( 1 , Ġ" 1 ") čĊčĊĠĠĠĠĠĠĠ ĠassertTrue ( was Added ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest Add Inser ts Item AtIndex In Bound List () Ġ{ čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 0 ") čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 2 ") čĊčĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠBind able Mutable List < String >() čĊĠĠĠĠĠĠĠ Ġlist . bind To ( bind able String List ) čĊčĊĠĠĠĠĠĠĠ Ġbind able String List . add ( 1 , Ġ" 1 ") čĊčĊĠĠĠĠĠĠĠ Ġassert All ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals (" 0 ", Ġlist [ 0 ]) Ġ}, čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals (" 1 ", Ġlist [ 1 ]) Ġ}, čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertEquals (" 2 ", Ġlist [ 2 ]) Ġ} čĊĠĠĠĠĠĠĠ Ġ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest RemoveAt Remov es Item AtIndex () Ġ{ čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 0 ") čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 1 ") čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" 2 ") čĊčĊĠĠĠĠĠĠĠ Ġbind able String List . remove At ( 1 ) čĊčĊĠĠĠĠĠĠĠ ĠassertEquals (" 0 ", Ġbind able String List [ 0 ]) čĊĠĠĠĠĠĠĠ ĠassertEquals (" 2 ", Ġbind able String List [ 1 ]) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest RemoveAt With Disabled List Throws Unsupported OperationException () Ġ{ čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" abc ") čĊĠĠĠĠĠĠĠ Ġbind able String List . disabled Ġ= Ġtrue čĊčĊĠĠĠĠĠĠĠ ĠassertThrows < Unsupported OperationException > Ġ{ Ġbind able String List . remove At ( 0 ) Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest RemoveAt Not ifies Sub scribers () Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġwas Removed Ġ= Ġfalse čĊčĊĠĠĠĠĠĠĠ Ġbind able String List . add (" abc ") čĊĠĠĠĠĠĠĠ Ġbind able String List . item Removed Ġ+= Ġ{ Ġwas Removed Ġ= Ġtrue Ġ} čĊčĊĠĠĠĠĠĠĠ Ġbind able String List . remove At ( 0 ) čĊčĊĠĠĠĠĠĠĠ ĠassertTrue ( was Removed ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest RemoveAt Not ifies Bound Lists () Ġ{ čĊĠĠĠĠĠĠĠ Ġbind able String List . add (" abc ") čĊčĊĠĠĠĠĠĠĠ Ġvar Ġwas Removed Ġ= Ġfalse čĊčĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠBind able Mutable List < String >() čĊĠĠĠĠĠĠĠ Ġlist . bind To ( bind able String List ) čĊĠĠĠĠĠĠĠ Ġlist . item Removed Ġ+= Ġ{ Ġwas Removed Ġ= Ġtrue Ġ} čĊčĊĠĠĠĠĠĠĠ Ġbind able String List . remove At ( 0 ) čĊčĊĠĠĠĠĠĠĠ ĠassertTrue ( was Removed ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest Disabled When Set To True Not ifies Subscriber () Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġis Disabled : ĠBoolean ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġbind able String List . disabled Changed Ġ+= Ġ{ Ġis Disabled Ġ= Ġit Ġ} čĊčĊĠĠĠĠĠĠĠ Ġbind able String List . disabled Ġ= Ġtrue čĊĠĠĠĠĠĠĠ ĠassertTrue ( is Disabled Ġ?: Ġfalse ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest Disabled When Set To True Not ifies Sub scribers () Ġ{ čĊĠĠĠĠĠĠĠ Ġvar Ġis Disabled A : ĠBoolean ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġvar Ġis Disabled B : ĠBoolean ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġvar Ġis Disabled C : ĠBoolean ? Ġ= Ġnull čĊĠĠĠĠĠĠĠ Ġbind able String List . disabled Changed Ġ+= Ġ{ Ġis Disabled A Ġ= Ġit Ġ} čĊĠĠĠĠĠĠĠ Ġbind able String List . disabled Changed Ġ+= Ġ{ Ġis Disabled B Ġ= Ġit Ġ} čĊĠĠĠĠĠĠĠ Ġbind able String List . disabled Changed Ġ+= Ġ{ Ġis Disabled C Ġ= Ġit Ġ} čĊčĊĠĠĠĠĠĠĠ Ġbind able String List . disabled Ġ= Ġtrue čĊĠĠĠĠĠĠĠ Ġassert All ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertTrue ( is Disabled A Ġ?: Ġfalse ) Ġ}, čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertTrue ( is Disabled B Ġ?: Ġfalse ) Ġ}, čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠassertTrue ( is Disabled C Ġ?: Ġfalse ) Ġ} čĊĠĠĠĠĠĠĠ Ġ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest Disabled When Set To Current Value DoesNot Notify Subscriber () Ġ{ čĊĠĠĠĠĠĠĠ Ġbind able String List . disabled Changed Ġ+= Ġ{ Ġfail () Ġ} čĊĠĠĠĠĠĠĠ Ġbind able String List . disabled Ġ= Ġbind able String List . disabled čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest Disabled When Set TO Current Value DoesNot Notify Sub scribers () Ġ{ čĊĠĠĠĠĠĠĠ Ġbind able String List . disabled Changed Ġ+= Ġ{ Ġfail () Ġ} čĊĠĠĠĠĠĠĠ Ġbind able String List . disabled Changed Ġ+= Ġ{ Ġfail () Ġ} čĊĠĠĠĠĠĠĠ Ġbind able String List . disabled Changed Ġ+= Ġ{ Ġfail () Ġ} čĊĠĠĠĠĠĠĠ Ġbind able String List . disabled Ġ= Ġbind able String List . disabled čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest Disabled Not ifies Bound Lists () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠBind able Mutable List < String >() čĊĠĠĠĠĠĠĠ Ġlist . bind To ( bind able String List ) čĊčĊĠĠĠĠĠĠĠ Ġbind able String List . disabled Ġ= Ġtrue čĊčĊĠĠĠĠĠĠĠ ĠassertTrue ( list . disabled ) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ@ Test čĊĠĠĠ Ġfun Ġtest Bound CopyWith Add () Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġbound Copy Ġ= Ġbind able String List . get Bound Copy () čĊĠĠĠĠĠĠĠ Ġvar Ġbound Copy Item Added Ġ= Ġfalse čĊĠĠĠĠĠĠĠ Ġbound Copy . item Added Ġ+= Ġ{ Ġbound Copy Item Added Ġ= Ġtrue Ġ} čĊčĊĠĠĠĠĠĠĠ Ġbind able String List . add (" test ") čĊčĊĠĠĠĠĠĠĠ ĠassertTrue ( bound Copy Item Added ) čĊĠĠĠ Ġ} č Ċ }