package Ġkui Ċ Ċ import Ġkui . test . assert Matches Html Ċ import Ġkui . test . render Ċ import Ġkotlin . test . Test Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertSame Ċ Ċ class ĠRe peated Children Ġ{ ĊĠĠĠ Ġprivate Ġclass ĠO uter Ġ: ĠComponent () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġin ners : ĠMutable List < Inner > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġi Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin ners . add ( Inner ( i . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġremove ( i : ĠInner ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin ners . remove ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrender () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrender () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkup (). div Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġin ners ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomponent ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠInner ( val Ġi : ĠString ) Ġ: ĠComponent () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrender () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmarkup (). p Ġ{ Ġ+ i Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" Inner ($ i )" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġadd Tw ice Remove Tw ice () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrendered Ġ= Ġrender ( Outer ()) ĊĠĠĠĠĠĠĠ Ġval Ġcomp Ġ= Ġrendered . component ĊĊĠĠĠĠĠĠĠ Ġcomp . add () ĊĠĠĠĠĠĠĠ Ġcomp . add () ĊĊĠĠĠĠĠĠĠ Ġval Ġchild 0 Ġ= Ġcomp . root Element . node ?. childNodes ?. item ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġchild 1 Ġ= Ġcomp . root Element . node ?. childNodes ?. item ( 1 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġcomp . in ners . size ) ĊĠĠĠĠĠĠĠ Ġassert Matches Html ("< div >< p > 0 </ p >< p > 1 </ p ></ div >", Ġrendered ) ĊĠĠĠĠĠĠĠ ĠassertSame ( child 0 , Ġcomp . in ners [ 0 ]. root Element . node ) ĊĠĠĠĠĠĠĠ ĠassertSame ( child 1 , Ġcomp . in ners [ 1 ]. root Element . node ) ĊĊĠĠĠĠĠĠĠ Ġcomp . remove ( comp . in ners [ 0 ]) ĊĊĠĠĠĠĠĠĠ Ġval Ġchild 0 a Ġ= Ġcomp . root Element . node ?. childNodes ?. item ( 0 ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġcomp . in ners . size ) ĊĠĠĠĠĠĠĠ Ġassert Matches Html ("< div >< p > 1 </ p ></ div >", Ġrendered ) ĊĠĠĠĠĠĠĠ ĠassertSame ( child 0 a , Ġcomp . in ners [ 0 ]. root Element . node ) ĊĊĠĠĠĠĠĠĠ Ġcomp . remove ( comp . in ners [ 0 ]) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġcomp . in ners . size ) ĊĠĠĠĠĠĠĠ Ġassert Matches Html ("< div ></ div >", Ġrendered ) ĊĠĠĠ Ġ} Ċ }