package Ġio . temp o . internal . domain . use Cases Ċ Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . temp o . Time Source Cache Ċ import Ġio . temp o . internal . domain . Device Clock s Ċ import Ġorg . spe k framework . spe k 2 . Spe k Ċ import Ġorg . spe k framework . spe k 2 . style . specification . describe Ċ import Ġkotlin . test . assertFalse Ċ import Ġkotlin . test . assertTrue Ċ Ċ internal Ġobject ĠCheck Cache Validity UCT ests Ġ: ĠSpe k ({ ĊĠĠĠ Ġval Ġbase Cache Ġ= ĠTime Source Cache ( ĊĠĠĠĠĠĠĠ Ġtime Source Id Ġ= Ġ" id ", ĊĠĠĠĠĠĠĠ Ġtime Source Priority Ġ= Ġ 1 0 , ĊĠĠĠĠĠĠĠ Ġestimated Boot Time Ġ= Ġ 9 _ 0 0 0 L , ĊĠĠĠĠĠĠĠ Ġrequest Device U ptime Ġ= Ġ 6 0 L , ĊĠĠĠĠĠĠĠ Ġrequest Time Ġ= Ġ 1 0 0 L , ĊĠĠĠĠĠĠĠ Ġboot Count Ġ= Ġ 1 0 ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun ĠTime Source Cache . isValid ( clock Has Boot Count : ĠBoolean Ġ= Ġtrue ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclock Ġ= Ġmock k < Device Clock s > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġboot Count () Ġ} Ġanswers Ġ{ Ġif Ġ( clock Has Boot Count ) Ġ 1 0 Ġelse Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ{ Ġestimated Boot Time () Ġ} Ġreturns Ġ 1 0 _ 0 0 0 L ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠCheck Cache Validity UC ( clock )( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" A Ġvalid Ġcache Ġwith Ġboot Ġcount ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalid Cache Ġ= Ġbase Cache . copy () ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġtrue ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( valid Cache . isValid ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" An Ġinvalid Ġcache Ġwith Ġboot Ġcount ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinvalid Cache Ġ= Ġbase Cache . copy ( boot Count Ġ= Ġ 9 ) ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġfalse ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( invalid Cache . isValid ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" A Ġvalid Ġcache Ġwithout Ġboot Ġcount ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalid Cache Ġ= Ġbase Cache . copy ( boot Count Ġ= Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġtrue ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( valid Cache . isValid ( clock Has Boot Count Ġ= Ġfalse )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" An Ġinvalid Ġcache Ġwithout Ġboot Ġcount ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinvalid Cache Ġ= Ġbase Cache . copy ( boot Count Ġ= Ġnull , Ġestimated Boot Time Ġ= Ġ 4 _ 0 0 0 L ) ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn Ġfalse ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertFalse ( invalid Cache . isValid ( clock Has Boot Count Ġ= Ġfalse )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ })