package Ġk of iko Ċ Ċ import Ġorg . am sh ove . k lu ent . shouldBe Empty Ċ import Ġorg . am sh ove . k lu ent . shouldBe EqualTo Ċ import Ġorg . am sh ove . k lu ent . should Contain Ċ import Ġorg . am sh ove . k lu ent . should Contain Same Ċ import Ġorg . junit . Test Ċ import Ġjava . awt . Color Ċ import Ġjava . io . Buffered Writer Ċ import Ġjava . io . File Ċ import Ġjava . io . FileWriter Ċ import Ġjava . math . BigInteger Ċ import Ġjava . nio . file . Access Mode Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Paths Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġkotlin . reflect . jvm . java Field ĊĊ Ċ @ Suppress (" PropertyName ") Ċ class ĠConfig Ġ{ ĊĠĠĠ Ġvar Ġdummy Ġ= Ġ 1 Ċ } Ċ Ċ class ĠParent Of Nested Ġ{ ĊĠĠĠ Ġclass ĠConfig Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġdummy Ġ= Ġ 1 ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠMy Car Ġ{ ĊĠĠĠ Ġvar Ġcolor Ġ= Ġ" red " ĊĠĠĠ Ġvar Ġyear Ġ= Ġ 2 0 2 0 Ċ } Ċ Ċ enum Ġclass ĠColors Ġ{ ĠRed , ĠGreen , ĠBlue Ġ} Ċ Ċ @ Suppress (" PropertyName ") Ċ class ĠK of iko Sample Config Ġ{ ĊĠĠĠ Ġval ĠMy Int Ġ= Ġ 1 1 ĊĠĠĠ Ġval ĠMy Long : ĠLong ? Ġ= Ġ 5 5 L ĊĠĠĠ Ġval ĠMy String 1 Ġ= Ġ" abc " ĊĠĠĠ Ġval ĠMy String 2 : ĠString ? Ġ= Ġ" def " ĊĠĠĠ Ġvar ĠMy Bool 1 Ġ= Ġfalse ĊĠĠĠ Ġvar ĠMy Bool 2 Ġ= Ġfalse ĊĠĠĠ Ġvar ĠMy Bool 3 Ġ= Ġfalse ĊĊĠĠĠ Ġ@ Config Name ( name Ġ= Ġ" D bl ") ĊĠĠĠ Ġvar ĠMy Double Ġ= Ġ 2 3 4 . 5 6 7 ĊĠĠĠ Ġvar ĠMy Class 1 Ġ= ĠFile Writer :: class . java ĊĠĠĠ Ġvar ĠMy Class 2 Ġ= ĠFile Writer :: class . java ĊĠĠĠ Ġvar ĠMy Class 3 : ĠClass < out ĠAppend able > Ġ= ĠBuffered Writer :: class . java ĊĠĠĠ Ġvar ĠMy Str List Ġ= ĠlistOf (" a ", Ġ" b ", Ġ" c ") ĊĠĠĠ Ġvar ĠMy Str List 2 Ġ= ĠlistOf (" a ", Ġ" b ", Ġ" c ") ĊĠĠĠ Ġvar ĠMy Int List Ġ= ĠlistOf ( 2 , Ġ 4 , Ġ 6 ) ĊĠĠĠ Ġvar ĠMy Long List Ġ= ĠlistOf ( 2 L , Ġ 4 L , Ġ 6 L ) ĊĠĠĠ Ġvar ĠMy Float List Ġ= ĠlistOf ( 1 . 1 f , Ġ 2 . 1 f , Ġ 3 . 1 f ) ĊĠĠĠ Ġvar ĠMy Double List Ġ= ĠlistOf ( 2 . 1 , Ġ 3 . 1 , Ġ 4 . 1 ) ĊĠĠĠ Ġvar ĠMy Boolean List Ġ= ĠlistOf ( true , Ġfalse ) ĊĠĠĠ Ġval ĠMy Dict 1 Ġ= Ġmap Of (" a " Ġto Ġ 1 , Ġ" b " Ġto Ġ 2 ) ĊĠĠĠ Ġvar ĠMy Dict 2 Ġ= Ġmap Of (" a " Ġto Ġ 1 , Ġ" b " Ġto Ġ 2 ) ĊĠĠĠ Ġvar ĠMy Dict 3 Ġ= Ġmap Of (" a " Ġto Ġ 1 , Ġ" b " Ġto Ġ 2 ) ĊĠĠĠ Ġvar ĠMy Dict 4 Ġ= Ġmap Of (" a " Ġto Ġ 1 , Ġ" b " Ġto Ġ 2 ) ĊĠĠĠ Ġvar ĠMy Dict 5 Ġ= Ġmap Of (" a " Ġto Ġ 1 , Ġ" b " Ġto Ġ 2 ) ĊĠĠĠ Ġval ĠMy Int To Float Dict Ġ= Ġmap Of ( 1 Ġto Ġ 1 . 1 , Ġ 2 Ġto Ġ 2 . 2 ) ĊĠĠĠ Ġvar ĠMy Color Ġ= ĠColors . Red ĊĠĠĠ Ġval ĠMy Access Mode Ġ= ĠAccess Mode . EXECUTE ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= ĠK of iko Sample Config () ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK of iko . add ( instance ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Suppress (" unused ", Ġ" PropertyName ", Ġ" Protected In Final ") Ċ class ĠAccess Modes Sample Ġ{ ĊĠĠĠ Ġvar Ġprivate Setter Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġval Ġval Property Ġ= Ġ" r " ĊĊĠĠĠ Ġvar Ġname Ġ= Ġ" name 1 " ĊĠĠĠ Ġvar ĠAge Ġ= Ġ 1 1 ĊĠĠĠ Ġvar ĠCOLOR Ġ= ĠColor . BLUE ĊĠĠĠ Ġprivate Ġvar Ġpriv Ġ= Ġ" private 1 " ĊĠĠĠ Ġprotected Ġvar Ġprot Ġ= Ġ" protected 1 " ĊĠĠĠ Ġinternal Ġvar Ġintern Ġ= Ġ" internal 1 " ĊĠĠĠ Ġvar Ġ_ height Ġ= Ġ 1 2 3 ĊĠĠĠ Ġvar ĠNAME Ġ= Ġ" name 2 " ĊĠĠĠ Ġvar Ġx Ġ= Ġ" x 1 " ĊĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġvar Ġj vm Field Var Ġ= Ġ 2 ĊĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġval Ġj vm Field Val Ġ= Ġ 2 7 ĊĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġprotected Ġvar Ġj vm Field Protected Var Ġ= Ġ 2 2 ĊĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġinternal Ġvar Ġj vm Field Internal Var Ġ= Ġ 2 2 4 ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstatic Field Ġ= Ġ 1 4 5 ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠK of iko Test Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Fields () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfields Ġ= Ġget Over rid able Fields ( Access Modes Sample :: class . java , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfield Names Ġ= Ġfields . map Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġmutable ListOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" name ", Ġ" Age ", Ġ" COLOR ", Ġ"_ height ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" NAME ", Ġ" jvm Field Var ", Ġ" x ", Ġ" jvm Field Internal Var " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfield Names . should Contain Same ( expected ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfields With ReadOnly Ġ= Ġget Over rid able Fields ( Access Modes Sample :: class . java , Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfield Names 2 Ġ= Ġfields With ReadOnly . map Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠ Ġexpected . add (" val Property ") ĊĠĠĠĠĠĠĠ Ġexpected . add (" private Setter ") ĊĠĠĠĠĠĠĠ Ġexpected . add (" jvm Field Val ") ĊĊĠĠĠĠĠĠĠ Ġfield Names 2 . should Contain Same ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Case Look ups 1 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlookup Provider Ġ= ĠDefault Name Lookup Provider () ĊĠĠĠĠĠĠĠ Ġval Ġlook ups Ġ= Ġlookup Provider . get Case Look ups (" my Age ") ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠlistOf (" My Age ", Ġ" my age ", Ġ" MY AGE ", Ġ" my Age ", Ġ" my _ age ", Ġ" MY _ AGE ", Ġ" my - age ", Ġ" MY - AGE ") ĊĠĠĠĠĠĠĠ Ġlook ups . should Contain Same ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Case Look ups 2 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlookup Provider Ġ= ĠDefault Name Lookup Provider () ĊĠĠĠĠĠĠĠ Ġval Ġlook ups Ġ= Ġlookup Provider . get Case Look ups (" S NA KE _ CASE ") ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠlistOf (" S NA KE _ CASE ", Ġ" snake _ case ") ĊĠĠĠĠĠĠĠ Ġlook ups . should Contain Same ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestGet Section Name Look ups () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlookup Provider Ġ= ĠDefault Name Lookup Provider () ĊĠĠĠĠĠĠĠ Ġval Ġlook ups Ġ= Ġlookup Provider . get Section Look ups (" Database Config ") ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Database Config ", Ġ" database config ", Ġ" DATABASE CONFIG ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" DATABASE _ CONFIG ", Ġ" database _ config ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Database ", Ġ" DATABASE ", Ġ" database ", Ġ" database - config ", Ġ" DATABASE - CONFIG " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġlook ups . should Contain Same ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Json (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ""" ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Int ": Ġ 3 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" MY _ LONG ": Ġ 6 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" my _ string 2 ": Ġ" xxx ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Bool 2 ": Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Bool 3 ": Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" D bl ": Ġ 7 7 7 . 8 8 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Class 2 ": Ġ" java . lang . Thread ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Class 3 ": Ġ" java . io . FileWriter ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Str List ": Ġ[" x "," y "," z "], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Str List 2 ": Ġ[" ^ A | "," xx "], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Int List ": Ġ[ 1 , 3 , 5 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Long List ": Ġ[ 1 , 3 , 5 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Float List ": Ġ[ 4 . 1 , 4 . 2 , 4 . 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Double List ": Ġ[ 5 . 1 , 5 . 2 , 5 . 3 ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Boolean List ": Ġ[ false , Ġfalse , Ġfalse , Ġtrue ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Dict 1 ": Ġ{" a " Ġ: Ġ 1 0 , Ġ" c ": Ġ 3 0 }, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Dict 3 ": Ġ{" ^ C | ": Ġ 0 }, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Dict 4 ": Ġ{" ^ C | ": Ġ 0 , Ġ" a " Ġ: Ġ 1 0 , Ġ" c ": Ġ 3 0 }, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Int To Float Dict ": Ġ{" 1 ": 1 . 3 , Ġ" 2 ": 2 . 3 }, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Color ": Ġ" Green ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" My Access Mode ": Ġ" READ " ĊĠĠĠ Ġ} ĊĠĠĠ Ġ""" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwrite Text File ( name : ĠString , Ġcontent : ĠString ): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠPaths . get (" test _ cfg ") ĊĠĠĠĠĠĠĠ ĠFiles . create Directories ( path ) ĊĠĠĠĠĠĠĠ ĠFiles . writeString ( path . resolve ( name ), Ġcontent ) ĊĠĠĠĠĠĠĠ Ġreturn Ġpath . resolve ( name ). to File () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Json Folder Provider () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġget Json () ĊĠĠĠĠĠĠĠ Ġwrite Text File (" k of iko _ sample . json ", Ġjson ) ĊĠĠĠĠĠĠĠ Ġval Ġprovider Ġ= ĠJson Folder Config Provider (" test _ cfg ") ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings () ĊĠĠĠĠĠĠĠ Ġsettings . config Providers . add ( provider ) ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠK of iko Sample Config () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg ) ĊĠĠĠĠĠĠĠ Ġassert Expected Config ( cfg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Json Provider () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġjson Ġ= Ġget Json () ĊĠĠĠĠĠĠĠ Ġjson Ġ= Ġ""" Ġ{ Ġ" k of iko _ sample ": Ġ$ json Ġ} Ġ""" ĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings () ĊĠĠĠĠĠĠĠ Ġsettings . config Providers . add ( Json Config Provider ( Config Source . from Text ( json ))) ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠK of iko Sample Config () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg ) ĊĠĠĠĠĠĠĠ Ġassert Expected Config ( cfg ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Env Provider () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= Ġ" test : k of iko _ sample :" ĊĠĠĠĠĠĠĠ Ġval Ġenv Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } my _ int " Ġto Ġ" 3 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My Long " Ġto Ġ" 6 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My String 2 " Ġto Ġ" xxx ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My Bool 2 " Ġto Ġ" true ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My Bool 3 " Ġto Ġ" 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } D bl " Ġto Ġ" 7 7 7 . 8 8 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My Class 2 " Ġto Ġ" java . lang . Thread ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My Class 3 " Ġto Ġ" java . io . FileWriter ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My Str List " Ġto Ġ" x , y , z ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My Str List 2 " Ġto Ġ"^ A | xx ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My Int List " Ġto Ġ" 1 , 3 , 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My Long List " Ġto Ġ" 1 , 3 , 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My Float List " Ġto Ġ" 4 . 1 , 4 . 2 , 4 . 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My Double List " Ġto Ġ" 5 . 1 , 5 . 2 , 5 . 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My Boolean List " Ġto Ġ" FALSE , f , no , y ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My Dict 1 " Ġto Ġ" a : 1 0 , c : 3 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My Dict 3 " Ġto Ġ"^ C | ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My Dict 4 " Ġto Ġ"^ C | a : 1 0 , c : 3 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My Int To Float Dict " Ġto Ġ" 1 : 1 . 3 , 2 : 2 . 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My Color " Ġto Ġ" Green ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ prefix } My Access Mode " Ġto Ġ" READ ", ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġprovider Ġ= ĠEnv Config Provider (" test ", Ġ" :", Ġenv ) ĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings () ĊĠĠĠĠĠĠĠ Ġsettings . config Providers . add ( provider ) ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠK of iko Sample Config () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg ) ĊĠĠĠĠĠĠĠ Ġassert Expected Config ( cfg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Ini Provider () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġini Text Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ[ KO FI KO _ SAMPLE ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy _ int = 3 3 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Long = 6 6 ĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy String 2 = xxx ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Bool 2 = true ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Bool 3 = ĠĠ ĠTRUE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD bl = ĠĠĠĠ 7 7 7 . 8 8 8 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Class 2 ĠĠĠ Ġ= java . lang . Thread ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Class 3 ĠĠĠ Ġ= ĠĠ Ġjava . io . FileWriter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMy Str List = x , y , z ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Str List 2 = ^ A | xx ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Int List = 1 , 3 , 5 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Long List =[ 1 , Ġ 3 , Ġ 5 ] ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Float List = 4 . 1 , 4 . 2 , 4 . 3 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Double List = 5 . 1 , 5 . 2 , 5 . 3 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Boolean List = 0 , off , n , YES ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Dict 1 ={" a ": 1 0 , Ġ" c ": 3 0 } ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Dict 3 = ^ C | ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Dict 4 = ^ C | a : 1 0 , c : 3 0 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Int To Float Dict ={" 1 ": 1 . 3 ," 2 ": 2 . 3 } ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Color = Green ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ# comment ĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ ĠMy Access Mode = READ ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings ( Ini Config Provider ( Config Source . from Text ( ini Text ))) ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠK of iko Sample Config () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg ) ĊĠĠĠĠĠĠĠ Ġassert Expected Config ( cfg ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Cli Provider () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcli Args Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ my _ int = 3 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Long = 6 6 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My String 2 = xxx ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Bool 2 = true ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Bool 3 = TRUE ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ D bl = 7 7 7 . 8 8 8 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Class 2 = java . lang . Thread ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Class 3 = java . io . FileWriter ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Str List = x , y , z ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Str List 2 = ^ A | xx ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Int List = 1 , 3 , 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Long List = 1 , 3 , 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Float List = 4 . 1 , 4 . 2 , 4 . 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Double List = 5 . 1 , 5 . 2 , 5 . 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Boolean List = f , 0 , 0 , t ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Dict 1 = a : 1 0 , c : 3 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Dict 3 = ^ C | ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Dict 4 = ^ C | a : 1 0 , c : 3 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Dict 5 = a : 1 , b : 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Int To Float Dict = 1 : 1 . 3 , 2 : 2 . 3 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Color = Green ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", Ġ" k of iko _ sample _ My Access Mode = READ ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"- ov ", ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġprovider Ġ= ĠCli Config Provider ( cli Args ) ĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings () ĊĠĠĠĠĠĠĠ Ġsettings . config Providers . add ( provider ) ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠK of iko Sample Config () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg ) ĊĠĠĠĠĠĠĠ Ġassert Expected Config ( cfg ) ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġassert Expected Config ( cfg : ĠK of iko Sample Config ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcfg . My Int . shouldBe EqualTo ( 3 3 ) ĊĠĠĠĠĠĠĠ Ġcfg . My Long . shouldBe EqualTo ( 6 6 L ) ĊĠĠĠĠĠĠĠ Ġcfg . My String 1 . shouldBe EqualTo (" abc ") ĊĠĠĠĠĠĠĠ Ġcfg . My String 2 . shouldBe EqualTo (" xxx ") ĊĠĠĠĠĠĠĠ Ġcfg . My Bool 1 . shouldBe EqualTo ( false ) ĊĠĠĠĠĠĠĠ Ġcfg . My Bool 2 . shouldBe EqualTo ( true ) ĊĠĠĠĠĠĠĠ Ġcfg . My Bool 3 . shouldBe EqualTo ( true ) ĊĠĠĠĠĠĠĠ Ġcfg . My Double . shouldBe EqualTo ( 7 7 7 . 8 8 8 ) ĊĠĠĠĠĠĠĠ Ġcfg . My Class 1 . shouldBe EqualTo ( FileWriter :: class . java ) ĊĠĠĠĠĠĠĠ Ġcfg . My Class 2 . shouldBe EqualTo ( Thread :: class . java ) ĊĠĠĠĠĠĠĠ Ġcfg . My Class 3 . shouldBe EqualTo ( FileWriter :: class . java ) ĊĠĠĠĠĠĠĠ Ġcfg . My Str List . shouldBe EqualTo ( listOf (" x ", Ġ" y ", Ġ" z ")) ĊĠĠĠĠĠĠĠ Ġcfg . My Str List 2 . shouldBe EqualTo ( listOf (" a ", Ġ" b ", Ġ" c ", Ġ" xx ")) ĊĠĠĠĠĠĠĠ Ġcfg . My Int List . shouldBe EqualTo ( listOf ( 1 , Ġ 3 , Ġ 5 )) ĊĠĠĠĠĠĠĠ Ġcfg . My Int List [ 0 ]. java Class . shouldBe EqualTo ( Int :: class . java ) ĊĠĠĠĠĠĠĠ Ġcfg . My Long List . shouldBe EqualTo ( listOf ( 1 L , Ġ 3 L , Ġ 5 L )) ĊĠĠĠĠĠĠĠ Ġcfg . My Long List [ 0 ]. java Class . shouldBe EqualTo ( Long :: class . java ) ĊĠĠĠĠĠĠĠ Ġcfg . My Float List . shouldBe EqualTo ( listOf ( 4 . 1 f , Ġ 4 . 2 f , Ġ 4 . 3 f )) ĊĠĠĠĠĠĠĠ Ġcfg . My Float List [ 0 ]. java Class . shouldBe EqualTo ( Float :: class . java ) ĊĠĠĠĠĠĠĠ Ġcfg . My Double List . shouldBe EqualTo ( listOf ( 5 . 1 , Ġ 5 . 2 , Ġ 5 . 3 )) ĊĠĠĠĠĠĠĠ Ġcfg . My Double List [ 0 ]. java Class . shouldBe EqualTo ( Double :: class . java ) ĊĠĠĠĠĠĠĠ Ġcfg . My Boolean List . shouldBe EqualTo ( listOf ( false , Ġfalse , Ġfalse , Ġtrue )) ĊĠĠĠĠĠĠĠ Ġcfg . My Dict 1 . shouldBe EqualTo ( map Of (" a " Ġto Ġ 1 0 , Ġ" b " Ġto Ġ 2 , Ġ" c " Ġto Ġ 3 0 )) ĊĠĠĠĠĠĠĠ Ġcfg . My Dict 2 . shouldBe EqualTo ( map Of (" a " Ġto Ġ 1 , Ġ" b " Ġto Ġ 2 )) ĊĠĠĠĠĠĠĠ Ġcfg . My Dict 3 . shouldBe Empty () ĊĠĠĠĠĠĠĠ Ġcfg . My Dict 4 . shouldBe EqualTo ( map Of (" a " Ġto Ġ 1 0 , Ġ" c " Ġto Ġ 3 0 )) ĊĠĠĠĠĠĠĠ Ġcfg . My Dict 5 . shouldBe EqualTo ( map Of (" a " Ġto Ġ 1 , Ġ" b " Ġto Ġ 2 )) ĊĠĠĠĠĠĠĠ Ġcfg . My Int To Float Dict . shouldBe EqualTo ( map Of ( 1 Ġto Ġ 1 . 3 , Ġ 2 Ġto Ġ 2 . 3 )) ĊĠĠĠĠĠĠĠ Ġcfg . My Color . shouldBe EqualTo ( Colors . Green ) ĊĠĠĠĠĠĠĠ Ġcfg . My Access Mode . shouldBe EqualTo ( Access Mode . READ ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Profiles () Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠProfile d Config Ġ: ĠProfile Support Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġenv Name Ġ= Ġ" default " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġport Ġ= Ġ 7 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset Profile ( profile Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenv Name Ġ= Ġprofile Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġenv Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Profile d Config _ port " Ġto Ġ" 8 0 8 0 ", ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġprovider Ġ= ĠEnv Config Provider ( env Ġ= Ġenv ) ĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings () ĊĠĠĠĠĠĠĠ Ġsettings . config Providers . add ( provider ) ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings , Ġ" staging ") ĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠProfile d Config () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg ) ĊĊĠĠĠĠĠĠĠ Ġcfg . port . shouldBe EqualTo ( 8 0 8 0 ) ĊĠĠĠĠĠĠĠ Ġcfg . env Name . shouldBe EqualTo (" staging ") ĊĊĠĠĠĠĠĠĠ Ġval Ġoverrides Ġ= Ġk of iko . section Name To Overrides [" Profile d Config "] Ġ?: Ġerror ("") ĊĠĠĠĠĠĠĠ Ġoverrides . should Contain ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠField Override ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile d Config :: port . java Field !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Profile d Config ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" port ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 7 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 8 0 8 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEnv Config Provider :: class . java . simple Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġoverrides . should Contain ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠField Override ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile d Config :: env Name . java Field !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Profile d Config ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" env Name ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" default ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" staging ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Profile Ġ( staging )" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Empty Section Name () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( K of iko Settings ()) ĊĠĠĠĠĠĠĠ Ġk of iko . add ( Config ()) ĊĠĠĠĠĠĠĠ Ġk of iko . section Name To Overrides . keys . should Contain (" Config ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Nested Config Section () Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠNested In Fun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtest Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings () ĊĊĠĠĠĠĠĠĠ Ġval Ġenv Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Nested In Fun _ test " Ġto Ġ" 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Parent Of Nested . Config _ dummy " Ġto Ġ" 3 ", ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsettings . config Providers . add ( Env Config Provider ( env Ġ= Ġenv )) ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĠĠĠĠĠĠĠ Ġval Ġcfg 1 Ġ= ĠParent Of Nested . Config () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg 1 ) ĊĠĠĠĠĠĠĠ Ġk of iko . section Name To Overrides . keys . should Contain (" Parent Of Nested . Config ") ĊĠĠĠĠĠĠĠ Ġcfg 1 . dummy . shouldBe EqualTo ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcfg 2 Ġ= ĠNested In Fun () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg 2 ) ĊĠĠĠĠĠĠĠ Ġk of iko . section Name To Overrides . keys . should Contain (" Nested In Fun ") ĊĠĠĠĠĠĠĠ Ġcfg 2 . test . shouldBe EqualTo ( 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Annotated Config Section () Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Config Name (" anno ") ĊĠĠĠĠĠĠĠ Ġclass ĠAnnot ated Section Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtest Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings () ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĠĠĠĠĠĠĠ Ġval Ġenv Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" anno _ test " Ġto Ġ" 2 ", ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsettings . config Providers . add ( Env Config Provider ( env Ġ= Ġenv )) ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠAnnot ated Section () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg ) ĊĠĠĠĠĠĠĠ Ġk of iko . section Name To Overrides . keys . should Contain (" anno ") ĊĠĠĠĠĠĠĠ Ġcfg . test . shouldBe EqualTo ( 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Secret Option () Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠConfig Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Secret ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsecret Ġ= Ġ" aaa " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnot Secret Ġ= Ġ" bbb " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Secret ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġunchanged Secret Ġ= Ġ" un changed " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings () ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĊĠĠĠĠĠĠĠ Ġval Ġenv Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" config _ secret " Ġto Ġ" secret ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" config _ not _ secret " Ġto Ġ" not Ġa Ġsecret ", ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsettings . config Providers . add ( Env Config Provider ( env Ġ= Ġenv )) ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĠĠĠĠĠĠĠ Ġk of iko . add ( Config ()) ĊĠĠĠĠĠĠĠ Ġk of iko . section Name To Overrides . keys . should Contain (" Config ") ĊĠĠĠĠĠĠĠ Ġk of iko . section Name To Overrides . size . shouldBe EqualTo ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġoverrides Ġ= Ġk of iko . section Name To Overrides . values . first () ĊĠĠĠĠĠĠĠ Ġoverrides . size . shouldBe EqualTo ( 2 ) ĊĠĠĠĠĠĠĠ Ġoverrides [ 0 ]. field . name . shouldBe EqualTo (" secret ") ĊĠĠĠĠĠĠĠ Ġoverrides [ 0 ]. newValue . shouldBe EqualTo ("[ hidden ]") ĊĠĠĠĠĠĠĠ Ġoverrides [ 1 ]. field . name . shouldBe EqualTo (" not Secret ") ĊĠĠĠĠĠĠĠ Ġoverrides [ 1 ]. newValue . shouldBe EqualTo (" not Ġa Ġsecret ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Kotlin Object () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings () ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĊĠĠĠĠĠĠĠ Ġval Ġenv Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" my _ car _ color " Ġto Ġ" blue ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" my _ car _ year " Ġto Ġ" 2 0 1 9 ", ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsettings . config Providers . add ( Env Config Provider ( env Ġ= Ġenv )) ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĠĠĠĠĠĠĠ Ġk of iko . add ( My Car ) ĊĠĠĠĠĠĠĠ ĠMy Car . color . shouldBe EqualTo (" blue ") ĊĠĠĠĠĠĠĠ ĠMy Car . year . shouldBe EqualTo ( 2 0 1 9 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠtestData Class () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠThe Data ( var Ġdummy : ĠInt Ġ= Ġ 1 ) ĊĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings () ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĊĠĠĠĠĠĠĠ Ġval Ġenv Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" the _ data _ dummy " Ġto Ġ" 3 ", ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsettings . config Providers . add ( Env Config Provider ( env Ġ= Ġenv )) ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠThe Data () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg ) ĊĠĠĠĠĠĠĠ Ġcfg . dummy . shouldBe EqualTo ( 3 ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Properties Provider () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ# Ġcomment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . my _ int = 3 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My Long = 6 6 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My String 2 Ġ= Ġxxx ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My Bool 2 = true ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My Bool 3 = TRUE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . D bl = 7 7 7 . 8 8 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My Class 2 = ĠĠĠĠ Ġjava . lang . Thread ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My Class 3 = java . io . FileWriter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My Str List ĠĠĠĠ Ġ= ĠĠ Ġx , y , z ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My Str List 2 = ^ A | xx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My Int List = 1 , 3 , 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My Long List = 1 , 3 , 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My Float List = 4 . 1 , 4 . 2 , 4 . 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My Double List = 5 . 1 , 5 . 2 , 5 . 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My Boolean List = false , false , false , true ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My Dict 1 = a : 1 0 , c : 3 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My Dict 3 = ^ C | ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My Dict 4 = ^ C | a : 1 0 , c : 3 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My Int To Float Dict = 1 : 1 . 3 , 2 : 2 . 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My Color = Green ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample . My Access Mode = READ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġproperties Ġ= Ġcontent . to Properties () ĊĠĠĠĠĠĠĠ Ġval Ġprovider Ġ= ĠProperties Config Provider ( properties ) ĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings () ĊĠĠĠĠĠĠĠ Ġsettings . config Providers . add ( provider ) ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠK of iko Sample Config () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg ) ĊĠĠĠĠĠĠĠ Ġassert Expected Config ( cfg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Env File Provider () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ# Ġcomment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" k of iko - sample _ my _ int " =" 3 3 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ' k of iko - sample _ My Long ' =' 6 6 ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ My String 2 Ġ= Ġxxx ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ My Bool 2 = true ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ My Bool 3 = TRUE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ D bl = 7 7 7 . 8 8 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ My Class 2 = ĠĠĠĠ Ġjava . lang . Thread ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ My Class 3 = java . io . FileWriter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ My Str List ĠĠĠĠ Ġ= ĠĠ Ġx , y , z ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ My Str List 2 = ^ A | xx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ My Int List = 1 , 3 , 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ My Long List = 1 , 3 , 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ My Float List = 4 . 1 , 4 . 2 , 4 . 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ My Double List = 5 . 1 , 5 . 2 , 5 . 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ My Boolean List = false , false , false , true ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ My Dict 1 = a : 1 0 , c : 3 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ My Dict 3 = ^ C | ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ My Dict 4 = ^ C | a : 1 0 , c : 3 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ My Int To Float Dict = 1 : 1 . 3 , 2 : 2 . 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ My Color = Green ĊĠĠĠĠĠĠĠĠĠĠĠ Ġk of iko - sample _ My Access Mode = READ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġprovider Ġ= ĠEnv File Config Provider ( Config Source . from Text ( content )) ĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings () ĊĠĠĠĠĠĠĠ Ġsettings . config Providers . add ( provider ) ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠK of iko Sample Config () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg ) ĊĠĠĠĠĠĠĠ Ġassert Expected Config ( cfg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Parse Date () Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠTest Section Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmy Date Ġ= ĠDate ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap Of (" test _ section _ my _ date " Ġto Ġ" 2 0 2 0 - 0 9 - 1 8 Ġ 1 7 : 2 4 : 4 4 ") ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings ( Map Config Provider ( map )) ĊĠĠĠĠĠĠĠ Ġsettings . object Mapper . date Format Ġ= ĠSimpleDateFormat (" yyyy - MM - dd Ġhh : mm : ss ") ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠTest Section () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg ) ĊĠĠĠĠĠĠĠ Ġval Ġexp Date Ġ= ĠG regorian Calendar ( 2 0 2 0 , ĠCalendar . SEP TE MBER , Ġ 1 8 , Ġ 1 7 , Ġ 2 4 , Ġ 4 4 ). time ĊĠĠĠĠĠĠĠ Ġcfg . my Date . shouldBe EqualTo ( exp Date ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Parse Complex Object () Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠPerson Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġname : ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġage : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġclass ĠTest Section Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġme Ġ= ĠPerson () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap Of (" test _ section _ me " Ġto Ġ""" Ġ{ Ġ" name ": Ġ" D ave ", Ġ" age ": Ġ 4 1 Ġ} Ġ"" ") ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings ( Map Config Provider ( map )) ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠTest Section () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg ) ĊĠĠĠĠĠĠĠ Ġcfg . me . name . shouldBe EqualTo (" D ave ") ĊĠĠĠĠĠĠĠ Ġcfg . me . age . shouldBe EqualTo ( 4 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Section Inheritance () Ġ{ ĊĠĠĠĠĠĠĠ Ġopen Ġclass ĠFood Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcal ories Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġclass ĠP izza Ġ: ĠFood () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġextras Ġ= Ġ" pine " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap Of (" p izza _ cal ories " Ġto Ġ" 3 0 0 ", Ġ" p izza _ extras " Ġto Ġ" ol ives ") ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings ( Map Config Provider ( map )) ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠP izza () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg ) ĊĠĠĠĠĠĠĠ Ġcfg . extras . shouldBe EqualTo (" ol ives ") ĊĠĠĠĠĠĠĠ Ġcfg . cal ories . shouldBe EqualTo ( 3 0 0 ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Parse Set () Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠTest Section Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠMy Set Ġ= Ġset Of (" x ", Ġ" y ", Ġ" z ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠMy Set 2 Ġ= Ġset Of (" x ", Ġ" y ", Ġ" z ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" test _ section _ my _ set " Ġto Ġ" a , b , x , x ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" test _ section _ my _ set 2 " Ġto Ġ"^ A | a , b , x , x " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings ( Map Config Provider ( map )) ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠTest Section () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg ) ĊĠĠĠĠĠĠĠ Ġcfg . My Set . shouldBe EqualTo ( set Of (" x ", Ġ" b ", Ġ" a ")) ĊĠĠĠĠĠĠĠ Ġcfg . My Set 2 . shouldBe EqualTo ( set Of (" x ", Ġ" b ", Ġ" a ", Ġ" y ", Ġ" z ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Parse BigInteger () Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠTest Section Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnum Ġ= ĠBigInteger . ONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap Of (" test _ section _ num " Ġto Ġ" 2 ") ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings ( Map Config Provider ( map )) ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠTest Section () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg ) ĊĠĠĠĠĠĠĠ Ġcfg . num . shouldBe EqualTo ( BigInteger . TWO ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Files Provider () Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠTest Section Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnum Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtext Ġ= Ġ" tt t " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġ""" { Ġ" test " Ġ: Ġ{ Ġ" num ": Ġ 2 Ġ} Ġ} """ ĊĠĠĠĠĠĠĠ Ġval Ġini Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ[ TEST ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext = aaa ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġobject Ġ{} . java Class . enc lo sing Method . name ĊĠĠĠĠĠĠĠ Ġval Ġjson File Ġ= Ġwrite Text File ("$ name . JSON ", Ġjson ) ĊĠĠĠĠĠĠĠ Ġval Ġini File Ġ= Ġwrite Text File ("$ name . ini ", Ġini ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Files ( File (" 1 . json "), Ġjson File , Ġini File ) ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠTest Section () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg ) ĊĠĠĠĠĠĠĠ Ġcfg . num . shouldBe EqualTo ( 2 ) ĊĠĠĠĠĠĠĠ Ġcfg . text . shouldBe EqualTo (" aaa ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Parse Quoted String () Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠTest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstr 1 Ġ= Ġ" david " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstr 2 Ġ= Ġ" david " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstr 3 Ġ= Ġ" david " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmap Of (" test _ str 1 " Ġto Ġ" d ave ", Ġ" test _ str 2 " Ġto Ġ""" Ġx =" y " Ġ"" ", Ġ" test _ str 3 " Ġto Ġ"' dummy '") ĊĊĠĠĠĠĠĠĠ Ġval Ġsettings Ġ= ĠK of iko Settings ( Map Config Provider ( map )) ĊĠĠĠĠĠĠĠ Ġsettings . on Override Ġ= ĠPrint Override Notifier () ĊĠĠĠĠĠĠĠ Ġval Ġk of iko Ġ= ĠK of iko ( settings ) ĊĠĠĠĠĠĠĠ Ġval Ġcfg Ġ= ĠTest () ĊĠĠĠĠĠĠĠ Ġk of iko . add ( cfg ) ĊĠĠĠĠĠĠĠ Ġcfg . str 1 . shouldBe EqualTo (" d ave ") ĊĠĠĠĠĠĠĠ Ġcfg . str 2 . shouldBe EqualTo (""" Ġx =" y " Ġ"" ") ĊĠĠĠĠĠĠĠ Ġcfg . str 3 . shouldBe EqualTo ("' dummy '") ĊĠĠĠ Ġ} Ċ } Ċ