@@ -9,7 +9,8 @@ import Effect.Console (log)
99import JSON as J
1010import JSON.Array as JA
1111import JSON.Object as JO
12- import Test.Assert (assertTrue )
12+ import JSON.Path as Path
13+ import Test.Assert (assertEqual , assertTrue )
1314
1415main :: Effect Unit
1516main = do
@@ -43,3 +44,20 @@ main = do
4344
4445 log " Check array concat"
4546 assertTrue $ JA .fromArray (J .fromInt <$> [ 1 , 2 ]) <> JA .fromArray (J .fromInt <$> [ 2 , 3 ]) == JA .fromArray (J .fromInt <$> [ 1 , 2 , 2 , 3 ])
47+
48+ log " Check path printing"
49+ assertEqual
50+ { expected: " $.data[0].field"
51+ , actual: Path .print (Path.AtKey " field" (Path.AtIndex 0 (Path.AtKey " data" Path.Top )))
52+ }
53+
54+ log " Check path get"
55+ assertTrue $ Path .get Path.Top (J .fromString " hello" ) == Just (J .fromString " hello" )
56+ assertTrue $ Path .get Path.Top (J .fromJArray (JA .fromArray [ J .fromInt 42 ])) == Just (J .fromJArray (JA .fromArray [ J .fromInt 42 ]))
57+ assertTrue $ Path .get (Path.AtIndex 0 Path.Top ) (J .fromJArray (JA .fromArray [ J .fromInt 42 , J .fromString " X" , J .fromBoolean true ])) == Just (J .fromInt 42 )
58+ assertTrue $ Path .get (Path.AtIndex 1 Path.Top ) (J .fromJArray (JA .fromArray [ J .fromInt 42 , J .fromString " X" , J .fromBoolean true ])) == Just (J .fromString " X" )
59+ assertTrue $ Path .get (Path.AtIndex 5 Path.Top ) (J .fromJArray (JA .fromArray [ J .fromInt 42 , J .fromString " X" , J .fromBoolean true ])) == Nothing
60+ assertTrue $ Path .get (Path.AtKey " a" Path.Top ) (J .fromJObject (JO .fromEntries [ Tuple " a" (J .fromInt 1 ), Tuple " x" (J .fromBoolean false ) ])) == Just (J .fromInt 1 )
61+ assertTrue $ Path .get (Path.AtKey " x" Path.Top ) (J .fromJObject (JO .fromEntries [ Tuple " a" (J .fromInt 1 ), Tuple " x" (J .fromBoolean false ) ])) == Just (J .fromBoolean false )
62+ assertTrue $ Path .get (Path.AtKey " z" Path.Top ) (J .fromJObject (JO .fromEntries [ Tuple " a" (J .fromInt 1 ), Tuple " x" (J .fromBoolean false ) ])) == Nothing
63+ assertTrue $ Path .get (Path.AtKey " x" (Path.AtIndex 1 Path.Top )) (J .fromJArray (JA .fromArray [ J .fromString " skip" , (J .fromJObject (JO .fromEntries [ Tuple " a" (J .fromInt 1 ), Tuple " x" (J .fromBoolean false ) ])) ])) == Just (J .fromBoolean false )
0 commit comments