package Ġcom . av ito . instrumentation . suite . filter Ċ Ċ import Ġcom . av ito . instrumentation . configuration . Impact Analysis Policy Ċ import Ġcom . av ito . instrumentation . create Stub Ċ import Ġcom . av ito . instrumentation . suite . filter . Tests Filter . Result . Included Ċ import Ġcom . google . common . truth . Truth . assert With Message Ċ import Ġcom . google . common . truth . isInstanceOf Ċ import Ġcom . google . common . truth . isNot InstanceOf Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ internal Ġclass ĠImp act Analysis Filter Factory Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġtest 1 Ġ= Ġ" com . test . Test 1 " ĊĠĠĠ Ġprivate Ġval Ġtest 2 Ġ= Ġ" com . test . Test 2 " ĊĠĠĠ Ġprivate Ġval Ġtest 3 Ġ= Ġ" com . test . Test 3 " ĊĠĠĠ Ġprivate Ġval Ġtest 4 Ġ= Ġ" com . test . Test 4 " ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` no Impact Analysis Ġ- Ġfilters Ġnothing `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠFilter Factory Factory . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimpact Analysis Result Ġ= ĠImp act Analysis Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy Ġ= ĠImp act Analysis Policy . Off , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaffected Tests Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Tests Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodified Tests Ġ= Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). create Filter () ĊĊĠĠĠĠĠĠĠ Ġfilter . assert Included ( test 1 , Ġtest 2 , Ġtest 3 , Ġtest 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` no Impact Analysis Ġ- Ġfilters Ġnothing Ġ- Ġeven Ġif Ġimpact Ġprovided `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠFilter Factory Factory . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimpact Analysis Result Ġ= ĠImp act Analysis Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy Ġ= ĠImp act Analysis Policy . Off , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaffected Tests Ġ= ĠlistOf ( test 1 , Ġtest 2 , Ġtest 3 , Ġtest 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Tests Ġ= ĠlistOf ( test 1 , Ġtest 2 , Ġtest 3 , Ġtest 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodified Tests Ġ= ĠlistOf ( test 1 , Ġtest 2 , Ġtest 3 , Ġtest 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). create Filter () ĊĊĠĠĠĠĠĠĠ Ġfilter . assert Included ( test 1 , Ġtest 2 , Ġtest 3 , Ġtest 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` run Affected Tests Ġ- Ġfilters Ġout Ġnew Ġand Ġmodified `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠFilter Factory Factory . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimpact Analysis Result Ġ= ĠImp act Analysis Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy Ġ= ĠImp act Analysis Policy . On . Run Affected Tests , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaffected Tests Ġ= ĠlistOf ( test 1 , Ġtest 2 , Ġtest 3 , Ġtest 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Tests Ġ= ĠlistOf ( test 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodified Tests Ġ= ĠlistOf ( test 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). create Filter () ĊĊĠĠĠĠĠĠĠ Ġfilter . assert Included ( test 1 , Ġtest 4 ) ĊĠĠĠĠĠĠĠ Ġfilter . assertNot Included ( test 2 , Ġtest 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` run Affected Tests Ġ- Ġfilters Ġnothing Ġ- Ġno Ġadded Ġor Ġmodified `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠFilter Factory Factory . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimpact Analysis Result Ġ= ĠImp act Analysis Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy Ġ= ĠImp act Analysis Policy . On . Run Affected Tests , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaffected Tests Ġ= ĠlistOf ( test 1 , Ġtest 2 , Ġtest 3 , Ġtest 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Tests Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodified Tests Ġ= Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). create Filter () ĊĊĠĠĠĠĠĠĠ Ġfilter . assert Included ( test 1 , Ġtest 2 , Ġtest 3 , Ġtest 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` run Affected Tests Ġ- Ġfilters Ġnothing Ġ- Ġno Ġaffected `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠFilter Factory Factory . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimpact Analysis Result Ġ= ĠImp act Analysis Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy Ġ= ĠImp act Analysis Policy . On . Run Affected Tests , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaffected Tests Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Tests Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodified Tests Ġ= Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). create Filter () ĊĊĠĠĠĠĠĠĠ Ġfilter . assertNot Included ( test 1 , Ġtest 2 , Ġtest 3 , Ġtest 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` run Affected Tests Ġ- Ġfilters Ġnothing Ġ- Ġnew Ġand Ġmodified Ġprovided `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠFilter Factory Factory . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimpact Analysis Result Ġ= ĠImp act Analysis Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy Ġ= ĠImp act Analysis Policy . On . Run Affected Tests , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaffected Tests Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Tests Ġ= ĠlistOf ( test 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodified Tests Ġ= ĠlistOf ( test 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). create Filter () ĊĊĠĠĠĠĠĠĠ Ġfilter . assertNot Included ( test 1 , Ġtest 2 , Ġtest 3 , Ġtest 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` run New Tests Ġ- Ġfilters Ġout Ġall Ġ- Ġaffected Ġprovided `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠFilter Factory Factory . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimpact Analysis Result Ġ= ĠImp act Analysis Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy Ġ= ĠImp act Analysis Policy . On . Run New Tests , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaffected Tests Ġ= ĠlistOf ( test 1 , Ġtest 2 , Ġtest 3 , Ġtest 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Tests Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodified Tests Ġ= Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). create Filter () ĊĊĠĠĠĠĠĠĠ Ġfilter . assertNot Included ( test 1 , Ġtest 2 , Ġtest 3 , Ġtest 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` run New Tests Ġ- Ġfilters Ġin Ġonly Ġadded Ġ- Ġaffected Ġprovided `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠFilter Factory Factory . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimpact Analysis Result Ġ= ĠImp act Analysis Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy Ġ= ĠImp act Analysis Policy . On . Run New Tests , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaffected Tests Ġ= ĠlistOf ( test 1 , Ġtest 2 , Ġtest 3 , Ġtest 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Tests Ġ= ĠlistOf ( test 2 , Ġtest 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodified Tests Ġ= Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). create Filter () ĊĊĠĠĠĠĠĠĠ Ġfilter . assert Included ( test 2 , Ġtest 4 ) ĊĠĠĠĠĠĠĠ Ġfilter . assertNot Included ( test 1 , Ġtest 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` run New Tests Ġ- Ġfilters Ġin Ġonly Ġadded Ġ- Ġaffected Ġand Ġmodified Ġprovided `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠFilter Factory Factory . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimpact Analysis Result Ġ= ĠImp act Analysis Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy Ġ= ĠImp act Analysis Policy . On . Run New Tests , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaffected Tests Ġ= ĠlistOf ( test 1 , Ġtest 2 , Ġtest 3 , Ġtest 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Tests Ġ= ĠlistOf ( test 2 , Ġtest 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodified Tests Ġ= ĠlistOf ( test 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). create Filter () ĊĊĠĠĠĠĠĠĠ Ġfilter . assert Included ( test 2 , Ġtest 4 ) ĊĠĠĠĠĠĠĠ Ġfilter . assertNot Included ( test 1 , Ġtest 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` run Modified Tests Ġ- Ġfilters Ġin Ġonly Ġmodified Ġ- Ġaffected Ġprovided `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠFilter Factory Factory . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimpact Analysis Result Ġ= ĠImp act Analysis Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy Ġ= ĠImp act Analysis Policy . On . Run Modified Tests , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaffected Tests Ġ= ĠlistOf ( test 1 , Ġtest 2 , Ġtest 3 , Ġtest 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Tests Ġ= Ġempty List (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodified Tests Ġ= ĠlistOf ( test 1 , Ġtest 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). create Filter () ĊĊĠĠĠĠĠĠĠ Ġfilter . assert Included ( test 1 , Ġtest 3 ) ĊĠĠĠĠĠĠĠ Ġfilter . assertNot Included ( test 2 , Ġtest 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` run Modified Tests Ġ- Ġfilters Ġout Ġall Ġ- Ġno Ġmodified Ġprovided `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠFilter Factory Factory . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimpact Analysis Result Ġ= ĠImp act Analysis Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpolicy Ġ= ĠImp act Analysis Policy . On . Run Modified Tests , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaffected Tests Ġ= ĠlistOf ( test 1 , Ġtest 2 , Ġtest 3 , Ġtest 4 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadded Tests Ġ= ĠlistOf ( test 1 , Ġtest 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodified Tests Ġ= Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). create Filter () ĊĊĠĠĠĠĠĠĠ Ġfilter . assertNot Included ( test 1 , Ġtest 2 , Ġtest 3 , Ġtest 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠTests Filter . assert Included ( var arg Ġname : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġname . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġfilter ( Tests Filter . Test . create Stub ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert With Message ( it ). that ( result ). isInstanceOf < Included >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠTests Filter . assertNot Included ( var arg Ġname : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġname . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġfilter ( Tests Filter . Test . create Stub ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert With Message ( it ). that ( result ). isNot InstanceOf < Included >() ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ