package Ġcom . sk sam uel . hop lite Ċ Ċ import Ġcom . sk sam uel . hop lite . decoder . Dot Path Ċ import Ġio . kot est . core . spec . style . Fun Spec Ċ import Ġio . kot est . matchers . shouldBe Ċ Ċ class ĠF allback Test Ġ: ĠFun Spec ({ ĊĊĠ Ġtest (" fallback Ġshould Ġwork Ġwith Ġtwo Ġmaps Ġat Ġimmediate Ġdepth ") Ġ{ ĊĊĠĠĠ Ġval Ġnode 1 Ġ= ĠMap Node ( ĊĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġ" a " Ġto ĠString Node (" foo ", ĠPos . No Pos , ĠDot Path . root ), ĊĠĠĠĠĠĠĠ Ġ" b " Ġto ĠString Node (" bar ", ĠPos . No Pos , ĠDot Path . root ) ĊĠĠĠĠĠ Ġ), ĊĠĠĠĠĠ ĠPos . No Pos , ĠDot Path . root ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġnode 2 Ġ= ĠMap Node ( ĊĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġ" a " Ġto ĠString Node (" f az ", ĠPos . No Pos , ĠDot Path . root ), ĊĠĠĠĠĠĠĠ Ġ" c " Ġto ĠString Node (" baz ", ĠPos . No Pos , ĠDot Path . root ) ĊĠĠĠĠĠ Ġ), ĊĠĠĠĠĠ ĠPos . No Pos , ĊĠĠĠĠĠ ĠDot Path . root ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġf Ġ= Ġnode 1 . merge ( node 2 ) ĊĠĠĠ Ġf [" a "] ĠshouldBe ĠString Node (" foo ", ĠPos . No Pos , ĠDot Path . root ) ĊĠĠĠ Ġf [" b "] ĠshouldBe ĠString Node (" bar ", ĠPos . No Pos , ĠDot Path . root ) ĊĠĠĠ Ġf [" c "] ĠshouldBe ĠString Node (" baz ", ĠPos . No Pos , ĠDot Path . root ) ĊĊĠĠĠ Ġval Ġg Ġ= Ġnode 2 . merge ( node 1 ) ĊĠĠĠ Ġg [" a "] ĠshouldBe ĠString Node (" f az ", ĠPos . No Pos , ĠDot Path . root ) ĊĠĠĠ Ġg [" b "] ĠshouldBe ĠString Node (" bar ", ĠPos . No Pos , ĠDot Path . root ) ĊĠĠĠ Ġg [" c "] ĠshouldBe ĠString Node (" baz ", ĠPos . No Pos , ĠDot Path . root ) ĊĠ Ġ} ĊĊĠ Ġtest (" fallback Ġshould Ġwork Ġwith Ġtwo Ġmaps Ġat Ġarbitrary Ġdepth ") Ġ{ ĊĊĠĠĠ Ġval Ġnode 1 Ġ= ĠMap Node ( ĊĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġ" a " Ġto ĠString Node (" foo ", ĠPos . No Pos , ĠDot Path . root ), ĊĠĠĠĠĠĠĠ Ġ" b " Ġto ĠMap Node ( ĊĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" j " Ġto ĠString Node (" jen ", ĠPos . No Pos , ĠDot Path . root ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" k " Ġto ĠString Node (" ken ", ĠPos . No Pos , ĠDot Path . root ) ĊĠĠĠĠĠĠĠĠĠ Ġ), ĠPos . No Pos , ĊĠĠĠĠĠĠĠĠĠ ĠDot Path . root ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ), ĊĠĠĠĠĠ ĠPos . No Pos , ĊĠĠĠĠĠ ĠDot Path . root , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġnode 2 Ġ= ĠMap Node ( ĊĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠ Ġ" b " Ġto ĠMap Node ( ĊĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" k " Ġto ĠString Node (" ke z ", ĠPos . No Pos , ĠDot Path . root ) ĊĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠ ĠPos . No Pos , ĊĠĠĠĠĠĠĠĠĠ ĠDot Path . root ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġ" c " Ġto ĠString Node (" baz ", ĠPos . No Pos , ĠDot Path . root ) ĊĠĠĠĠĠ Ġ), ĊĠĠĠĠĠ ĠPos . No Pos , ĊĠĠĠĠĠ ĠDot Path . root , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġf Ġ= Ġnode 1 . merge ( node 2 ) ĊĠĠĠ Ġf [" a "] ĠshouldBe ĠString Node (" foo ", ĠPos . No Pos , ĠDot Path . root ) ĊĠĠĠ Ġf [" b "][" j "] ĠshouldBe ĠString Node (" jen ", ĠPos . No Pos , ĠDot Path . root ) ĊĠĠĠ Ġf [" b "][" k "] ĠshouldBe ĠString Node (" ken ", ĠPos . No Pos , ĠDot Path . root ) ĊĠĠĠ Ġf [" c "] ĠshouldBe ĠString Node (" baz ", ĠPos . No Pos , ĠDot Path . root ) ĊĊĠĠĠ Ġval Ġg Ġ= Ġnode 2 . merge ( node 1 ) ĊĠĠĠ Ġg [" a "] ĠshouldBe ĠString Node (" foo ", ĠPos . No Pos , ĠDot Path . root ) ĊĠĠĠ Ġg [" b "][" j "] ĠshouldBe ĠString Node (" jen ", ĠPos . No Pos , ĠDot Path . root ) ĊĠĠĠ Ġg [" b "][" k "] ĠshouldBe ĠString Node (" ke z ", ĠPos . No Pos , ĠDot Path . root ) ĊĠĠĠ Ġg [" c "] ĠshouldBe ĠString Node (" baz ", ĠPos . No Pos , ĠDot Path . root ) ĊĠ Ġ} Ċ }) Ċ