package Ġuk . n hs . n hs x . covid 1 9 . android . app . test ordering . link test result Ċ Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . mock k Static Ċ import Ġorg . junit . Assert . assertFalse Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . remote . data . Duration Days Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . remote . data . V iro logy Test Kit Type Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . remote . data . V iro logy Test Kit Type . LAB _ RESULT Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . remote . data . V iro logy Test Kit Type . R AP ID _ RESULT Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . remote . data . V iro logy TestResult Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . remote . data . V iro logy TestResult . NEGATIVE Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . remote . data . V iro logy TestResult . POSITIVE Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . remote . data . V iro logy TestResult . VOID Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . state . Isolation StateMachine Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . state . State . Default Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . state . State . Isolation Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . state . State . Isolation . Contact Case Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . state . State . Isolation . Index Case Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . test ordering . Received TestResult Ċ import Ġuk . n hs . n hs x . covid 1 9 . android . app . test ordering . Re levant TestResult Provider Ċ import Ġjava . time . Clock Ċ import Ġjava . time . Instant Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . Zone Offset Ċ import Ġjava . time . temporal . Ch rono Unit . DAYS Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠLink TestResult On setDate Needed Checker Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġisolation StateMachine Ġ= Ġmock k < Isolation StateMachine >() ĊĠĠĠ Ġprivate Ġval Ġrelevant TestResult Provider Ġ= Ġmock k < Re levant TestResult Provider >() ĊĊĠĠĠ Ġprivate Ġval Ġfixed Clock Ġ= ĠClock . fixed ( Instant . parse (" 2 0 2 0 - 0 5 - 2 1 T 1 0 : 0 0 : 0 0 Z "), ĠZone Offset . UTC ) ĊĊĠĠĠ Ġprivate Ġval Ġtest Subject Ġ= ĠLink TestResult On setDate Needed Checker ( ĊĠĠĠĠĠĠĠ Ġisolation StateMachine , ĊĠĠĠĠĠĠĠ Ġrelevant TestResult Provider ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ// ĠAC 1 Ġ- Ġtest Ġis ĠLAB _ RESULT , Ġpositive Ġand Ġdoes Ġnot Ġrequire Ġconfirmation ĊĠĠĠ Ġ// ĠAC 2 Ġ- Ġnot Ġconsidered Ġsy mptom atic ĊĠĠĠ Ġ// ĠAC 3 Ġ- Ġmust Ġnot Ġhave Ġa Ġprevious Ġpositive Ġtest Ġresult ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock k Static (" uk . n hs . n hs x . covid 1 9 . android . app . state . Isolation StateMachine Kt ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` on set Ġdate Ġneeded Ġwhen ĠAC 1 Ġtrue , ĠAC 2 Ġtrue Ġdue Ġto Ġno Ġcurrent Ġindex Ġcase , ĠAC 3 Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAC 1 ĊĠĠĠĠĠĠĠ Ġval Ġtest Result Ġ= Ġset Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠPOS ITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Kit Ġ= ĠLAB _ RESULT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Conf ir mat ory Test Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 2 ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= Ġisolation State Contact Case Only ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġisolation StateMachine . read State () Ġ} Ġreturns Ġcurrent State ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 3 ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Positive () Ġ} Ġreturns Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġtest Subject . is Inter ested In As king For Sy mptoms On set Day ( test Result ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( actual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` on set Ġdate Ġneeded Ġwhen ĠAC 1 Ġtrue , ĠAC 2 Ġtrue Ġdue Ġto Ġno Ġprevious Ġindex Ġcase , ĠAC 3 Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAC 1 ĊĠĠĠĠĠĠĠ Ġval Ġtest Result Ġ= Ġset Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠPOS ITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Kit Ġ= ĠLAB _ RESULT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Conf ir mat ory Test Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 2 ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= ĠDefault ( previous Isolation Ġ= Ġisolation State Contact Case Only ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġisolation StateMachine . read State () Ġ} Ġreturns Ġcurrent State ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 3 ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Positive () Ġ} Ġreturns Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġtest Subject . is Inter ested In As king For Sy mptoms On set Day ( test Result ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( actual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` on set Ġdate Ġneeded Ġwhen ĠAC 1 Ġtrue , ĠAC 2 Ġtrue Ġdue Ġto Ġindex Ġcase Ġno Ġself Ġassessment , ĠAC 3 Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAC 1 ĊĠĠĠĠĠĠĠ Ġval Ġtest Result Ġ= Ġset Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠPOS ITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Kit Ġ= ĠLAB _ RESULT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Conf ir mat ory Test Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 2 ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= Ġisolation State Index Case Only Without Self Assessment ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġisolation StateMachine . read State () Ġ} Ġreturns Ġcurrent State ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 3 ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Positive () Ġ} Ġreturns Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġtest Subject . is Inter ested In As king For Sy mptoms On set Day ( test Result ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( actual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` on set Ġdate Ġneeded Ġwhen ĠAC 1 Ġtrue , ĠAC 2 Ġtrue Ġdue Ġto Ġprevious Ġindex Ġcase Ġno Ġself Ġassessment , ĠAC 3 Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAC 1 ĊĠĠĠĠĠĠĠ Ġval Ġtest Result Ġ= Ġset Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠPOS ITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Kit Ġ= ĠLAB _ RESULT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Conf ir mat ory Test Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 2 ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= ĠDefault ( previous Isolation Ġ= Ġisolation State Index Case Only Without Self Assessment ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġisolation StateMachine . read State () Ġ} Ġreturns Ġcurrent State ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 3 ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Positive () Ġ} Ġreturns Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġtest Subject . is Inter ested In As king For Sy mptoms On set Day ( test Result ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( actual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` on set Ġdate Ġneeded Ġwhen ĠAC 1 Ġtrue , ĠAC 2 Ġtrue Ġdue Ġto Ġindex Ġcase Ġwith Ġself Ġassessment Ġand Ġnegative Ġtest , ĠAC 3 Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAC 1 ĊĠĠĠĠĠĠĠ Ġval Ġtest Result Ġ= Ġset Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠPOS ITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Kit Ġ= ĠLAB _ RESULT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Conf ir mat ory Test Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 2 ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= Ġisolation State Index Case Only With Self Assessment ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġisolation StateMachine . read State () Ġ} Ġreturns Ġcurrent State ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Negative () Ġ} Ġreturns Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 3 ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Positive () Ġ} Ġreturns Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġtest Subject . is Inter ested In As king For Sy mptoms On set Day ( test Result ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( actual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` on set Ġdate Ġneeded Ġwhen ĠAC 1 Ġtrue , ĠAC 2 Ġtrue Ġdue Ġto Ġprevious Ġindex Ġcase Ġwith Ġself Ġassessment Ġand Ġnegative Ġtest , ĠAC 3 Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAC 1 ĊĠĠĠĠĠĠĠ Ġval Ġtest Result Ġ= Ġset Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠPOS ITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Kit Ġ= ĠLAB _ RESULT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Conf ir mat ory Test Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 2 ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= ĠDefault ( previous Isolation Ġ= Ġisolation State Index Case Only With Self Assessment ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġisolation StateMachine . read State () Ġ} Ġreturns Ġcurrent State ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Negative () Ġ} Ġreturns Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 3 ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Positive () Ġ} Ġreturns Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġtest Subject . is Inter ested In As king For Sy mptoms On set Day ( test Result ) ĊĊĠĠĠĠĠĠĠ ĠassertTrue ( actual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` on set Ġdate Ġnot Ġneeded Ġwhen ĠAC 1 Ġtrue , ĠAC 2 Ġtrue , ĠAC 3 Ġfalse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAC 1 ĊĠĠĠĠĠĠĠ Ġval Ġtest Result Ġ= Ġset Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠPOS ITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Kit Ġ= ĠLAB _ RESULT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Conf ir mat ory Test Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 2 ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= ĠDefault () ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġisolation StateMachine . read State () Ġ} Ġreturns Ġcurrent State ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 3 ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Positive () Ġ} Ġreturns Ġtrue ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġtest Subject . is Inter ested In As king For Sy mptoms On set Day ( test Result ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( actual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` on set Ġdate Ġnot Ġneeded Ġwhen ĠAC 1 Ġtrue , ĠAC 2 Ġfalse , ĠAC 3 Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAC 1 ĊĠĠĠĠĠĠĠ Ġval Ġtest Result Ġ= Ġset Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠPOS ITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Kit Ġ= ĠLAB _ RESULT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Conf ir mat ory Test Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 2 ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= Ġisolation State Index Case Only With Self Assessment ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġisolation StateMachine . read State () Ġ} Ġreturns Ġcurrent State ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Negative () Ġ} Ġreturns Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 3 ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Positive () Ġ} Ġreturns Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġtest Subject . is Inter ested In As king For Sy mptoms On set Day ( test Result ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( actual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` on set Ġdate Ġnot Ġneeded Ġwhen ĠAC 1 Ġtrue , ĠAC 2 Ġfalse , ĠAC 3 Ġfalse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAC 1 ĊĠĠĠĠĠĠĠ Ġval Ġtest Result Ġ= Ġset Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠPOS ITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Kit Ġ= ĠLAB _ RESULT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Conf ir mat ory Test Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 2 ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= ĠDefault ( previous Isolation Ġ= Ġisolation State Index Case Only With Self Assessment ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġisolation StateMachine . read State () Ġ} Ġreturns Ġcurrent State ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Negative () Ġ} Ġreturns Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 3 ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Positive () Ġ} Ġreturns Ġtrue ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġtest Subject . is Inter ested In As king For Sy mptoms On set Day ( test Result ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( actual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` on set Ġdate Ġnot Ġneeded Ġwhen ĠAC 1 Ġfalse Ġdue Ġto Ġnot ĠLAB _ RESULT Ġtest , ĠAC 2 Ġtrue , ĠAC 3 Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAC 1 ĊĠĠĠĠĠĠĠ Ġval Ġtest Result Ġ= Ġset Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠPOS ITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Kit Ġ= ĠR AP ID _ RESULT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Conf ir mat ory Test Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 2 ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= Ġisolation State Contact Case Only ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġisolation StateMachine . read State () Ġ} Ġreturns Ġcurrent State ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 3 ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Positive () Ġ} Ġreturns Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġtest Subject . is Inter ested In As king For Sy mptoms On set Day ( test Result ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( actual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` on set Ġdate Ġnot Ġneeded Ġwhen ĠAC 1 Ġfalse Ġdue Ġto Ġnegative Ġtest , ĠAC 2 Ġtrue , ĠAC 3 Ġfalse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAC 1 ĊĠĠĠĠĠĠĠ Ġval Ġtest Result Ġ= Ġset Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠNE G ATIVE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Kit Ġ= ĠLAB _ RESULT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Conf ir mat ory Test Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 2 ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= ĠDefault () ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġisolation StateMachine . read State () Ġ} Ġreturns Ġcurrent State ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 3 ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Positive () Ġ} Ġreturns Ġtrue ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġtest Subject . is Inter ested In As king For Sy mptoms On set Day ( test Result ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( actual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` on set Ġdate Ġnot Ġneeded Ġwhen ĠAC 1 Ġfalse Ġdue Ġto Ġrequires Ġconf ir mat ory Ġtest , ĠAC 2 Ġtrue , ĠAC 3 Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAC 1 ĊĠĠĠĠĠĠĠ Ġval Ġtest Result Ġ= Ġset Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠPOS ITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Kit Ġ= ĠLAB _ RESULT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Conf ir mat ory Test Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 2 ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= ĠDefault () ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġisolation StateMachine . read State () Ġ} Ġreturns Ġcurrent State ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 3 ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Positive () Ġ} Ġreturns Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġtest Subject . is Inter ested In As king For Sy mptoms On set Day ( test Result ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( actual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` on set Ġdate Ġnot Ġneeded Ġwhen ĠAC 1 Ġfalse , ĠAC 2 Ġtrue , ĠAC 3 Ġfalse `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAC 1 ĊĠĠĠĠĠĠĠ Ġval Ġtest Result Ġ= Ġset Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠVOID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Kit Ġ= ĠLAB _ RESULT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Conf ir mat ory Test Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 2 ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= ĠDefault () ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġisolation StateMachine . read State () Ġ} Ġreturns Ġcurrent State ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 3 ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Positive () Ġ} Ġreturns Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġtest Subject . is Inter ested In As king For Sy mptoms On set Day ( test Result ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( actual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` on set Ġdate Ġnot Ġneeded Ġwhen ĠAC 1 Ġfalse , ĠAC 2 Ġfalse , ĠAC 3 Ġtrue `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAC 1 ĊĠĠĠĠĠĠĠ Ġval Ġtest Result Ġ= Ġset Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= ĠPOS ITIVE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Kit Ġ= ĠLAB _ RESULT , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Conf ir mat ory Test Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 2 ĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= Ġisolation State Index Case Only With Self Assessment ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġisolation StateMachine . read State () Ġ} Ġreturns Ġcurrent State ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Negative () Ġ} Ġreturns Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ// ĠAC 3 ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġrelevant TestResult Provider . is TestResult Positive () Ġ} Ġreturns Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġtest Subject . is Inter ested In As king For Sy mptoms On set Day ( test Result ) ĊĊĠĠĠĠĠĠĠ ĠassertFalse ( actual ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Result ( ĊĠĠĠĠĠĠĠ Ġtest Result : ĠV iro logy TestResult , ĊĠĠĠĠĠĠĠ Ġtest Kit : ĠV iro logy Test Kit Type , ĊĠĠĠĠĠĠĠ Ġrequires Conf ir mat ory Test : ĠBoolean ĊĠĠĠ Ġ) Ġ= ĊĠĠĠĠĠĠĠ ĠReceived TestResult ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdi agnosis Key Submission Token Ġ= Ġ" submission Token ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest EndDate Ġ= ĠInstant . now ( fixed Clock ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Result Ġ= Ġtest Result , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Kit Type Ġ= Ġtest Kit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdi agnosis Key Submission Supported Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequires Conf ir mat ory Test Ġ= Ġrequires Conf ir mat ory Test ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġsy mptoms On setDate Ġ= ĠLocalDate . parse (" 2 0 2 0 - 0 7 - 2 0 ") ĊĊĠĠĠ Ġprivate Ġval Ġisolation State Contact Case Only Ġ= ĠI sol ation ( ĊĠĠĠĠĠĠĠ Ġisolation Start Ġ= ĠInstant . now ( fixed Clock ), ĊĠĠĠĠĠĠĠ Ġisolation Configuration Ġ= ĠDuration Days (), ĊĠĠĠĠĠĠĠ Ġcontact Case Ġ= ĠContact Case ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartDate Ġ= ĠInstant . now ( fixed Clock ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Date Ġ= ĠInstant . now ( fixed Clock ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpiry Date Ġ= ĠLocalDate . now ( fixed Clock ). plus ( 1 1 , ĠDAY S ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġisolation State Index Case Only With Self Assessment Ġ= ĠI sol ation ( ĊĠĠĠĠĠĠĠ Ġisolation Start Ġ= Ġsy mptoms On setDate . at Start OfDay ( Zone Offset . UTC ). to Instant (), ĊĠĠĠĠĠĠĠ Ġisolation Configuration Ġ= ĠDuration Days (), ĊĠĠĠĠĠĠĠ Ġindex Case Ġ= ĠIndex Case ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsy mptoms On setDate Ġ= ĠLocalDate . now ( fixed Clock ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpiry Date Ġ= Ġsy mptoms On setDate . plus ( 7 , ĠDAY S ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself Assessment Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġisolation State Index Case Only Without Self Assessment Ġ= ĠI sol ation ( ĊĠĠĠĠĠĠĠ Ġisolation Start Ġ= Ġsy mptoms On setDate . at Start OfDay ( Zone Offset . UTC ). to Instant (), ĊĠĠĠĠĠĠĠ Ġisolation Configuration Ġ= ĠDuration Days (), ĊĠĠĠĠĠĠĠ Ġindex Case Ġ= ĠIndex Case ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsy mptoms On setDate Ġ= ĠLocalDate . now ( fixed Clock ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpiry Date Ġ= Ġsy mptoms On setDate . plus ( 7 , ĠDAY S ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself Assessment Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ } Ċ