package Ġio . github . config 4 k Ċ Ċ import Ġcom . types afe . config . Config Factory Ċ import Ġorg . jetbrains . spe k . api . Spe k Ċ import Ġorg . jetbrains . spe k . api . dsl . context Ċ import Ġorg . jetbrains . spe k . api . dsl . it Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ import Ġjava . util .* ĊĊ Ċ object ĠProperties Reader Test Ġ: ĠSpe k ({ ĊĊĠĠĠ Ġcontext (" Config . extract < Properties >") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfixture Ġ= ĠConfig Factory . parse String (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmonkey Ġ= Ġ" string " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdon key Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġze bra Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠProperties (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit [" monkey "] Ġ= Ġ" string " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit [" don key "] Ġ= Ġ" 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnull Ġvalues Ġhave Ġzero Ġvalue Ġsemantics Ġfor Ġprops . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit [" ze bra "] Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn ĠProperties ") Ġ{ Ġfixture . assertEquals At Path (" key ", Ġexpected ) Ġ} ĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn ĠProperties Ġwithout Ġpath Ġspecified ") Ġ{ Ġfixture . assertEquals After Re position ing (" key ", Ġexpected ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnested Fixture Ġ= ĠConfig Factory . parse String (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmonkey Ġ= Ġ" string " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdon key Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġze bra Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmonkey Ġ= Ġ" string " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdon key Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġze bra Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĊĠĠĠĠĠĠĠ Ġit (" should Ġnot Ġaccept Ġnested Ġconfig Ġshapes ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThrows < Config 4 k Exception . Invalid Shape > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnested Fixture . extract < Properties >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠWith Properties ( val Ġid : ĠString , Ġval Ġprops : ĠProperties ) ĊĊĠĠĠ Ġcontext (" Config . extract < With Properties >") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfixture Ġ= ĠConfig Factory . parse String (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" boom " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprops Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmonkey Ġ= Ġ" string " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdon key Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġze bra Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĠWith Properties ( id Ġ= Ġ" boom ", Ġprops Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" monkey " Ġto Ġ" string ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" don key " Ġto Ġ" 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnull Ġvalues Ġhave Ġzero Ġvalue Ġsemantics Ġfor Ġprops . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" ze bra " Ġto Ġ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). to Properties () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn ĠWith Properties ") Ġ{ Ġfixture . assertEquals At Path (" key ", Ġexpected ) Ġ} ĊĠĠĠĠĠĠĠ Ġit (" should Ġreturn ĠWith Properties Ġwithout Ġpath Ġspecified ") Ġ{ Ġfixture . assertEquals After Re position ing (" key ", Ġexpected ) Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ