package Ġcom . s 1 3 g . sa uron ĊĊ Ċ import Ġcom . s 1 3 g . sa uron . file . File Wrapper Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . fail Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġjava . io . IOException Ċ import Ġjava . nio . file . attribute . Basic File Attributes Ċ import Ġjava . nio . file . attribute . File Time ĊĊ Ċ private Ġfun Ġcreate File With Creation Time ( creation Time Millis : ĠInt ): ĠImage Repo File Ġ{ ĊĠ Ġval Ġother Attributes : ĠBasic File Attributes Ġ= Ġmock k () ĊĠ Ġevery Ġ{ Ġother Attributes . creation Time () Ġ} Ġreturns ĠFile Time . from Millis ( creation Time Millis . to Long ()) ĊĠ Ġval Ġother Path : ĠFile Wrapper Ġ= Ġmock k () ĊĠ Ġevery Ġ{ Ġother Path . read Basic Attributes () Ġ} Ġreturns Ġother Attributes ĊĠ Ġreturn ĠImage Repo File ( other Path ) Ċ } Ċ Ċ /** Ċ Ġ* ĠTests Ġfor Ġ[ Image Repo File ]. Ċ Ġ*/ Ċ class ĠImage Repo File Test Ġ{ ĊĠ Ġprivate Ġlateinit Ġvar Ġpath : ĠFile Wrapper ĊĠ Ġprivate Ġlateinit Ġvar Ġfile : ĠImage Repo File ĊĠ Ġprivate Ġlateinit Ġvar Ġattributes : ĠBasic File Attributes ĊĊĠ Ġ@ Before ĊĠ Ġfun Ġinitialize () Ġ{ ĊĠĠĠ Ġpath Ġ= Ġmock k () ĊĠĠĠ Ġattributes Ġ= Ġmock k () ĊĠĠĠ Ġfile Ġ= ĠImage Repo File ( path ) ĊĠĠĠ Ġevery Ġ{ Ġpath . read Basic Attributes () Ġ} Ġreturns Ġattributes ĊĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Delete Fails No Regular File () Ġ{ ĊĠĠĠ Ġevery Ġ{ Ġpath . is Regular File Ġ} Ġreturns Ġfalse ĊĠĠĠ Ġevery Ġ{ Ġpath . delete IfExists () Ġ} Ġreturns Ġtrue ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġfile . delete () ĊĠĠĠĠĠ Ġfail (" Delete Ġshould Ġthrow Ġan Ġexception . ĠNot Ġa Ġregular Ġfile .") ĊĠĠĠ Ġ} Ġcatch Ġ( expected : ĠIOException ) Ġ{ ĊĠĠĠĠĠ Ġ// ĠExpected . ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Delete Fails () Ġ{ ĊĠĠĠ Ġevery Ġ{ Ġpath . is Regular File Ġ} Ġreturns Ġtrue ĊĠĠĠ Ġevery Ġ{ Ġpath . delete IfExists () Ġ} Ġreturns Ġfalse ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġfile . delete () ĊĠĠĠĠĠ Ġfail (" Delete Ġshould Ġthrow Ġan Ġexception Ġsince Ġit Ġfailed .") ĊĠĠĠ Ġ} Ġcatch Ġ( expected : ĠIOException ) Ġ{ ĊĠĠĠĠĠ Ġ// ĠExpected . ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest Delete Suc ceeds () Ġ{ ĊĠĠĠ Ġevery Ġ{ Ġpath . is Regular File Ġ} Ġreturns Ġtrue ĊĠĠĠ Ġevery Ġ{ Ġpath . delete IfExists () Ġ} Ġreturns Ġtrue ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġfile . delete () ĊĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠ Ġfail (" Delete Ġshould Ġsucceed ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest CompareTo Same Creation Time () Ġ{ ĊĠĠĠ Ġval Ġother File Ġ= Ġcreate File With Creation Time ( 4 2 4 2 4 2 ) ĊĠĠĠ Ġevery Ġ{ Ġattributes . creation Time () Ġ} Ġreturns ĠFile Time . from Millis ( 4 2 4 2 4 2 ) ĊĠĠĠ ĠassertEquals ( 0 , Ġfile . compareTo ( other File )) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest CompareTo Different Creation Time 1 () Ġ{ ĊĠĠĠ Ġval Ġother File Ġ= Ġcreate File With Creation Time ( 4 2 4 2 4 3 ) ĊĠĠĠ Ġevery Ġ{ Ġattributes . creation Time () Ġ} Ġreturns ĠFile Time . from Millis ( 4 2 4 2 4 2 ) ĊĠĠĠ ĠassertEquals (- 1 , Ġfile . compareTo ( other File )) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest CompareTo Different Creation Time 2 () Ġ{ ĊĠĠĠ Ġval Ġother File Ġ= Ġcreate File With Creation Time ( 4 2 4 2 4 1 ) ĊĠĠĠ Ġevery Ġ{ Ġattributes . creation Time () Ġ} Ġreturns ĠFile Time . from Millis ( 4 2 4 2 4 2 ) ĊĠĠĠ ĠassertEquals ( 1 , Ġfile . compareTo ( other File )) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġtest CompareTo Fails Due To Exception () Ġ{ ĊĠĠĠ Ġval Ġother File Ġ= Ġcreate File With Creation Time ( 4 2 4 2 4 2 ) ĊĠĠĠ Ġevery Ġ{ Ġpath . read Basic Attributes () Ġ} Ġthrows ĠIOException (" B oom !") ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ ĠassertEquals ( 1 , Ġfile . compareTo ( other File )) ĊĠĠĠĠĠ Ġfail (" Should Ġhave Ġthrown Ġdue Ġto Ġfile Ġlevel Ġexception .") ĊĠĠĠ Ġ} Ġcatch Ġ( expected : ĠRuntimeException ) Ġ{ ĊĠĠĠĠĠ Ġ// ĠExpected . ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }