package Ġxyz . magenta ize . dynamic data . list Ċ Ċ import Ġxyz . magenta ize . dynamic data . list . test . as Aggregator Ċ import Ġio . reactivex . rx java 3 . core . Observable Ċ import Ġorg . am sh ove . k lu ent . shouldBe EqualTo Ċ import Ġkotlin . test . Test Ċ Ċ internal Ġclass ĠAnd Fixture Ġ: ĠAnd Fixture Base () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcreate Observable (): ĠObservable < Change Set < Int >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsource 1 . connect (). and ( source 2 . connect ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠAnd Collection Fixture Ġ: ĠAnd Fixture Base () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcreate Observable (): ĠObservable < Change Set < Int >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġret Ġ= ĠlistOf ( source 1 . connect (), Ġsource 2 . connect ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġret . and () ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġabstract Ġclass ĠAnd Fixture Base Ġ{ ĊĠĠĠ Ġprotected Ġval Ġsource 1 Ġ= ĠSource List < Int >() ĊĠĠĠ Ġprotected Ġval Ġsource 2 Ġ= ĠSource List < Int >() ĊĠĠĠ Ġprivate Ġval Ġresults Ġ= Ġcreate Observable (). as Aggregator () ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġcreate Observable (): ĠObservable < Change Set < Int >> Ċ Ċ // ĠĠĠ Ġfun ĠDispose () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġsource 1 . dispose () Ċ // ĠĠĠĠĠĠĠ Ġsource 2 . dispose () Ċ // ĠĠĠĠĠĠĠ Ġresults . dispose () Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġ//@ Ignore ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġexcluded When Item IsIn One Source () Ġ{ ĊĠĠĠĠĠĠĠ Ġsource 1 . add ( 1 ) ĊĠĠĠĠĠĠĠ Ġresults . data . size ĠshouldBe EqualTo Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġincluded When Item IsIn Two Sources (){ ĊĠĠĠĠĠĠĠ Ġsource 1 . add ( 1 ) ĊĠĠĠĠĠĠĠ Ġsource 2 . add ( 1 ) ĊĠĠĠĠĠĠĠ Ġresults . data . size ĠshouldBe EqualTo Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġremoved When No Long er In Both (){ ĊĠĠĠĠĠĠĠ Ġsource 1 . add ( 1 ) ĊĠĠĠĠĠĠĠ Ġsource 2 . add ( 1 ) ĊĠĠĠĠĠĠĠ Ġsource 1 . remove ( 1 ) ĊĠĠĠĠĠĠĠ Ġresults . data . size ĠshouldBe EqualTo Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcombine Range (){ ĊĠĠĠĠĠĠĠ Ġsource 1 . add Range ( 1 .. 1 0 ) ĊĠĠĠĠĠĠĠ Ġsource 2 . add Range ( 6 .. 1 5 ) ĊĠĠĠĠĠĠĠ Ġresults . data . size ĠshouldBe EqualTo Ġ 5 ĊĠĠĠĠĠĠĠ Ġresults . data . items . toList () ĠshouldBe EqualTo Ġ( 6 .. 1 0 ). toList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġclear One Clear s Result (){ ĊĠĠĠĠĠĠĠ Ġsource 1 . add Range ( 1 .. 5 ) ĊĠĠĠĠĠĠĠ Ġsource 2 . add Range ( 1 .. 5 ) ĊĠĠĠĠĠĠĠ Ġsource 1 . clear () ĊĠĠĠĠĠĠĠ Ġresults . data . size ĠshouldBe EqualTo Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġstarting With Non Empty Source Produces No Result (){ ĊĠĠĠĠĠĠĠ Ġsource 1 . add ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcreate Observable (). as Aggregator () ĊĠĠĠĠĠĠĠ Ġresult . data . size ĠshouldBe EqualTo Ġ 0 ĊĠĠĠ Ġ} Ċ } Ċ