package Ġcom . sin ch . verification . flash call Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . os . Build Ċ import Ġandroid . provider . Call Log Ċ import Ġandroidx . test . core . app . Application Provider Ċ import Ġcom . sin ch . verification . flash call . Call History . history Num 1 Ċ import Ġcom . sin ch . verification . flash call . Call History . history Num 2 Ċ import Ġcom . sin ch . verification . flash call . Call History . history Num 3 Ċ import Ġcom . sin ch . verification . flash call . verification . call history . Content Provider Call History Reader Ċ import Ġorg . junit . Assert . assertTrue Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . ro bo lectric . Ro bo lectric TestRunner Ċ import Ġorg . ro bo lectric . Shadow s Ċ import Ġorg . ro bo lectric . annotation . Config Ċ import Ġorg . ro bo lectric . f akes . Ro bo Cursor Ċ import Ġorg . ro bo lectric . shadow s . Shadow Content Resolver Ċ import Ġjava . util .* ĊĊ Ċ @ RunWith ( ĊĠĠĠ ĠRo bo lectric TestRunner :: class Ċ ) Ċ @ Config ( sdk Ġ= Ġ[ Build . VERSION _ CODES . O _ MR 1 ]) Ċ class ĠContent Provider Call History Tests Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcontext Ġ= ĠApplication Provider . getApplicationContext < Application >() ĊĠĠĠ Ġprivate Ġval Ġcontent Resolver Shadow Ġ= ĊĠĠĠĠĠĠĠ ĠShadow s . shadow Of ( context . content Resolver ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġinsert Mock ed History ( shadow Resolver : ĠShadow Content Resolver , Ġinitial TimeStamp : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRo bo Cursor (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Results ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial TimeStamp Ġ- Ġ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhistory Num 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall Log . Calls . OUT GO ING _ TYPE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial TimeStamp Ġ- Ġ 2 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhistory Num 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall Log . Calls . MIS SED _ TYPE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial TimeStamp Ġ- Ġ 2 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhistory Num 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCall Log . Calls . IN COM ING _ TYPE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Column Names ( listOf ( Call Log . Calls . DATE , ĠCall Log . Calls . NUMBER , ĠCall Log . Calls . TYPE )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ Ġshadow Resolver . set Cursor ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Reader Find s Correct Numbers () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinitial Date Ġ= ĠDate () ĊĠĠĠĠĠĠĠ Ġinsert Mock ed History ( content Resolver Shadow , Ġinitial Date . time ) ĊĠĠĠĠĠĠĠ Ġval Ġfound Calls Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContent Provider Call History Reader ( context . content Resolver ). read Incoming Calls ( initial Date . time Ġ- Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( listOf ( history Num 2 , Ġhistory Num 3 ) Ġ== Ġfound Calls ) ĊĠĠĠ Ġ} Ċ Ċ }