package Ġcom . air bnb . mv rx . tod om v rx Ċ Ċ import Ġcom . air bnb . mv rx . Fail Ċ import Ġcom . air bnb . mv rx . Success Ċ import Ġcom . air bnb . mv rx . test . Mv Rx Test Rule Ċ import Ġcom . air bnb . mv rx . tod om v rx . data . Task Ċ import Ġcom . air bnb . mv rx . tod om v rx . data . source . Tasks DataSource Ċ import Ġcom . air bnb . mv rx . with State Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . wh enever Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . subjects . Single Subject Ċ import Ġorg . junit . Assert .* Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Class Rule Ċ import Ġorg . junit . Test Ċ Ċ class ĠTasks ViewModel Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠdataSource : ĠTasks DataSource Ġ= Ġmock () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠTasks ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtasks : ĠList < Task > ĊĊĠĠĠ Ġ@ Before Ġfun Ġsetup Tasks List () Ġ{ ĊĠĠĠĠĠĠĠ Ġtasks Ġ= ĠlistOf ( task 1 , Ġtask 2 , Ġtask 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġrefresh Tasks _ success () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġuse Ġsubject Ġto Ġbe Ġable Ġto Ġverify Ġthe Ġloading Ġstate Ġbefore Ġany Ġemission s ĊĠĠĠĠĠĠĠ Ġval Ġtasks Subject Ġ= ĠSingle Subject . create < List < Task >>() ĊĠĠĠĠĠĠĠ Ġwhenever ( dataSource . get Tasks ()). thenReturn ( tasks Subject ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġgiven Ġthe Ġview model Ġwith Ġdefault Ġstate ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠTasks ViewModel ( Tasks State (), ĠlistOf ( dataSource )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthat Ġtasks Ġwere Ġrequested Ġfrom Ġthe Ġdata Ġsource ĊĠĠĠĠĠĠĠ Ġverify ( dataSource ). get Tasks () ĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthat Ġloading Ġstate Ġhas Ġchanged Ġto Ġtrue Ġupon Ġsubscription ĊĠĠĠĠĠĠĠ Ġwith State ( viewModel ) Ġ{ ĠassertEquals ( it . isLoading , Ġtrue ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġnew Ġemission Ġfrom Ġthe Ġdata Ġsource Ġhappened ĊĠĠĠĠĠĠĠ Ġtasks Subject . on Success ( tasks ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthat Ġtasks Ġrequest Ġwas Ġsuccessful Ġand Ġthe Ġtasks Ġlist Ġis Ġpresent ĊĠĠĠĠĠĠĠ Ġwith State ( viewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( it . task Request Ġis ĠSuccess ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks , Ġtasks ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( it . last Edited Task ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthat Ġloading Ġstate Ġhas Ġchanged Ġto Ġfalse Ġafter Ġthe Ġstream Ġis Ġcompleted ĊĠĠĠĠĠĠĠ Ġwith State ( viewModel ) Ġ{ ĠassertEquals ( it . isLoading , Ġfalse ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġrefresh Tasks _ failure () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhenever ( dataSource . get Tasks ()). thenReturn ( Single . error ( Exception (" Server Ġnot Ġfound "))) ĊĊĠĠĠĠĠĠĠ Ġ// Ġgiven Ġthe Ġview model Ġwith Ġdefault Ġstate ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠTasks ViewModel ( Tasks State (), ĠlistOf ( dataSource )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthat Ġtasks Ġwere Ġrequested Ġfrom Ġthe Ġdata Ġsource ĊĠĠĠĠĠĠĠ Ġverify ( dataSource ). get Tasks () ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthe Ġtasks Ġrequest Ġfailed Ġand Ġthe Ġtasks Ġlist Ġis Ġempty ĊĠĠĠĠĠĠĠ Ġwith State ( viewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( it . task Request Ġis ĠFail ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks , Ġempty List < Task >()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġupsert Task _ insert () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġmake Ġ` get Tasks ` Ġemit Ġnothing Ġto Ġuse Ġtasks Ġfrom Ġthe Ġinitial Ġstate ĊĠĠĠĠĠĠĠ Ġwhenever ( dataSource . get Tasks ()). thenReturn ( Single . never ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġgiven Ġthe Ġview model Ġwith Ġsome Ġtasks ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠTasks ViewModel ( Tasks State ( tasks Ġ= Ġtasks ), ĠlistOf ( dataSource )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthe Ġinitial Ġstate ĊĠĠĠĠĠĠĠ Ġwith State ( viewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks . size , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( it . last Edited Task ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġinsert Ġa Ġnew Ġtask ĊĠĠĠĠĠĠĠ ĠviewModel . upsert Task ( task 4 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthe Ġlast Ġedited Ġtask Ġis Ġthe Ġnew Ġone Ġand Ġthe Ġtasks Ġlist Ġis Ġupdated ĊĠĠĠĠĠĠĠ Ġwith State ( viewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks . size , Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks . last (), Ġtask 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . last Edited Task , Ġtask 4 . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġa Ġnew Ġtask Ġhas Ġinserted Ġto Ġthe Ġdata Ġsource ĊĠĠĠĠĠĠĠ Ġverify ( dataSource ). upsert Task ( task 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġupsert Task _ update () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġmake Ġ` get Tasks ` Ġemit Ġnothing Ġto Ġuse Ġtasks Ġfrom Ġthe Ġinitial Ġstate ĊĠĠĠĠĠĠĠ Ġwhenever ( dataSource . get Tasks ()). thenReturn ( Single . never ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġgiven Ġthe Ġview model Ġwith Ġsome Ġtasks ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠTasks ViewModel ( Tasks State ( tasks Ġ= Ġtasks ), ĠlistOf ( dataSource )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthe Ġinitial Ġstate ĊĠĠĠĠĠĠĠ Ġwith State ( viewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks . size , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( it . last Edited Task ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġupdate Ġexisting Ġtask ĊĠĠĠĠĠĠĠ Ġval Ġupdated Task Ġ= Ġtask 2 . copy ( title Ġ= Ġ" title 2 _ changed ") ĊĠĠĠĠĠĠĠ ĠviewModel . upsert Task ( updated Task ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthe Ġlast Ġedited Ġtask Ġis Ġthe Ġupdated Ġone Ġand Ġthe Ġtasks Ġlist Ġis Ġupdated ĊĠĠĠĠĠĠĠ Ġwith State ( viewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks . size , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks . find Ġ{ Ġtask Ġ-> Ġtask . id Ġ== Ġupdated Task . id Ġ} !!. title , Ġupdated Task . title ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . last Edited Task , Ġupdated Task . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthe Ġexisting Ġtask Ġhas Ġupdated Ġin Ġthe Ġdata Ġsource ĊĠĠĠĠĠĠĠ Ġverify ( dataSource ). upsert Task ( updated Task ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġset Complete () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġmake Ġ` get Tasks ` Ġemit Ġnothing Ġto Ġuse Ġtasks Ġfrom Ġthe Ġinitial Ġstate ĊĠĠĠĠĠĠĠ Ġwhenever ( dataSource . get Tasks ()). thenReturn ( Single . never ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġgiven Ġthe Ġview model Ġwith Ġsome Ġtasks ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠTasks ViewModel ( Tasks State ( tasks Ġ= Ġtasks ), ĠlistOf ( dataSource )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthe Ġinitial Ġstate ĊĠĠĠĠĠĠĠ Ġwith State ( viewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks . count Ġ{ Ġtask Ġ-> Ġtask . complete Ġ}, Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġset Ġcomplete Ġfor Ġid Ġwhich Ġis Ġnot Ġyet Ġcompleted ĊĠĠĠĠĠĠĠ ĠviewModel . set Complete (" task _ 1 ", Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthe Ġlast Ġedited Ġtask Ġis Ġthe Ġcompleted Ġone Ġand Ġthe Ġtasks Ġlist Ġis Ġupdated ĊĠĠĠĠĠĠĠ Ġwith State ( viewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( it . tasks . find Ġ{ Ġtask Ġ-> Ġtask . id Ġ== Ġtask 1 . id Ġ} !!. complete ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks . count Ġ{ Ġtask Ġ-> Ġtask . complete Ġ}, Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . last Edited Task , Ġtask 1 . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthe Ġtask Ġwas Ġset Ġto Ġcomplete Ġon Ġthe Ġdata Ġsource ĊĠĠĠĠĠĠĠ Ġverify ( dataSource ). set Complete (" task _ 1 ", Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġset Complete _ no Task In List () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġmake Ġ` get Tasks ` Ġemit Ġnothing Ġto Ġuse Ġtasks Ġfrom Ġthe Ġinitial Ġstate ĊĠĠĠĠĠĠĠ Ġwhenever ( dataSource . get Tasks ()). thenReturn ( Single . never ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġgiven Ġthe Ġview model Ġwith Ġsome Ġtasks ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠTasks ViewModel ( Tasks State ( tasks Ġ= Ġtasks ), ĠlistOf ( dataSource )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthe Ġinitial Ġstate ĊĠĠĠĠĠĠĠ Ġwith State ( viewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks . count Ġ{ Ġtask Ġ-> Ġtask . complete Ġ}, Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġset Ġcomplete Ġfor Ġid Ġwhich Ġis Ġnot Ġpresented Ġin Ġtasks Ġlist ĊĠĠĠĠĠĠĠ ĠviewModel . set Complete (" task _ 5 ", Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġstate Ġstays Ġthe Ġsame ĊĠĠĠĠĠĠĠ Ġwith State ( viewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks . count Ġ{ Ġtask Ġ-> Ġtask . complete Ġ}, Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( it . last Edited Task ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthe Ġtask Ġwas Ġset Ġto Ġcomplete Ġon Ġthe Ġdata Ġsource ĊĠĠĠĠĠĠĠ Ġverify ( dataSource ). set Complete (" task _ 5 ", Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġset Complete _ task Is Already Completed () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġmake Ġ` get Tasks ` Ġemit Ġnothing Ġto Ġuse Ġtasks Ġfrom Ġthe Ġinitial Ġstate ĊĠĠĠĠĠĠĠ Ġwhenever ( dataSource . get Tasks ()). thenReturn ( Single . never ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġgiven Ġthe Ġview model Ġwith Ġsome Ġtasks ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠTasks ViewModel ( Tasks State ( tasks Ġ= Ġtasks ), ĠlistOf ( dataSource )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthe Ġinitial Ġstate ĊĠĠĠĠĠĠĠ Ġwith State ( viewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks . count Ġ{ Ġtask Ġ-> Ġtask . complete Ġ}, Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġset Ġcomplete Ġfor Ġid Ġwhich Ġis Ġalready Ġcompleted ĊĠĠĠĠĠĠĠ ĠviewModel . set Complete (" task _ 2 ", Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġstate Ġstays Ġthe Ġsame ĊĠĠĠĠĠĠĠ Ġwith State ( viewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks . count Ġ{ Ġtask Ġ-> Ġtask . complete Ġ}, Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( it . last Edited Task ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthe Ġtask Ġwas Ġset Ġto Ġcomplete Ġon Ġthe Ġdata Ġsource ĊĠĠĠĠĠĠĠ Ġverify ( dataSource ). set Complete (" task _ 2 ", Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġclear Completed Tasks () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġmake Ġ` get Tasks ` Ġemit Ġnothing Ġto Ġuse Ġtasks Ġfrom Ġthe Ġinitial Ġstate ĊĠĠĠĠĠĠĠ Ġwhenever ( dataSource . get Tasks ()). thenReturn ( Single . never ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġgiven Ġthe Ġview model Ġwith Ġsome Ġtasks ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠTasks ViewModel ( Tasks State ( tasks Ġ= Ġtasks ), ĠlistOf ( dataSource )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthe Ġinitial Ġstate ĊĠĠĠĠĠĠĠ Ġwith State ( viewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks . size , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks . count Ġ{ Ġtask Ġ-> Ġtask . complete Ġ}, Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġclear Ġcompleted Ġtasks ĊĠĠĠĠĠĠĠ ĠviewModel . clear Completed Tasks () ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthe Ġlast Ġedited Ġtask Ġis Ġnull Ġand Ġthe Ġtasks Ġlist Ġdoes Ġnot Ġcontain Ġcompleted Ġtasks ĊĠĠĠĠĠĠĠ Ġwith State ( viewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks . size , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks . count Ġ{ Ġtask Ġ-> Ġtask . complete Ġ}, Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( it . last Edited Task ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthe Ġdata Ġsource Ġhas Ġcleared Ġcompleted Ġtasks ĊĠĠĠĠĠĠĠ Ġverify ( dataSource ). clear Completed Tasks () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test Ġfun Ġdelete Task () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġmake Ġ` get Tasks ` Ġemit Ġnothing Ġto Ġuse Ġtasks Ġfrom Ġthe Ġinitial Ġstate ĊĠĠĠĠĠĠĠ Ġwhenever ( dataSource . get Tasks ()). thenReturn ( Single . never ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġgiven Ġthe Ġview model Ġwith Ġsome Ġtasks ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠTasks ViewModel ( Tasks State ( tasks Ġ= Ġtasks ), ĠlistOf ( dataSource )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthe Ġinitial Ġstate ĊĠĠĠĠĠĠĠ Ġwith State ( viewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks . size , Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNull ( it . last Edited Task ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġdelete Ġa Ġtask ĊĠĠĠĠĠĠĠ ĠviewModel . delete Task ( task 2 . id ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġthe Ġlast Ġedited Ġtask Ġis Ġthe Ġdeleted Ġone Ġand Ġthe Ġtasks Ġlist Ġis Ġupdated ĊĠĠĠĠĠĠĠ Ġwith State ( viewModel ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . tasks . size , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( task 2 Ġin Ġit . tasks ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( it . last Edited Task , Ġtask 2 . id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġverify Ġa Ġtask Ġhas Ġdeleted Ġin Ġthe Ġdata Ġsource Ġby Ġthe Ġgiven Ġid ĊĠĠĠĠĠĠĠ Ġverify ( dataSource ). delete Task ( task 2 . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtask 1 Ġ= ĠTask ( title Ġ= Ġ" title 1 ", Ġdescription Ġ= Ġ" description 1 ", Ġid Ġ= Ġ" task _ 1 ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtask 2 Ġ= ĠTask ( title Ġ= Ġ" title 2 ", Ġdescription Ġ= Ġ" description 2 ", Ġid Ġ= Ġ" task _ 2 ", Ġcomplete Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtask 3 Ġ= ĠTask ( title Ġ= Ġ" title 3 ", Ġdescription Ġ= Ġ" description 3 ", Ġid Ġ= Ġ" task _ 3 ", Ġcomplete Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtask 4 Ġ= ĠTask ( title Ġ= Ġ" title 4 ", Ġdescription Ġ= Ġ" description 4 ", Ġid Ġ= Ġ" task _ 4 ") ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġ@ Class Rule ĊĠĠĠĠĠĠĠ Ġval Ġmv rx Test Rule Ġ= ĠM v Rx Test Rule () ĊĠĠĠ Ġ} Ċ }