/* ĊĠĠ ĠCopyright Ġ 2 0 1 7 - 2 0 2 1 ĠChar les ĠK orn . ĊĊĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); ĊĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĊĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat ĊĊĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 ĊĊĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware ĊĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĊĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . ĊĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand ĊĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ */ Ċ Ċ package Ġb ate ct . cli . options Ċ Ċ import Ġb ate ct . os . Path Resolution Result Ċ import Ġb ate ct . os . Path Resolver Ċ import Ġb ate ct . os . Path Resolver Factory Ċ import Ġb ate ct . os . Path Type Ċ import Ġb ate ct . test utils . equalTo Ċ import Ġb ate ct . test utils . given Ċ import Ġb ate ct . ui . Output Style Ċ import Ġcom . google . common . j im fs . Configuration Ċ import Ġcom . google . common . j im fs . Jim fs Ċ import Ġcom . nat pr y ce . ham k rest . assertion . assertThat Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . do Return Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġorg . spe k framework . spe k 2 . Spe k Ċ import Ġorg . spe k framework . spe k 2 . style . specification . describe Ċ Ċ object ĠValue Converters Spec Ġ: ĠSpe k ({ ĊĠĠĠ Ġdescribe (" value Ġconverter s ") Ġ{ ĊĠĠĠĠĠĠĠ Ġdescribe (" string Ġvalue Ġconverter ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġpassed Ġto Ġit ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValue Converters . string . convert (" some - value "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠequalTo ( Value Conversion Result . Conversion Succeeded (" some - value ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdescribe (" boolean Ġvalue Ġconverter ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" yes ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" YES ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" true ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" TRUE " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). forEach Ġ{ Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" the Ġvalue Ġ'$ value '") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġ' true '") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( Value Converters . boolean . convert ( value ), ĠequalTo ( Value Conversion Result . Conversion Succeeded ( true ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" no ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" NO ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" false ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" FALSE " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). forEach Ġ{ Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" the Ġvalue Ġ'$ value '") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġ' false '") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( Value Converters . boolean . convert ( value ), ĠequalTo ( Value Conversion Result . Conversion Succeeded ( false ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" an Ġinvalid Ġvalue ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġappropriate Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( Value Converters . boolean . convert (" blah "), ĠequalTo ( Value Conversion Result . Conversion Failed (" Value Ġis Ġnot Ġa Ġrecogn ised Ġboolean Ġvalue . "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdescribe (" in verting Ġboolean Ġvalue Ġconverter ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" yes ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" YES ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" true ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" TRUE " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). forEach Ġ{ Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" the Ġvalue Ġ'$ value '") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġ' false '") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( Value Converters . in verting Boolean . convert ( value ), ĠequalTo ( Value Conversion Result . Conversion Succeeded ( false ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" no ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" NO ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" false ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" FALSE " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). forEach Ġ{ Ġvalue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" the Ġvalue Ġ'$ value '") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġvalue Ġ' true '") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( Value Converters . in verting Boolean . convert ( value ), ĠequalTo ( Value Conversion Result . Conversion Succeeded ( true ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" an Ġinvalid Ġvalue ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġappropriate Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( Value Converters . in verting Boolean . convert (" blah "), ĠequalTo ( Value Conversion Result . Conversion Failed (" Value Ġis Ġnot Ġa Ġrecogn ised Ġboolean Ġvalue . "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdescribe (" positive Ġinteger Ġvalue Ġconverter ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġpositive Ġinteger ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġparsed Ġrepresentation Ġof Ġthat Ġinteger ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValue Converters . positive Integer . convert (" 1 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠequalTo ( Value Conversion Result . Conversion Succeeded ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" zero ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValue Converters . positive Integer . convert (" 0 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠequalTo ( Value Conversion Result . Conversion Failed (" Value Ġmust Ġbe Ġpositive .")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġnegative Ġinteger ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValue Converters . positive Integer . convert ("- 1 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠequalTo ( Value Conversion Result . Conversion Failed (" Value Ġmust Ġbe Ġpositive .")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" an Ġempty Ġstring ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValue Converters . positive Integer . convert (""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠequalTo ( Value Conversion Result . Conversion Failed (" Value Ġis Ġnot Ġa Ġvalid Ġinteger .")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġhexadecimal Ġnumber ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValue Converters . positive Integer . convert (" 1 2 3 AAA "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠequalTo ( Value Conversion Result . Conversion Failed (" Value Ġis Ġnot Ġa Ġvalid Ġinteger .")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" something Ġthat Ġis Ġnot Ġa Ġnumber ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠValue Converters . positive Integer . convert (" x "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠequalTo ( Value Conversion Result . Conversion Failed (" Value Ġis Ġnot Ġa Ġvalid Ġinteger .")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdescribe (" enum Ġvalue Ġconverter ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconverter Ġ= ĠValue Converters . enum < Output Style >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġvalid Ġvalue ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġequivalent Ġenum Ġconstant ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" simple "), ĠequalTo ( Value Conversion Result . Conversion Succeeded ( Output Style . Simple ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" an Ġempty Ġstring ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (""), ĠequalTo ( Value Conversion Result . Conversion Failed (" Value Ġmust Ġbe Ġone Ġof Ġ' all ', Ġ' fancy ', Ġ' quiet ' Ġor Ġ' simple '. "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" an Ġinvalid Ġvalue ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" n ons ense "), ĠequalTo ( Value Conversion Result . Conversion Failed (" Value Ġmust Ġbe Ġone Ġof Ġ' all ', Ġ' fancy ', Ġ' quiet ' Ġor Ġ' simple '. "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdescribe (" path Ġto Ġfile Ġconverter ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile System Ġ= ĠJim fs . new FileSystem ( Configuration . unix ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Resolver Ġ= Ġmock < Path Resolver > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġresolve (" file ") Ġ} Ġdo Return ĠPath Resolution Result . Resolved (" file ", Ġfile System . getPath ("/ resolved / file "), ĠPath Type . File , Ġ" described Ġas Ġfile Ġby Ġresolver ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġresolve (" directory ") Ġ} Ġdo Return ĠPath Resolution Result . Resolved (" directory ", Ġfile System . getPath ("/ resolved / directory "), ĠPath Type . Directory , Ġ" described Ġas Ġdirectory Ġby Ġresolver ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġresolve (" other ") Ġ} Ġdo Return ĠPath Resolution Result . Resolved (" other ", Ġfile System . getPath ("/ resolved / other "), ĠPath Type . Other , Ġ" described Ġas Ġother Ġby Ġresolver ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġresolve (" does - not - exist ") Ġ} Ġdo Return ĠPath Resolution Result . Resolved (" does - not - exist ", Ġfile System . getPath ("/ resolved / does - not - exist "), ĠPath Type . DoesNotExist , Ġ" described Ġas Ġdoes Ġnot Ġexist Ġby Ġresolver ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġresolve (" invalid ") Ġ} Ġdo Return ĠPath Resolution Result . Invalid Path (" invalid ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Resolver Factory Ġ= Ġmock < Path Resolver Factory > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġcreate Resolver For Current Directory () Ġ} Ġdo Return Ġpath Resolver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" the Ġfile Ġis Ġnot Ġrequired Ġto Ġexist ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconverter Ġ= ĠValue Converters . path ToFile ( path Resolver Factory , Ġmust Exist Ġ= Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġpath Ġto Ġa Ġfile Ġthat Ġexists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġresolved Ġpath ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" file "), ĠequalTo ( Value Conversion Result . Conversion Succeeded ( file System . getPath ("/ resolved / file ")) )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġpath Ġto Ġa Ġdirectory ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" directory "), ĠequalTo ( Value Conversion Result . Conversion Failed (" The Ġpath Ġ' directory ' Ġ( described Ġas Ġdirectory Ġby Ġresolver ) Ġrefers Ġto Ġa Ġdirectory . "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġpath Ġto Ġsomething Ġother Ġthan Ġa Ġfile Ġor Ġdirectory ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" other "), ĠequalTo ( Value Conversion Result . Conversion Failed (" The Ġpath Ġ' other ' Ġ( described Ġas Ġother Ġby Ġresolver ) Ġrefers Ġto Ġsomething Ġother Ġthan Ġa Ġfile . "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġpath Ġto Ġa Ġfile Ġthat Ġdoes Ġnot Ġexist ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġresolved Ġpath ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" does - not - exist "), ĠequalTo ( Value Conversion Result . Conversion Succeeded ( file System . getPath ("/ resolved / does - not - exist ")) )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" an Ġinvalid Ġpath ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" invalid "), ĠequalTo ( Value Conversion Result . Conversion Failed ("' invalid ' Ġis Ġnot Ġa Ġvalid Ġpath . "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" the Ġfile Ġis Ġrequired Ġto Ġexist ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconverter Ġ= ĠValue Converters . path ToFile ( path Resolver Factory , Ġmust Exist Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġpath Ġto Ġa Ġfile Ġthat Ġexists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġresolved Ġpath ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" file "), ĠequalTo ( Value Conversion Result . Conversion Succeeded ( file System . getPath ("/ resolved / file ")) )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġpath Ġto Ġa Ġdirectory ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" directory "), ĠequalTo ( Value Conversion Result . Conversion Failed (" The Ġpath Ġ' directory ' Ġ( described Ġas Ġdirectory Ġby Ġresolver ) Ġrefers Ġto Ġa Ġdirectory . "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġpath Ġto Ġsomething Ġother Ġthan Ġa Ġfile Ġor Ġdirectory ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" other "), ĠequalTo ( Value Conversion Result . Conversion Failed (" The Ġpath Ġ' other ' Ġ( described Ġas Ġother Ġby Ġresolver ) Ġrefers Ġto Ġsomething Ġother Ġthan Ġa Ġfile . "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġpath Ġto Ġa Ġfile Ġthat Ġdoes Ġnot Ġexist ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" does - not - exist "), ĠequalTo ( Value Conversion Result . Conversion Failed (" The Ġfile Ġ' does - not - exist ' Ġ( described Ġas Ġdoes Ġnot Ġexist Ġby Ġresolver ) Ġdoes Ġnot Ġexist . "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" an Ġinvalid Ġpath ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" invalid "), ĠequalTo ( Value Conversion Result . Conversion Failed ("' invalid ' Ġis Ġnot Ġa Ġvalid Ġpath . "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdescribe (" path Ġto Ġdirectory Ġconverter ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile System Ġ= ĠJim fs . new FileSystem ( Configuration . unix ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Resolver Ġ= Ġmock < Path Resolver > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġresolve (" file ") Ġ} Ġdo Return ĠPath Resolution Result . Resolved (" file ", Ġfile System . getPath ("/ resolved / file "), ĠPath Type . File , Ġ" described Ġas Ġfile Ġby Ġresolver ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġresolve (" directory ") Ġ} Ġdo Return ĠPath Resolution Result . Resolved (" directory ", Ġfile System . getPath ("/ resolved / directory "), ĠPath Type . Directory , Ġ" described Ġas Ġdirectory Ġby Ġresolver ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġresolve (" other ") Ġ} Ġdo Return ĠPath Resolution Result . Resolved (" other ", Ġfile System . getPath ("/ resolved / other "), ĠPath Type . Other , Ġ" described Ġas Ġother Ġby Ġresolver ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġresolve (" does - not - exist ") Ġ} Ġdo Return ĠPath Resolution Result . Resolved (" does - not - exist ", Ġfile System . getPath ("/ resolved / does - not - exist "), ĠPath Type . DoesNotExist , Ġ" described Ġas Ġdoes Ġnot Ġexist Ġby Ġresolver ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġresolve (" invalid ") Ġ} Ġdo Return ĠPath Resolution Result . Invalid Path (" invalid ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Resolver Factory Ġ= Ġmock < Path Resolver Factory > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ġ{ Ġcreate Resolver For Current Directory () Ġ} Ġdo Return Ġpath Resolver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" the Ġdirectory Ġis Ġnot Ġrequired Ġto Ġexist ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconverter Ġ= ĠValue Converters . path To Directory ( path Resolver Factory , Ġmust Exist Ġ= Ġfalse ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġpath Ġto Ġa Ġfile ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" file "), ĠequalTo ( Value Conversion Result . Conversion Failed (" The Ġpath Ġ' file ' Ġ( described Ġas Ġfile Ġby Ġresolver ) Ġrefers Ġto Ġa Ġfile . "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġpath Ġto Ġa Ġdirectory ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġresolved Ġpath ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" directory "), ĠequalTo ( Value Conversion Result . Conversion Succeeded ( file System . getPath ("/ resolved / directory ")) )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġpath Ġto Ġsomething Ġother Ġthan Ġa Ġfile Ġor Ġdirectory ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" other "), ĠequalTo ( Value Conversion Result . Conversion Failed (" The Ġpath Ġ' other ' Ġ( described Ġas Ġother Ġby Ġresolver ) Ġrefers Ġto Ġsomething Ġother Ġthan Ġa Ġdirectory . "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġpath Ġto Ġa Ġdirectory Ġthat Ġdoes Ġnot Ġexist ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġresolved Ġpath ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" does - not - exist "), ĠequalTo ( Value Conversion Result . Conversion Succeeded ( file System . getPath ("/ resolved / does - not - exist ")) )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" an Ġinvalid Ġpath ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" invalid "), ĠequalTo ( Value Conversion Result . Conversion Failed ("' invalid ' Ġis Ġnot Ġa Ġvalid Ġpath . "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" the Ġfile Ġis Ġrequired Ġto Ġexist ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconverter Ġ= ĠValue Converters . path To Directory ( path Resolver Factory , Ġmust Exist Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġpath Ġto Ġa Ġfile ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" file "), ĠequalTo ( Value Conversion Result . Conversion Failed (" The Ġpath Ġ' file ' Ġ( described Ġas Ġfile Ġby Ġresolver ) Ġrefers Ġto Ġa Ġfile . "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġpath Ġto Ġa Ġdirectory ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġthe Ġresolved Ġpath ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" directory "), ĠequalTo ( Value Conversion Result . Conversion Succeeded ( file System . getPath ("/ resolved / directory ")) )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġpath Ġto Ġsomething Ġother Ġthan Ġa Ġfile Ġor Ġdirectory ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" other "), ĠequalTo ( Value Conversion Result . Conversion Failed (" The Ġpath Ġ' other ' Ġ( described Ġas Ġother Ġby Ġresolver ) Ġrefers Ġto Ġsomething Ġother Ġthan Ġa Ġdirectory . "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" a Ġpath Ġto Ġa Ġdirectory Ġthat Ġdoes Ġnot Ġexist ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" does - not - exist "), ĠequalTo ( Value Conversion Result . Conversion Failed (" The Ġdirectory Ġ' does - not - exist ' Ġ( described Ġas Ġdoes Ġnot Ġexist Ġby Ġresolver ) Ġdoes Ġnot Ġexist . "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgiven (" an Ġinvalid Ġpath ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit (" returns Ġan Ġerror ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( converter . convert (" invalid "), ĠequalTo ( Value Conversion Result . Conversion Failed ("' invalid ' Ġis Ġnot Ġa Ġvalid Ġpath . "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ