/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 Ġ- Ġpresent ĠIn structure , ĠInc . Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠThis Ġprogram Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ Ġ* ĠĠĠĠ Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby Ċ Ġ* ĠĠĠĠ Ġthe ĠFree ĠSoftware ĠFoundation , Ġversion Ġ 3 Ġof Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠThis Ġprogram Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ Ġ* ĠĠĠĠ Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ Ġ* ĠĠĠĠ ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe Ċ Ġ* ĠĠĠĠ ĠGNU ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ċ Ġ* ĠĠĠĠ Ġalong Ġwith Ġthis Ġprogram . Ġ ĠIf Ġnot , Ġsee Ġ< http :// www . gnu . org / licenses />. Ċ Ġ* Ċ Ġ*/ Ċ package Ġcom . in structure . student . test . con fer ences . conference _ list Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġandroidx . test . ext . junit . runners . Android JUnit 4 Ċ import Ġcom . in structure . canvas api 2 . models . Canvas Context Ċ import Ġcom . in structure . canvas api 2 . models . Conference Ċ import Ġcom . in structure . canvas api 2 . models . Course Ċ import Ġcom . in structure . canvas api 2 . utils . Data Result Ċ import Ġcom . in structure . p anda utils . utils . color Ċ import Ġcom . in structure . student . R Ċ import Ġcom . in structure . student . mob ius . con fer ences . conference _ list . Conference ListModel Ċ import Ġcom . in structure . student . mob ius . con fer ences . conference _ list . Conference List Presenter Ċ import Ġcom . in structure . student . mob ius . con fer ences . conference _ list . ui . Conference ListItem ViewState Ċ import Ġcom . in structure . student . mob ius . con fer ences . conference _ list . ui . Conference ListView State Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġjava . util .* Ċ Ċ @ RunWith ( Android JUnit 4 :: class ) Ċ class ĠConference List Presenter Test Ġ: ĠAssert () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcontext : ĠContext ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcanvas Context : ĠCanvas Context ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext Ġ= ĠApplication Provider . getApplicationContext () ĊĠĠĠĠĠĠĠ Ġcanvas Context Ġ= ĠCourse ( id Ġ= Ġ 1 2 3 L ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Returns Ġloading Ġstate Ġif Ġloading `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġmodel Ġwith Ġloading Ġstate ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠConference ListModel ( canvas Context , ĠisLoading Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGenerate Ġstate ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠConference List Presenter . present ( model , Ġcontext ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠStat Ġshould Ġbe Ġan Ġinstance Ġof ĠConference ListView State . Loading ĊĠĠĠĠĠĠĠ Ġassert ( state Ġis ĠConference ListView State . Loading ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Returns Ġsingle Ġfailed Ġitem Ġstate Ġif Ġloading Ġfailed `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġmodel Ġwith Ġfailed Ġresult ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠData Result . Fail () ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠConference ListModel ( canvas Context , Ġlist Result Ġ= Ġresult ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGenerate Ġstate ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠConference List Presenter . present ( model , Ġcontext ) Ġas ĠConference ListView State . Loaded ĊĊĠĠĠĠĠĠĠ Ġ// ĠStat Ġshould Ġbe Ġan Ġinstance Ġof ĠConference ListView State . Loading ĊĠĠĠĠĠĠĠ ĠassertEquals ( state . item States . size , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġassert ( state . item States [ 0 ] Ġis ĠConference ListItem ViewState . Error ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Returns Ġsingle Ġempty Ġitem Ġstate Ġif Ġresults Ġare Ġempty `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġmodel Ġwith Ġempty Ġresult ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠData Result . Success ( emptyList < Conference >()) ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠConference ListModel ( canvas Context , Ġlist Result Ġ= Ġresult ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGenerate Ġstate ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠConference List Presenter . present ( model , Ġcontext ) Ġas ĠConference ListView State . Loaded ĊĊĠĠĠĠĠĠĠ Ġ// ĠStat Ġshould Ġbe Ġan Ġinstance Ġof ĠConference ListView State . Loading ĊĠĠĠĠĠĠĠ ĠassertEquals ( state . item States . size , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġassert ( state . item States [ 0 ] Ġis ĠConference ListItem ViewState . Empty ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Returns Ġonly Ġ' new ' Ġheader Ġand Ġitems Ġif Ġthere Ġare Ġno Ġcon clude d Ġcon fer ences `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġmodel Ġwith Ġa Ġdate less Ġ( i . e . Ġnot - started ) ĠConference ĊĠĠĠĠĠĠĠ Ġval Ġconference Ġ= ĠConference () ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠData Result . Success ( listOf ( conference )) ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠConference ListModel ( canvas Context , Ġlist Result Ġ= Ġresult ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGenerate Ġstate ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠConference List Presenter . present ( model , Ġcontext ) Ġas ĠConference ListView State . Loaded ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Header Ġ= ĠConference ListItem ViewState . Conference Header ( context . getString ( R . string . new Con fer ences )) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Conference Item Ġ= ĠConference List Presenter . map Item State ( canvas Context . color , Ġconference , Ġcontext ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠShould Ġhave Ġtwo Ġlist Ġitems Ġ- Ġone Ġheader Ġand Ġone Ġconference ĊĠĠĠĠĠĠĠ ĠassertEquals ( state . item States . size , Ġ 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( state . item States [ 0 ], Ġexpected Header ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( state . item States [ 1 ], Ġexpected Conference Item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Returns Ġonly Ġ' con clude d ' Ġheader Ġand Ġitems Ġif Ġthere Ġare Ġno Ġnew Ġcon fer ences `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġmodel Ġwith Ġa Ġcon clude d ĠConference ĊĠĠĠĠĠĠĠ Ġval Ġconference Ġ= ĠConference ( started At Ġ= ĠDate (), Ġended At Ġ= ĠDate ()) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠData Result . Success ( listOf ( conference )) ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠConference ListModel ( canvas Context , Ġlist Result Ġ= Ġresult ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGenerate Ġstate ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠConference List Presenter . present ( model , Ġcontext ) Ġas ĠConference ListView State . Loaded ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Header Ġ= ĠConference ListItem ViewState . Conference Header ( context . getString ( R . string . con clude d Con fer ences )) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Conference Item Ġ= ĠConference List Presenter . map Item State ( canvas Context . color , Ġconference , Ġcontext ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠShould Ġhave Ġtwo Ġlist Ġitems Ġ- Ġone Ġheader Ġand Ġone Ġconference ĊĠĠĠĠĠĠĠ ĠassertEquals ( state . item States . size , Ġ 2 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( state . item States [ 0 ], Ġexpected Header ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( state . item States [ 1 ], Ġexpected Conference Item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Correct ly Ġsorts Ġconference Ġitems `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġmodel Ġwith Ġall Ġthree Ġtypes ĊĠĠĠĠĠĠĠ Ġval Ġnot Started Ġ= ĠConference ( started At Ġ= Ġnull , Ġended At Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġcon clude d Ġ= ĠConference ( started At Ġ= ĠDate (), Ġended At Ġ= ĠDate ()) ĊĠĠĠĠĠĠĠ Ġval Ġin Progress Ġ= ĠConference ( started At Ġ= ĠDate (), Ġended At Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠData Result . Success ( listOf ( not Started , Ġcon clude d , Ġin Progress )) ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠConference ListModel ( canvas Context , Ġlist Result Ġ= Ġresult ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGenerate Ġstate ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠConference List Presenter . present ( model , Ġcontext ) Ġas ĠConference ListView State . Loaded ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Header Ġ= ĠConference ListItem ViewState . Conference Header ( context . getString ( R . string . new Con fer ences )) ĊĠĠĠĠĠĠĠ Ġval Ġcon clude d Header Ġ= ĠConference ListItem ViewState . Conference Header ( context . getString ( R . string . con clude d Con fer ences )) ĊĠĠĠĠĠĠĠ Ġval Ġin Progress Item Ġ= ĠConference List Presenter . map Item State ( canvas Context . color , Ġin Progress , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġval Ġnot Started Item Ġ= ĠConference List Presenter . map Item State ( canvas Context . color , Ġnot Started , Ġcontext ) ĊĠĠĠĠĠĠĠ Ġval Ġcon clude d Item Ġ= ĠConference List Presenter . map Item State ( canvas Context . color , Ġcon clude d , Ġcontext ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠShould Ġsort Ġby Ġin - progress , Ġthen Ġnot - started , Ġthen Ġcon clude d , Ġwith Ġappropriate Ġheaders ĊĠĠĠĠĠĠĠ Ġ// ĠShould Ġhave Ġfive Ġlist Ġitems Ġ- Ġtwo Ġheaders Ġand Ġthree Ġcon fer ences ĊĠĠĠĠĠĠĠ ĠassertEquals ( state . item States . size , Ġ 5 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( state . item States [ 0 ], Ġnew Header ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( state . item States [ 1 ], Ġin Progress Item ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( state . item States [ 2 ], Ġnot Started Item ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( state . item States [ 3 ], Ġcon clude d Header ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( state . item States [ 4 ], Ġcon clude d Item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` map Item State Ġreturns Ġcorrect Ġstate Ġfor Ġin - progress Ġconference `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġin - progress Ġconference ĊĠĠĠĠĠĠĠ Ġval Ġconference Ġ= ĠConference ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 2 3 L , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Conference ĠTitle ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Conference ĠDescription ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstarted At Ġ= ĠDate (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġended At Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGenerate Ġstate ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠConference List Presenter . map Item State ( canvas Context . color , Ġconference , Ġcontext ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠExpected Ġstate . ĠNot ably , Ġlabel Ġt int Ġis Ġgreen Ġand Ġis Join able Ġis Ġtrue . ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠConference ListItem ViewState . Conference Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= Ġcanvas Context . color , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ Ġ= Ġconference . title !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle Ġ= Ġconference . description !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġcontext . getString ( R . string . in Progress ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Tint Ġ= Ġcontext . getColor ( R . color . published Green ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconference Id Ġ= Ġconference . id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Join able Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( state , Ġexpected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` map Item State Ġreturns Ġcorrect Ġstate Ġfor Ġnot - started Ġconference `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġin - progress Ġconference ĊĠĠĠĠĠĠĠ Ġval Ġconference Ġ= ĠConference ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 2 3 L , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Conference ĠTitle ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Conference ĠDescription ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstarted At Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġended At Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGenerate Ġstate ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠConference List Presenter . map Item State ( canvas Context . color , Ġconference , Ġcontext ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠExpected Ġstate . ĠNot ably , Ġlabel Ġt int Ġis Ġgrey Ġand Ġis Join able Ġis Ġfalse . ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠConference ListItem ViewState . Conference Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= Ġcanvas Context . color , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ Ġ= Ġconference . title !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle Ġ= Ġconference . description !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġcontext . getString ( R . string . not Started ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Tint Ġ= Ġcontext . getColor ( R . color . default Text Gray ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconference Id Ġ= Ġconference . id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Join able Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( state , Ġexpected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` map Item State Ġreturns Ġcorrect Ġstate Ġfor Ġcon clude d Ġconference `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġin - progress Ġconference ĊĠĠĠĠĠĠĠ Ġval Ġconference Ġ= ĠConference ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 2 3 L , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Conference ĠTitle ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Conference ĠDescription ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstarted At Ġ= ĠDate (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġended At Ġ= ĠCalendar . getInstance (). apply Ġ{ Ġset ( 2 0 0 0 , Ġ 0 , Ġ 1 , Ġ 8 , Ġ 5 7 ) Ġ}. time ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGenerate Ġstate ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠConference List Presenter . map Item State ( canvas Context . color , Ġconference , Ġcontext ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠExpected Ġstate . ĠNot ably , Ġlabel Ġt int Ġis Ġgrey Ġand Ġis Join able Ġis Ġfalse . ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠConference ListItem ViewState . Conference Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= Ġcanvas Context . color , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ Ġ= Ġconference . title !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle Ġ= Ġconference . description !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġ" Con clude d ĠJan Ġ 1 Ġat Ġ 8 : 5 7 ĠAM ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Tint Ġ= Ġcontext . getColor ( R . color . default Text Gray ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconference Id Ġ= Ġconference . id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Join able Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( state , Ġexpected ) ĊĠĠĠ Ġ} Ċ } Ċ