package Ġde . daniel sch ol z . k arg parser Ċ Ċ import Ġde . daniel sch ol z . k arg parser . parser . Boolean Param Ċ import Ġde . daniel sch ol z . k arg parser . parser . FileList Param Ċ import Ġde . daniel sch ol z . k arg parser . parser . File Param Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . rules . Expected Exception Ċ import Ġjava . io . File Ċ import Ġkotlin . test .* Ċ Ċ class ĠArg Parser Complex Builder Test Ġ{ ĊĊĠĠ Ġ@ Rule ĊĠĠ Ġ@ Jvm Field ĊĠĠ Ġvar Ġthrown : ĠExpected Exception Ġ= ĠExpected Exception . none () ĊĊĠĠ Ġ@ Test ĊĠĠ Ġfun Ġtest Range 5 _ 0 () Ġ{ ĊĠĠĠĠĠ Ġclass ĠTest ( var Ġfiles : ĠList < File > Ġ= ĠlistOf ()) ĊĊĠĠĠĠĠ Ġval Ġtest Ġ= ĠTest () ĊĊĠĠĠĠĠ Ġval Ġarg Parser Ġ= ĠArg Parser Builder ( test ). build With Ġ{ ĊĠĠĠĠĠĠĠĠ Ġadd Name less Last ( param Values :: files , ĠFile List Param ( 2 .. 2 )) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġarg Parser . parse Args ( array Of (" a ", Ġ" b ")) ĊĊĠĠĠĠĠ ĠassertEquals ( 2 , Ġtest . files . size ) ĊĠĠĠĠĠ ĠassertEquals (" a ", Ġtest . files [ 0 ]. toString ()) ĊĠĠĠĠĠ ĠassertEquals (" b ", Ġtest . files [ 1 ]. toString ()) ĊĠĠ Ġ} ĊĊĠĠ Ġ@ Test ĊĠĠ Ġfun Ġtest Range 5 _ 1 () Ġ{ ĊĠĠĠĠĠ Ġclass ĠMain Params ( var Ġtest : ĠBoolean Ġ= Ġfalse , Ġvar Ġfiles : ĠList < File > Ġ= ĠlistOf ()) ĊĊĠĠĠĠĠ Ġval Ġmain Params Ġ= ĠMain Params () ĊĊĠĠĠĠĠ Ġval Ġarg Parser Ġ= ĠArg Parser Builder ( main Params ). build With Ġ{ ĊĠĠĠĠĠĠĠĠ Ġadd ( param Values :: test , ĠBoolean Param ()) ĊĠĠĠĠĠĠĠĠ Ġadd Name less Last ( param Values :: files , ĠFile List Param ( 2 .. 2 )) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġarg Parser . parse Args ( array Of ("-- test ", Ġ" a ", Ġ" b ")) ĊĊĠĠĠĠĠ ĠassertTrue ( main Params . test ) ĊĠĠĠĠĠ ĠassertEquals ( 2 , Ġmain Params . files . size ) ĊĠĠĠĠĠ ĠassertEquals (" a ", Ġmain Params . files [ 0 ]. toString ()) ĊĠĠĠĠĠ ĠassertEquals (" b ", Ġmain Params . files [ 1 ]. toString ()) ĊĠĠ Ġ} ĊĊĠĠ Ġ@ Test ĊĠĠ Ġfun Ġtest Range 5 _ 2 () Ġ{ ĊĠĠĠĠĠ Ġthrown . expect Message (" Un assigned Ġarguments : Ġa , Ġb , Ġ-- c ") ĊĊĠĠĠĠĠ Ġclass ĠTest ( var Ġtest : ĠBoolean Ġ= Ġfalse , Ġvar Ġfiles : ĠList < File > Ġ= ĠlistOf ()) ĊĊĠĠĠĠĠ Ġval Ġarg Parser Ġ= ĠArg Parser Builder ( Test ()). build With Ġ{ ĊĠĠĠĠĠĠĠĠ Ġadd ( param Values :: test , ĠBoolean Param ()) ĊĠĠĠĠĠĠĠĠ Ġadd Name less Last ( param Values :: files , ĠFile List Param ( 2 .. 2 )) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġarg Parser . parse Args ( array Of ("-- test ", Ġ" a ", Ġ" b ", Ġ"-- c ")) ĊĠĠ Ġ} ĊĊĠĠ Ġ@ Test ĊĠĠ Ġfun Ġtest Range 5 _ 3 () Ġ{ ĊĠĠĠĠĠ Ġthrown . expect Message (" Un assigned Ġarguments : Ġa , Ġb , Ġ-- c ") ĊĊĠĠĠĠĠ Ġclass ĠTest ( var Ġfiles : ĠList < File > Ġ= ĠlistOf ()) ĊĊĠĠĠĠĠ Ġval Ġarg Parser Ġ= ĠArg Parser Builder ( Test ()). build With Ġ{ ĊĠĠĠĠĠĠĠĠ Ġadd Name less Last ( param Values :: files , ĠFile List Param ( 2 .. 2 )) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġarg Parser . parse Args ( array Of (" a ", Ġ" b ", Ġ"-- c ")) ĊĠĠ Ġ} ĊĊĠĠ Ġ@ Test ĊĠĠ Ġfun Ġtest Sub Parser () Ġ{ ĊĠĠĠĠĠ Ġclass ĠMain Params ( var Ġfoo : ĠBoolean Ġ= Ġfalse , Ġvar Ġaction : ĠBoolean Ġ= Ġfalse ) ĊĠĠĠĠĠ Ġclass ĠSub Params ( var Ġfiles : ĠList < File > Ġ= ĠlistOf ()) ĊĊĠĠĠĠĠ Ġval Ġmain Params Ġ= ĠMain Params () ĊĠĠĠĠĠ Ġval Ġsub Params Ġ= ĠSub Params () ĊĊĠĠĠĠĠ Ġval Ġparser Ġ= ĠArg Parser Builder ( main Params ). build With Ġ{ ĊĠĠĠĠĠĠĠĠ Ġadd ( param Values :: foo , ĠBoolean Param ()) ĊĠĠĠĠĠĠĠĠ Ġadd Action Parser (" compare _ files ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArg Parser Builder ( sub Params ). build With Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Name less Last ( param Values :: files , ĠFile List Param ( 1 .. 2 ), Ġrequired Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Params . action Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġparser . parse Args ( array Of ("-- compare _ files ", Ġ"-- foo ", Ġ" a ", Ġ" b ")) ĊĊĠĠĠĠĠ ĠassertTrue ( main Params . foo ) ĊĠĠĠĠĠ ĠassertTrue ( main Params . action ) ĊĠĠĠĠĠ ĠassertEquals ( 2 , Ġsub Params . files . size ) ĊĠĠĠĠĠ ĠassertEquals (" a ", Ġsub Params . files [ 0 ]. toString ()) ĊĠĠĠĠĠ ĠassertEquals (" b ", Ġsub Params . files [ 1 ]. toString ()) ĊĠĠ Ġ} ĊĊĠĠ Ġ@ Test ĊĠĠ Ġfun Ġtest Sub Parser 2 () Ġ{ ĊĠĠĠĠĠ Ġclass ĠMain Params ( var Ġfoo : ĠBoolean Ġ= Ġfalse , Ġvar Ġaction : ĠBoolean Ġ= Ġfalse ) ĊĠĠĠĠĠ Ġclass ĠSub Params ( var Ġfile 1 : ĠFile ? Ġ= Ġnull , Ġvar Ġfile 2 : ĠFile ? Ġ= Ġnull ) ĊĊĠĠĠĠĠ Ġval Ġmain Params Ġ= ĠMain Params () ĊĠĠĠĠĠ Ġval Ġsub Params Ġ= ĠSub Params () ĊĊĠĠĠĠĠ Ġval Ġparser Ġ= ĠArg Parser Builder ( main Params ). build With Ġ{ ĊĠĠĠĠĠĠĠĠ Ġadd ( param Values :: foo , ĠBoolean Param ()) ĊĠĠĠĠĠĠĠĠ Ġadd Action Parser (" compare _ files ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArg Parser Builder ( sub Params ). build With Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Name less Last ( param Values :: file 1 , ĠFile Param (), Ġrequired Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Name less Last ( param Values :: file 2 , ĠFile Param (), Ġrequired Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Params . action Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġparser . parse Args ( array Of ("-- compare _ files ", Ġ"-- foo ", Ġ" a ", Ġ" b ")) ĊĊĠĠĠĠĠ ĠassertTrue ( main Params . foo ) ĊĠĠĠĠĠ ĠassertTrue ( main Params . action ) ĊĠĠĠĠĠ ĠassertEquals (" a ", Ġsub Params . file 1 . toString ()) ĊĠĠĠĠĠ ĠassertEquals (" b ", Ġsub Params . file 2 . toString ()) ĊĠĠ Ġ} ĊĊĠĠ Ġ@ Test ĊĠĠ Ġfun Ġtest Sub Parser 3 () Ġ{ ĊĠĠĠĠĠ Ġclass ĠMain Params ( var Ġfoo : ĠBoolean Ġ= Ġfalse , Ġvar Ġaction 1 : ĠBoolean Ġ= Ġfalse , Ġvar Ġaction 2 : ĠBoolean Ġ= Ġfalse ) ĊĠĠĠĠĠ Ġclass ĠSub Params 1 ( var Ġfile 1 : ĠFile ? Ġ= Ġnull ) ĊĠĠĠĠĠ Ġclass ĠSub Params 2 ( var Ġfile 1 : ĠFile ? Ġ= Ġnull ) ĊĊĠĠĠĠĠ Ġval Ġmain Params Ġ= ĠMain Params () ĊĠĠĠĠĠ Ġval Ġsub Params 1 Ġ= ĠSub Params 1 () ĊĠĠĠĠĠ Ġval Ġsub Params 2 Ġ= ĠSub Params 2 () ĊĊĠĠĠĠĠ Ġval Ġparser Ġ= ĠArg Parser Builder ( main Params ). build With Ġ{ ĊĠĠĠĠĠĠĠĠ Ġadd ( param Values :: foo , ĠBoolean Param ()) ĊĠĠĠĠĠĠĠĠ Ġadd Action Parser (" compare _ files ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArg Parser Builder ( sub Params 1 ). build With Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Name less Last ( param Values :: file 1 , ĠFile Param (), Ġrequired Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Params . action 1 Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġadd Action Parser (" sync _ files ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠArg Parser Builder ( sub Params 2 ). build With Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Name less Last ( param Values :: file 1 , ĠFile Param (), Ġrequired Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Params . action 2 Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġparser . parse Args ( array Of ("-- compare _ files ", Ġ"-- foo ", Ġ" a ")) ĊĊĠĠĠĠĠ ĠassertTrue ( main Params . foo ) ĊĠĠĠĠĠ ĠassertTrue ( main Params . action 1 ) ĊĠĠĠĠĠ ĠassertFalse ( main Params . action 2 ) ĊĠĠĠĠĠ ĠassertEquals (" a ", Ġsub Params 1 . file 1 . toString ()) ĊĠĠĠĠĠ ĠassertNull ( sub Params 2 . file 1 ) ĊĠĠ Ġ} ĊĊĠĠ Ġ@ Test ĊĠĠ Ġfun Ġtest Failure 1 () Ġ{ ĊĠĠĠĠĠ Ġthrown . expect Message (" There Ġare Ġnamed Ġparameter Ġafter Ġname less Ġparameter : Ġtest ") ĊĊĠĠĠĠĠ Ġclass ĠParams ( var Ġfiles : ĠList < File >? Ġ= Ġnull , Ġvar Ġtest : ĠBoolean Ġ= Ġfalse ) ĊĊĠĠĠĠĠ ĠArg Parser Builder ( Params ()). build With Ġ{ ĊĠĠĠĠĠĠĠĠ Ġadd Name less Last ( param Values :: files , ĠFile List Param ( 2 .. 2 )) ĊĠĠĠĠĠĠĠĠ Ġadd ( param Values :: test , ĠBoolean Param ()) ĊĠĠĠĠĠ Ġ} ĊĠĠ Ġ} Ċ }