package Ġcom . ole k dia . mvp core . presentation Ċ Ċ import Ġcom . ole k dia . mvp core . Base Test Ċ import Ġcom . ole k dia . mvp core . Task Priority Ċ import Ġcom . ole k dia . mvp core . domain . entries . Task Entry Ċ import Ġcom . ole k dia . mvp core . presentation . present ers . I Input Task Presenter Ċ import Ġcom . ole k dia . mvp core . presentation . present ers . Input Task State Ċ import Ġkotlin . test .* Ċ Ċ class ĠInput Task Presenter Test Ġ: ĠBaseTest () Ġ{ ĊĊĠĠĠ Ġval Ġinput Presenter : ĠI Input Task Presenter Ġ= Ġpresenter Provider . get OrCreate ( I Input Task Presenter . COMPONENT _ ID ) !! ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġpresenter Ġwithout Ġmodifications Ġ- Ġis State Un saved () Ġreturns Ġfalse `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertFalse ( input Presenter . is State Un saved ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check Ġdefault Ġpresenter Ġ- Ġis New Creation () Ġreturns Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertNotNull ( input Presenter . state . init Task ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( input Presenter . state . curr Task ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( input Presenter . state . isNew Creation ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` restore Ġpresenter Ġstate Ġwith Ġexisting Ġtask Ġ- Ġis New Creation () Ġreturns Ġfalse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinput Presenter . on Restore State ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Task State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTask Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Buy Ġsome Ġfood ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTask Priority . MEDIUM , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 2 3 4 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertNotNull ( input Presenter . state . curr Task ) ĊĠĠĠĠĠĠĠ ĠassertFalse ( input Presenter . state . isNew Creation ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` change Ġname Ġ- Ġis State Un saved () Ġreturns Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinput Presenter . on Name Change (" Some Ġname ") ĊĠĠĠĠĠĠĠ ĠassertTrue ( input Presenter . is State Un saved ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` change Ġpriority Ġ- Ġis State Un saved () Ġreturns Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinput Presenter . on Priority Change ( Task Priority . HIGH ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( input Presenter . is State Un saved ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` change Ġsomething , Ġon Apply () Ġ- Ġis State Un saved () Ġreturns Ġfalse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinput Presenter . on Name Change (" Some Ġtask ") ĊĠĠĠĠĠĠĠ Ġinput Presenter . on Priority Change ( Task Priority . HIGH ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( input Presenter . is State Un saved ()) ĊĊĠĠĠĠĠĠĠ Ġinput Presenter . on Apply () ĊĠĠĠĠĠĠĠ ĠassertFalse ( input Presenter . is State Un saved ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` change Ġsomething , Ġdiscard State () Ġ- Ġis State Un saved () Ġreturns Ġfalse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġinput Presenter . on Name Change (" Some Ġtask 2 ") ĊĠĠĠĠĠĠĠ Ġinput Presenter . on Priority Change ( Task Priority . HIGH ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( input Presenter . is State Un saved ()) ĊĊĠĠĠĠĠĠĠ Ġinput Presenter . discard State () ĊĠĠĠĠĠĠĠ ĠassertFalse ( input Presenter . is State Un saved ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` change Ġsomething , Ġstate Ġis Ġvalid `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġ" Some Ġtask " ĊĠĠĠĠĠĠĠ Ġinput Presenter . on Name Change ( name ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( input Presenter . state . curr Task . name , Ġname ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpriority Ġ= ĠTask Priority . MEDIUM ĊĠĠĠĠĠĠĠ Ġinput Presenter . on Priority Change ( priority ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( input Presenter . state . curr Task . priority , Ġpriority ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` edit Ġnew Ġtask , Ġon Apply () Ġ- Ġnew Ġtask Ġis Ġcreated `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġ" Buy Ġfood " ĊĠĠĠĠĠĠĠ Ġinput Presenter . on Name Change ( name ) ĊĠĠĠĠĠĠĠ Ġinput Presenter . on Priority Change ( Task Priority . HIGH ) ĊĠĠĠĠĠĠĠ Ġval Ġtask ToAdd Ġ= Ġinput Presenter . state . curr Task ĊĠĠĠĠĠĠĠ Ġinput Presenter . on Apply () ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Model . state . list !!. any Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name Ġ== Ġtask ToAdd . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġit . priority Ġ== Ġtask ToAdd . priority ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġit . is Completed Ġ== Ġtask ToAdd . is Completed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` edit Ġexisting Ġtask , Ġon Apply () Ġ- Ġtask Ġis Ġsaved Ġto Ġstate `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexisted Task Ġ= ĠTask Entry ( ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 1 1 L , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Buy Ġfood ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTask Priority . LOW , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 2 3 4 L ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġtask Model . add ( exist ed Task ) ĊĊĠĠĠĠĠĠĠ Ġinput Presenter . on Restore State ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Task State ( exist ed Task ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval ĠnewName Ġ= Ġ" Buy Ġlots Ġof Ġfood " ĊĠĠĠĠĠĠĠ Ġinput Presenter . on Name Change ( new Name ) ĊĠĠĠĠĠĠĠ Ġinput Presenter . on Priority Change ( Task Priority . HIGH ) ĊĊĠĠĠĠĠĠĠ Ġinput Presenter . on Apply () ĊĊĠĠĠĠĠĠĠ ĠassertNotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Model . state . list !!. find Ġ{ Ġit . id Ġ== Ġexisted Task . id Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠnewName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Model . state . list !!. find Ġ{ Ġit . id Ġ== Ġexisted Task . id Ġ} !!. name ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }