package Ġnet . plan 9 9 . grav iton . scheduler Ċ Ċ import Ġcom . google . common . j im fs . Configuration Ċ import Ġcom . google . common . j im fs . Jim fs Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Test Ċ import Ġjava . nio . file . Path Ċ import Ġjava . time . Duration Ċ Ċ class ĠWindows Task Scheduler Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġj im fs Ġ= ĠJim fs . new FileSystem ( Configuration . windows ()) ĊĠĠĠ Ġprivate Ġval Ġroot Path Ġ= Ġj im fs . root Directories . first () ĊĠĠĠ Ġprivate Ġval Ġapp Path : ĠPath Ġ= Ġroot Path . resolve (" c :\\ Program ĠFiles \\ Foo \\ Foo bar . exe ") ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcheck XML () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= ĠO SS chedule d Task Definition ( app Path , ĠlistOf ("-- a ", Ġ"-- b ", Ġ" c "), Ġdescription Ġ= Ġ" A Ġtask Ġdescription ", Ġfrequency Ġ= ĠDuration . of Days ( 2 )) ĊĠĠĠĠĠĠĠ Ġval Ġxml Ġ= Ġformat ( task ) ĊĠĠĠĠĠĠĠ ĠassertEquals (""" ĊĠĠĠĠĠĠĠ Ġ<? xml Ġversion =" 1 . 0 " Ġencoding =" UTF - 1 6 "?> ĊĠĠĠĠĠĠĠ Ġ< Task Ġversion =" 1 . 2 " Ġxmlns =" http :// schemas . microsoft . com / windows / 2 0 0 4 / 0 2 / mit / task "> ĊĠĠĠĠĠĠĠĠĠ Ġ< Registration Info > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Version > 1 . 0 </ Version > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Description > A Ġtask Ġdescription </ Description > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< URI >\ Gr av iton ĠBrowser ĠUpdate </ URI > ĊĠĠĠĠĠĠĠĠĠ Ġ</ Registration Info > ĊĠĠĠĠĠĠĠĠĠ Ġ< Triggers > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Calendar Trigger > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Start Boundary > 2 0 1 8 - 0 4 - 0 1 T 2 0 : 0 0 : 0 0 </ Start Boundary > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Enabled > true </ Enabled > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Schedule By Day > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Days Interval > 2 </ Days Interval > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ Schedule By Day > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ</ Calendar Trigger > ĊĠĠĠĠĠĠĠĠĠ Ġ</ Triggers > ĊĠĠĠĠĠĠĠĠĠ Ġ< Settings > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Multiple Instances Policy > Ignore New </ Multiple Instances Policy > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Dis allow Start If On B atter ies > false </ Dis allow Start If On B atter ies > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Stop If Go ing On B atter ies > true </ Stop If Go ing On B atter ies > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Allow Hard Terminate > true </ Allow Hard Terminate > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Start When Available > true </ Start When Available > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Run Only If Network Available > false </ Run Only If Network Available > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Idle Settings > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Stop On Idle End > true </ Stop On Idle End > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Restart On Idle > false </ Restart On Idle > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ</ Idle Settings > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Allow Start On Demand > true </ Allow Start On Demand > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Enabled > true </ Enabled > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Hidden > false </ Hidden > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Run Only If Idle > false </ Run Only If Idle > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Wake To Run > false </ Wake To Run > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Execution Time Limit > PT 7 2 H </ Execution Time Limit > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Priority > 7 </ Priority > ĊĠĠĠĠĠĠĠĠĠ Ġ</ Settings > ĊĠĠĠĠĠĠĠĠĠ Ġ< Actions ĠContext =" Author "> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< Exec > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Command > c :\ Program ĠFiles \ Foo \ Foo bar . exe </ Command > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< Arguments >-- a Ġ-- b Ġc </ Arguments > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ</ Exec > ĊĠĠĠĠĠĠĠĠĠ Ġ</ Actions > ĊĠĠĠĠĠĠĠ Ġ</ Task > ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent (), Ġxml ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġformat ( task : ĠO SS chedule d Task Definition ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWindows Task Scheduler (). format XML (" Gr av iton ĠBrowser ĠUpdate ", Ġtask ) ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠIllegalStateException :: class ) ĊĠĠĠ Ġfun Ġdays Must Be Whole () Ġ{ ĊĠĠĠĠĠĠĠ Ġformat ( OSS chedule d Task Definition ( app Path , Ġfrequency Ġ= ĠDuration . of Hours ( 2 ))) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠThe Ġrest Ġwas Ġtested Ġmanually , Ġas Ġit 's Ġto ugh Ġto Ġmock Ġthe Ġtask Ġscheduler . Ċ }