package Ġcom . un compress Ċ Ċ import Ġcom . google . common . truth . Truth Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġcom . un compress . domain . enum . Compatibility Ċ import Ġcom . un compress . infra . adapters . rar . R ar Extractor Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Assert . fail Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġjava . io . File ĊĊ Ċ class ĠR ar Extractor Test Ġ{ ĊĠ Ġprivate Ġval Ġr ar Extractor Ġ= ĠR ar Extractor () ĊĠ Ġprivate Ġval Ġresources Path Ġ= Ġ" src / test / resources / com . un compress / rar /" ĊĠ Ġprivate Ġval Ġr ar File Ġ= ĠFile ( resources Path Ġ+ Ġ" sample _ com ic . c br ") ĊĠ Ġprivate Ġval Ġprotected R ar File Ġ= ĠFile ( resources Path Ġ+ Ġ" protected _ sample _ com ic . c br ") ĊĠ Ġprivate Ġval Ġfail R ar File Ġ= ĠFile ( resources Path Ġ+ Ġ" rar _ fail . c br ") ĊĊĠ Ġprivate Ġlateinit Ġvar Ġtemp Directory : ĠFile ĊĊĠ Ġ@ Before ĊĠ Ġfun ĠsetUp (){ ĊĠĠĠ Ġtemp Directory Ġ= ĠFile ( resources Path Ġ+ Ġ" temp ") ĊĠĠĠ Ġif (! temp Directory . exists ()) Ġ{ ĊĠĠĠĠĠ Ġtemp Directory . mkdir () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ After ĊĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠ Ġtemp Directory . delete () ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` ensure Ġcompat ibilities `() Ġ{ ĊĠĠĠ Ġval Ġcompat ibilities Ġ= Ġr ar Extractor . compat ibilities ĊĠĠĠ ĠassertThat ( compat ibilities ). isEqualTo ( listOf ( Compatibility . C BR , ĠCompatibility . R AR )) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` should Ġreturn Ġtrue Ġif Ġfile Ġis Ġprotected `() Ġ{ ĊĠĠĠ Ġval Ġis Protected Ġ= Ġr ar Extractor . is Protected ( protected R ar File . path ) ĊĠĠĠ ĠassertThat ( is Protected ). isTrue () ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` should Ġreturn Ġfalse Ġif Ġfile Ġis Ġnot Ġprotected `() Ġ{ ĊĠĠĠ Ġval Ġis Protected Ġ= Ġr ar Extractor . is Protected ( rar File . path ) ĊĠĠĠ ĠassertThat ( is Protected ). isFalse () ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` de compress Ġfile Ġif Ġextract Ġsuccessful `() Ġ{ ĊĠĠĠ Ġval ĠfilePath Ġ= Ġr ar File . path ĊĠĠĠ Ġval Ġdirectory Ġ= Ġtemp Directory . path ĊĊĠĠĠ Ġr ar Extractor . extract ( filePath , Ġdirectory , Ġtrue , Ġnull ); ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` de compress Ġfile Ġif Ġextract Ġwith Ġpassword Ġsuccessful `() Ġ{ ĊĠĠĠ Ġval ĠfilePath Ġ= Ġprotected R ar File . path ĊĠĠĠ Ġval Ġdirectory Ġ= Ġtemp Directory . path ĊĊĠĠĠ Ġr ar Extractor . extract ( filePath , Ġdirectory , Ġtrue , Ġ" do "); ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` create Ġdestination Ġif Ġdestination Ġnot Ġexists `() Ġ{ ĊĠĠĠ Ġval ĠfilePath Ġ= Ġr ar File . path ĊĠĠĠ Ġval Ġdirectory Ġ= Ġtemp Directory . path ĊĊĠĠĠ Ġtemp Directory . delete Re cursively () ĊĊĠĠĠ Ġr ar Extractor . extract ( filePath , Ġdirectory , Ġtrue , Ġnull ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` throw Ġerror Ġif Ġextract Ġfails `() Ġ{ ĊĠĠĠ Ġval ĠfilePath Ġ= Ġfail R ar File . path ĊĠĠĠ Ġval Ġdirectory Ġ= Ġtemp Directory . path ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġr ar Extractor . extract ( filePath , Ġdirectory , Ġtrue , Ġnull ) ĊĠĠĠĠĠ Ġfail (" throw Ġerror Ġif Ġextract Ġfail ") ĊĠĠĠ Ġ} Ġcatch ( e : ĠThrowable ) Ġ{} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` throw Ġerror Ġif Ġfile Ġpath Ġis Ġinvalid `() Ġ{ ĊĠĠĠ Ġval Ġdirectory Ġ= Ġtemp Directory . path ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġr ar Extractor . extract ("", Ġdirectory , Ġtrue , Ġnull ) ĊĠĠĠĠĠ Ġfail (" throw Ġerror Ġif Ġfile Ġpath Ġis Ġinvalid Ġfail ") ĊĠĠĠ Ġ} Ġcatch ( e : ĠThrowable ) Ġ{} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` throw Ġerror Ġif Ġdestination Ġis Ġinvalid `() Ġ{ ĊĠĠĠ Ġval ĠfilePath Ġ= Ġr ar File . path ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġr ar Extractor . extract ( filePath , Ġ"", Ġtrue , Ġnull ) ĊĠĠĠĠĠ Ġfail (" throw Ġerror Ġif Ġdestination Ġis Ġinvalid Ġfail ") ĊĠĠĠ Ġ} Ġcatch ( e : ĠThrowable ) Ġ{} ĊĠ Ġ} Ċ Ċ } Ċ