package Ġme . a art ik ov . ses ame . property Ċ Ċ import Ġme . a art ik ov . ses ame . property . utils . Test Property Host Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Test Ċ Ċ class ĠA utor un Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` trigger Ġautor un Ġfrom Ġinitial Ġstate `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠ Ġval Ġproperty Host Ġ= Ġobject Ġ: ĠTest Property Host () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate 1 Ġby Ġstate ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate 2 Ġby Ġstate ( 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith ( property Host ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġautor un (:: state 1 , Ġ:: state 2 ) Ġ{ Ġval 1 , Ġval 2 Ġ-> Ġvalues . add ( val 1 Ġ+ Ġval 2 ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( listOf ( 3 ), Ġvalues ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` trigger Ġautor un Ġafter Ġstate Ġchanged `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠ Ġval Ġproperty Host Ġ= Ġobject Ġ: ĠTest Property Host () Ġ{ Ġvar Ġstate Ġby Ġstate ( 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġwith ( property Host ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġautor un (:: state ) Ġ{ Ġvalues . add ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrepeat ( 3 ) Ġ{ Ġproperty Host . state ++ Ġ} ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( listOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 ), Ġvalues ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` trigger Ġautor un Ġafter Ġtwo Ġstates Ġchanged `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠ Ġval Ġproperty Host Ġ= Ġobject Ġ: ĠTest Property Host () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstate 1 Ġby Ġstate ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstate 2 Ġby Ġstate ( 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith ( property Host ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġautor un (:: state 1 , Ġ:: state 2 ) Ġ{ Ġval 1 , Ġval 2 Ġ-> Ġvalues . add ( val 1 Ġ+ Ġval 2 ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrepeat ( 3 ) Ġ{ Ġproperty Host . state 1 ++ Ġ} ĊĠĠĠĠĠĠĠ Ġrepeat ( 2 ) Ġ{ Ġproperty Host . state 2 ++ Ġ} ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( listOf ( 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 ), Ġvalues ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` trigger Ġautor un Ġafter Ġthree Ġstates Ġchanged `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠ Ġval Ġproperty Host Ġ= Ġobject Ġ: ĠTest Property Host () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstate 1 Ġby Ġstate ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstate 2 Ġby Ġstate ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstate 3 Ġby Ġstate ( 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith ( property Host ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġautor un (:: state 1 , Ġ:: state 2 , Ġ:: state 3 ) Ġ{ Ġval 1 , Ġval 2 , Ġval 3 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . add ( val 1 Ġ+ Ġval 2 Ġ+ Ġval 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrepeat ( 3 ) Ġ{ Ġproperty Host . state 1 ++ Ġ} ĊĠĠĠĠĠĠĠ Ġrepeat ( 2 ) Ġ{ Ġproperty Host . state 2 ++ Ġ} ĊĠĠĠĠĠĠĠ Ġrepeat ( 1 ) Ġ{ Ġproperty Host . state 3 ++ Ġ} ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( listOf ( 6 , Ġ 7 , Ġ 8 , Ġ 9 , Ġ 1 0 , Ġ 1 1 , Ġ 1 2 ), Ġvalues ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` trigger Ġautor un Ġafter Ġcomputed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠ Ġval Ġproperty Host Ġ= Ġobject Ġ: ĠTest Property Host () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstate Ġby Ġstate ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomputed Value Ġby Ġcomputed (:: state ) Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwith ( property Host ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġautor un (:: computed Value ) Ġ{ Ġvalues . add ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrepeat ( 3 ) Ġ{ Ġproperty Host . state ++ Ġ} ĊĊĠĠĠĠĠĠĠ ĠAssert . assertEquals ( listOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 ), Ġvalues ) ĊĠĠĠ Ġ} Ċ }