package Ġcom . j ord anty mb ur ski . dr if to ff . domain . use case Ċ Ċ import Ġcom . j ord anty mb ur ski . dr if to ff . domain . adapter . Alarm Scheduler Ċ import Ġcom . j ord anty mb ur ski . dr if to ff . domain . model . Alarm Info Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . Mockito Ċ import Ġorg . mockito . Mockito Annotations Ċ import Ġjava . util .* Ċ Ċ class ĠRes chedule Alarm Test Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAlarm Ġscheduling Ġport ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Mock Ġprivate Ġlateinit Ġvar Ġalarm Scheduler : ĠAlarm Scheduler ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġalarm Ġinfo Ġuse Ġcase Ġto Ġfetch Ġexisting Ġcached Ġvalue ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Mock Ġprivate Ġlateinit Ġvar Ġget Info : ĠGet Info ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRandom Ġnumber Ġgenerator Ġinstance ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġrandom Ġ= ĠRandom () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRes chedule Ġalarm Ġuse Ġcase . ĠTest Ġis Ġbuilt Ġaround Ġthis Ġimplementation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġre schedule Alarm : ĠRes chedule Alarm ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ ĠMockito Annotations . init Mocks ( this ) ĊĠĠĠĠĠĠĠ Ġre schedule Alarm Ġ= ĠRes chedule Alarm ( alarm Scheduler , Ġget Info ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġactive () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġget Ġinfo Ġwith Ġan Ġactive Ġalarm Ġobject ĊĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= ĠAlarm Info ( alarm Ġ= ĠDate (). time , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Hour Ġ= Ġrandom . nextInt ( 2 4 ), Ġtime Minute Ġ= Ġrandom . nextInt ( 6 0 )) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( getInfo . current ()). thenReturn ( info ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTrigger ĊĠĠĠĠĠĠĠ Ġre schedule Alarm . execute () ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġon Ġthe Ġexecution ĊĠĠĠĠĠĠĠ ĠMockito . verify ( getInfo , ĠMockito . at Least Once ()). current () ĊĠĠĠĠĠĠĠ ĠMockito . verify No More Interactions ( getInfo ) ĊĠĠĠĠĠĠĠ ĠMockito . verify ( alarm Scheduler ). cancel () ĊĠĠĠĠĠĠĠ ĠMockito . verify ( alarm Scheduler ). schedule ( info . alarm ) ĊĠĠĠĠĠĠĠ ĠMockito . verify No More Interactions ( alarm Scheduler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġinactive () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġget Ġinfo Ġwith Ġan Ġinactive Ġalarm ĊĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= ĠAlarm Info ( alarm Ġ= Ġ 0 L , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtime Hour Ġ= Ġrandom . nextInt ( 2 4 ), Ġtime Minute Ġ= Ġrandom . nextInt ( 6 0 )) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( getInfo . current ()). thenReturn ( info ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTrigger ĊĠĠĠĠĠĠĠ Ġre schedule Alarm . execute () ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġon Ġthe Ġexecution ĊĠĠĠĠĠĠĠ ĠMockito . verify ( getInfo , ĠMockito . at Least Once ()). current () ĊĠĠĠĠĠĠĠ ĠMockito . verify No More Interactions ( getInfo ) ĊĠĠĠĠĠĠĠ ĠMockito . verify Zero Interactions ( alarm Scheduler ) ĊĠĠĠ Ġ} Ċ }