/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠHo ch ik ong Ċ Ġ* Ġ Ġ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 Ġservice . device /* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠHo ch ik ong Ċ Ġ* Ġ Ġ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 . Ċ Ġ*/ Ċ Ċ import Ġio . github . ho ch ik ong . kt meta . common . FileType Ċ import Ġio . github . ho ch ik ong . kt meta . service . device . File Row Ċ import Ġio . github . ho ch ik ong . kt meta . service . device . impl . Local Disk Driver Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Method Order er Ċ import Ġorg . junit . jupiter . api . Order Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . TestMethod Order ĊĊ Ċ /** Ċ Ġ* ĠEnvironment ĠPrepare : Ċ Ġ* Ċ Ġ* ĠWhen Ġyou Ġuse Ġa Ġdifferent Ġmachine Ġto Ġrun Ġtests . Ċ Ġ* ĠYou Ġshould Ġlook Ġat Ġthe Ġdirectory Ġ' Kt Meta \ kt meta - app \ src \ test \ resources \ tree ' Ġin Ġthe Ġsource Ġcode , Ċ Ġ* Ġto Ġcreate Ġyour Ġtest Ġdirectory Ġtree . ĠAfter Ġthat , Ġmodify Ġthe Ġtest Ġcode Ġto Ġrun Ġthe Ġtest . Ċ Ġ* Ċ Ġ* Ġ*/ Ċ @ TestMethod Order ( Method Order er . Order Annotation :: class ) Ċ class ĠTest Local Disk Driver Ġ{ ĊĠĠĠ Ġprivate Ġval Ġpath Ġ= Ġ" F :\\ dev tmp \\ tree " ĊĠĠĠ Ġprivate Ġval Ġdata Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠFile Row ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself Path Ġ= Ġ" F :\\ dev tmp \\ tree ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Path Ġ= Ġ" F :\\ dev tmp \\ tree ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas F ather Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfather Path Ġ= Ġ".", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Child Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠFile Type . Directory ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠFile Row ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself Path Ġ= Ġ" F :\\ dev tmp \\ tree \\ sub 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Path Ġ= Ġ" F :\\ dev tmp \\ tree ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas F ather Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfather Path Ġ= Ġ" F :\\ dev tmp \\ tree ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Child Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠFile Type . Directory ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠFile Row ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself Path Ġ= Ġ" F :\\ dev tmp \\ tree \\ sub 1 \\ sub 1 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Path Ġ= Ġ" F :\\ dev tmp \\ tree ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas F ather Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfather Path Ġ= Ġ" F :\\ dev tmp \\ tree \\ sub 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Child Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠFile Type . Directory ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠFile Row ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself Path Ġ= Ġ" F :\\ dev tmp \\ tree \\ sub 1 \\ sub 1 1 \\ sub 1 a . txt ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Path Ġ= Ġ" F :\\ dev tmp \\ tree ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas F ather Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfather Path Ġ= Ġ" F :\\ dev tmp \\ tree \\ sub 1 \\ sub 1 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Child Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠFile Type . File ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠFile Row ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself Path Ġ= Ġ" F :\\ dev tmp \\ tree \\ sub 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Path Ġ= Ġ" F :\\ dev tmp \\ tree ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas F ather Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfather Path Ġ= Ġ" F :\\ dev tmp \\ tree ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Child Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠFile Type . Directory ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠFile Row ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself Path Ġ= Ġ" F :\\ dev tmp \\ tree \\ sub 2 \\ sub 2 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Path Ġ= Ġ" F :\\ dev tmp \\ tree ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas F ather Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfather Path Ġ= Ġ" F :\\ dev tmp \\ tree \\ sub 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Child Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠFile Type . Directory ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠFile Row ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself Path Ġ= Ġ" F :\\ dev tmp \\ tree \\ sub 2 \\ sub 2 2 \\ sub 2 2 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Path Ġ= Ġ" F :\\ dev tmp \\ tree ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas F ather Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfather Path Ġ= Ġ" F :\\ dev tmp \\ tree \\ sub 2 \\ sub 2 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Child Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠFile Type . Directory ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠFile Row ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself Path Ġ= Ġ" F :\\ dev tmp \\ tree \\ sub 2 \\ sub 2 2 \\ sub 2 2 2 \\ nms l . txt ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Path Ġ= Ġ" F :\\ dev tmp \\ tree ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas F ather Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfather Path Ġ= Ġ" F :\\ dev tmp \\ tree \\ sub 2 \\ sub 2 2 \\ sub 2 2 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Child Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠFile Type . File ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠFile Row ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself Path Ġ= Ġ" F :\\ dev tmp \\ tree \\ sub 2 \\ sub 2 a . txt ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Path Ġ= Ġ" F :\\ dev tmp \\ tree ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas F ather Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfather Path Ġ= Ġ" F :\\ dev tmp \\ tree \\ sub 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Child Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠFile Type . File ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠFile Row ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself Path Ġ= Ġ" F :\\ dev tmp \\ tree \\ sub a . txt ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Path Ġ= Ġ" F :\\ dev tmp \\ tree ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas F ather Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfather Path Ġ= Ġ" F :\\ dev tmp \\ tree ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Child Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠFile Type . File ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠFile Row ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġself Path Ġ= Ġ" F :\\ dev tmp \\ tree \\ sub b . txt ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Path Ġ= Ġ" F :\\ dev tmp \\ tree ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas F ather Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfather Path Ġ= Ġ" F :\\ dev tmp \\ tree ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Child Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠFile Type . File ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĊĠĠĠ Ġ@ Order ( 1 ) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Set Path () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= ĠLocal Disk Driver () ĊĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġobj . setTarget Dir ("./ plugins ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( false , Ġobj . setTarget Dir ("$ path \\ nms l ")) ĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġobj . setTarget Dir ( path )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Order ( 2 ) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Tree () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobj Ġ= ĠLocal Disk Driver () ĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġobj . setTarget Dir ( path )) ĊĠĠĠĠĠĠĠ Ġval Ġrows Ġ= Ġobj . getFull Tree () ĊĠĠĠĠĠĠĠ Ġ// ĠFile (" logs . txt "). write Text ( rows . map Ġ{ Ġ"$ it Ġ\ n " Ġ}. reduce Ġ{ Ġacc , Ġs Ġ-> Ġacc Ġ+ Ġs Ġ}) ĊĠĠĠĠĠĠĠ ĠassertEquals ( data . size , Ġrows . size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġdata . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( data [ index ], Ġrows [ index ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln ( obj . init Abs Path ) ĊĠĠĠĠĠĠĠ Ġobj . dirs . forEach Ġ{ Ġprintln ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Order ( 3 ) ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Push Pop Ls Filter () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" F :\\ dev tmp \\ tree \\ sub 2 \\ sub 2 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" F :\\ dev tmp \\ tree \\ sub 2 \\ sub 2 a . txt " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= ĠLocal Disk Driver () ĊĠĠĠĠĠĠĠ Ġx . setTarget Dir ( path ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġx . push (" sub 2 ")) ĊĠĠĠĠĠĠĠ Ġ// println ( x . dirs ) ĊĠĠĠĠĠĠĠ Ġprintln ( x . check Stack ()) ĊĠĠĠĠĠĠĠ ĠassertEquals (" F :\\ dev tmp \\ tree \\ sub 2 ", Ġx . pwd ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( list , Ġx . ls ()) ĊĠĠĠĠĠĠĠ Ġx . pop () ĊĠĠĠĠĠĠĠ Ġprintln ( x . check Stack ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġx . push (" sub 2 2 2 ")) ĊĠĠĠĠĠĠĠ Ġval Ġfiles Ġ= Ġx . glob Filter ( rule Ġ= Ġ"*. txt ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" F :\\ dev tmp \\ tree \\ sub 2 \\ sub 2 2 \\ sub 2 2 2 \\ nms l . txt ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiles [ 0 ] ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġx . pop () ĊĠĠĠĠĠĠĠ Ġ// Ġat Ġroot Ġdir ĊĠĠĠĠĠĠĠ Ġprintln ( x . ls ()) ĊĠĠĠĠĠĠĠ Ġprintln ( x . glob Filter (" root ", Ġ"*. txt ")) ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġx . readFile (" F :\\ dev tmp \\ tree \\ sub b . txt ") ĊĠĠĠĠĠĠĠ Ġprintln ( file ) ĊĠĠĠ Ġ} Ċ }