package Ġcom . ser ge y rod in . electric ity meter . history Ċ Ċ import Ġandroidx . arch . core . executor . testing . Instant Task Executor Rule Ċ import Ġandroidx . lifecycle . Saved State Handle Ċ import Ġcom . ser ge y rod in . electric ity meter . Fake DataSource Ċ import Ġcom . ser ge y rod in . electric ity meter . Main Coroutine Rule Ċ import Ġcom . ser ge y rod in . electric ity meter . database . Meter Data Ċ import Ġcom . ser ge y rod in . electric ity meter . database . Paid Date Ċ import Ġcom . ser ge y rod in . electric ity meter . get Or Await Value Ċ import Ġcom . ser ge y rod in . electric ity meter . utils . Meter Data Calculator Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġorg . hamcrest . Core Matchers Ċ import Ġorg . hamcrest . Core Matchers .` is ` Ċ import Ġorg . junit . Assert . assertThat Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ Ċ class ĠMeter Data History ViewModel Test Ġ{ ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġvar Ġinstant Executor Rule Ġ= ĠInstant Task Executor Rule () ĊĊĠĠĠ Ġ@ Experimental Cor outines Api ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġvar Ġmain Coroutine Rule Ġ= ĠMain Coroutine Rule () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠdataSource : ĠFake DataSource ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsubject : ĠMeter Data History ViewModel ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġinit Subject (){ ĊĠĠĠĠĠĠĠ ĠdataSource Ġ= ĠFake DataSource () ĊĠĠĠĠĠĠĠ Ġsubject Ġ= ĠMeter Data History ViewModel ( dataSource , ĠSaved State Handle ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdisplay Paid Dates Interval By Input Id () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata 1 Ġ= Ġ 1 4 3 1 4 ĊĠĠĠĠĠĠĠ Ġval Ġdate 1 Ġ= Ġ 1 6 0 2 2 1 9 3 7 7 7 9 6 ĊĠĠĠĠĠĠĠ Ġval Ġdata 2 Ġ= Ġ 1 4 5 0 9 ĊĠĠĠĠĠĠĠ Ġval Ġdate 2 Ġ= Ġ 1 6 0 4 1 2 3 7 7 7 8 0 9 ĊĠĠĠĠĠĠĠ Ġval Ġdata 3 Ġ= Ġ 1 4 5 7 9 ĊĠĠĠĠĠĠĠ Ġval Ġdate 3 Ġ= Ġ 1 6 0 6 7 1 5 7 7 7 8 0 9 ĊĠĠĠĠĠĠĠ Ġval Ġdata 4 Ġ= Ġ 1 4 6 3 8 ĊĠĠĠĠĠĠĠ Ġval Ġdate 4 Ġ= Ġ 1 6 0 6 8 0 2 1 7 7 8 0 9 ĊĠĠĠĠĠĠĠ Ġval Ġdata 5 Ġ= Ġ 1 4 9 7 1 ĊĊĠĠĠĠĠĠĠ ĠdataSource . test Insert ( Meter Data ( data 1 , Ġdate Ġ= Ġdate 1 )) ĊĠĠĠĠĠĠĠ ĠdataSource . test Insert ( Meter Data ( data 2 , Ġdate Ġ= Ġdate 2 )) ĊĠĠĠĠĠĠĠ ĠdataSource . test Insert ( Meter Data ( data 3 , Ġdate Ġ= Ġdate 3 )) ĊĠĠĠĠĠĠĠ ĠdataSource . test Insert ( Meter Data ( data 4 , Ġdate Ġ= Ġdate 4 )) ĊĠĠĠĠĠĠĠ ĠdataSource . test Insert ( Meter Data ( data 5 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġpaid Date 1 Ġ= ĠP aid Date ( 1 , Ġdate 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġpaid Date 2 Ġ= ĠP aid Date ( 2 , Ġdate 4 ) ĊĊĠĠĠĠĠĠĠ ĠdataSource . test Insert ( paid Date 1 ) ĊĠĠĠĠĠĠĠ ĠdataSource . test Insert ( paid Date 2 ) ĊĊĠĠĠĠĠĠĠ Ġsubject . start ( paid Date 1 . id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdata To Display Ġ= Ġsubject . calculator . data To Display . get Or Await Value () ĊĠĠĠĠĠĠĠ ĠassertThat ( data To Display . size , Ġ` is `( 3 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( data To Display [ 0 ]. data , Ġ` is `( data 2 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( data To Display [ 1 ]. data , Ġ` is `( data 3 )) ĊĠĠĠĠĠĠĠ ĠassertThat ( data To Display [ 2 ]. data , Ġ` is `( data 4 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdisplay Paid Dates Interval By Input Id Last Element () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata 1 Ġ= Ġ 1 4 3 1 4 ĊĠĠĠĠĠĠĠ Ġval Ġdate 1 Ġ= Ġ 1 6 0 2 2 1 9 3 7 7 7 9 6 ĊĠĠĠĠĠĠĠ Ġval Ġdata 2 Ġ= Ġ 1 4 5 0 9 ĊĠĠĠĠĠĠĠ Ġval Ġdate 2 Ġ= Ġ 1 6 0 4 1 2 3 7 7 7 8 0 9 ĊĠĠĠĠĠĠĠ Ġval Ġdata 3 Ġ= Ġ 1 4 5 7 9 ĊĠĠĠĠĠĠĠ Ġval Ġdate 3 Ġ= Ġ 1 6 0 6 7 1 5 7 7 7 8 0 9 ĊĠĠĠĠĠĠĠ Ġval Ġdata 4 Ġ= Ġ 1 4 6 3 8 ĊĠĠĠĠĠĠĠ Ġval Ġdate 4 Ġ= Ġ 1 6 0 6 8 0 2 1 7 7 8 0 9 ĊĊĠĠĠĠĠĠĠ ĠdataSource . test Insert ( Meter Data ( data 1 , Ġdate Ġ= Ġdate 1 )) ĊĠĠĠĠĠĠĠ ĠdataSource . test Insert ( Meter Data ( data 2 , Ġdate Ġ= Ġdate 2 )) ĊĠĠĠĠĠĠĠ ĠdataSource . test Insert ( Meter Data ( data 3 , Ġdate Ġ= Ġdate 3 )) ĊĠĠĠĠĠĠĠ ĠdataSource . test Insert ( Meter Data ( data 4 , Ġdate Ġ= Ġdate 4 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġpaid Date 1 Ġ= ĠP aid Date ( 1 , Ġdate 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġpaid Date 2 Ġ= ĠP aid Date ( 2 , Ġdate 4 ) ĊĊĠĠĠĠĠĠĠ ĠdataSource . test Insert ( paid Date 1 ) ĊĠĠĠĠĠĠĠ ĠdataSource . test Insert ( paid Date 2 ) ĊĊĠĠĠĠĠĠĠ Ġsubject . start ( paid Date 2 . id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdata To Display Ġ= Ġsubject . calculator . data To Display . get Or Await Value () ĊĠĠĠĠĠĠĠ ĠassertThat ( data To Display [ 0 ]. data , Ġ` is `( data 4 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġone Paid Date _ display Paid Dates Interval By Input Id Last Element () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata 1 Ġ= Ġ 1 4 3 1 4 ĊĠĠĠĠĠĠĠ Ġval Ġdate 1 Ġ= Ġ 1 6 0 2 2 1 9 3 7 7 7 9 6 ĊĠĠĠĠĠĠĠ Ġval Ġdata 2 Ġ= Ġ 1 4 5 0 9 ĊĠĠĠĠĠĠĠ Ġval Ġdate 2 Ġ= Ġ 1 6 0 4 1 2 3 7 7 7 8 0 9 ĊĠĠĠĠĠĠĠ Ġval Ġdata 3 Ġ= Ġ 1 4 5 7 9 ĊĠĠĠĠĠĠĠ Ġval Ġdate 3 Ġ= Ġ 1 6 0 6 7 1 5 7 7 7 8 0 9 ĊĠĠĠĠĠĠĠ Ġval Ġdata 4 Ġ= Ġ 1 4 6 3 8 ĊĠĠĠĠĠĠĠ Ġval Ġdate 4 Ġ= Ġ 1 6 0 6 8 0 2 1 7 7 8 0 9 ĊĊĠĠĠĠĠĠĠ ĠdataSource . test Insert ( Meter Data ( data 1 , Ġdate Ġ= Ġdate 1 )) ĊĠĠĠĠĠĠĠ ĠdataSource . test Insert ( Meter Data ( data 2 , Ġdate Ġ= Ġdate 2 )) ĊĠĠĠĠĠĠĠ ĠdataSource . test Insert ( Meter Data ( data 3 , Ġdate Ġ= Ġdate 3 )) ĊĠĠĠĠĠĠĠ ĠdataSource . test Insert ( Meter Data ( data 4 , Ġdate Ġ= Ġdate 4 )) ĊĊĠĠĠĠĠĠĠ Ġval Ġpaid Date 1 Ġ= ĠP aid Date ( 1 , Ġdate 4 ) ĊĊĠĠĠĠĠĠĠ ĠdataSource . test Insert ( paid Date 1 ) ĊĊĠĠĠĠĠĠĠ Ġsubject . start ( paid Date 1 . id ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdata To Display Ġ= Ġsubject . calculator . data To Display . get Or Await Value () ĊĠĠĠĠĠĠĠ ĠassertThat ( data To Display [ 0 ]. data , Ġ` is `( data 4 )) ĊĠĠĠ Ġ} Ċ }