@@ -21,18 +21,6 @@ var testCases = []PointerTestCase{
2121 {"/" , []Token {RootToken {}, KeyToken {Key : "" }}},
2222 {"/ " , []Token {RootToken {}, KeyToken {Key : " " }}},
2323
24- // Escaping (todo support ~2 for '?'; ~3 for '=')
25- {"/m~0n" , []Token {RootToken {}, KeyToken {Key : "m~n" }}},
26- {"/a~01b" , []Token {RootToken {}, KeyToken {Key : "a~1b" }}},
27- {"/a~1b" , []Token {RootToken {}, KeyToken {Key : "a/b" }}},
28-
29- // Special chars
30- {"/c%d" , []Token {RootToken {}, KeyToken {Key : "c%d" }}},
31- {"/e^f" , []Token {RootToken {}, KeyToken {Key : "e^f" }}},
32- {"/g|h" , []Token {RootToken {}, KeyToken {Key : "g|h" }}},
33- {"/i\\ j" , []Token {RootToken {}, KeyToken {Key : "i\\ j" }}},
34- {"/k\" l" , []Token {RootToken {}, KeyToken {Key : "k\" l" }}},
35-
3624 // Maps
3725 {"/key" , []Token {RootToken {}, KeyToken {Key : "key" }}},
3826 {"/key/" , []Token {RootToken {}, KeyToken {Key : "key" }, KeyToken {Key : "" }}},
@@ -55,10 +43,42 @@ var testCases = []PointerTestCase{
5543
5644 // Matching index token
5745 {"/name=val" , []Token {RootToken {}, MatchingIndexToken {Key : "name" , Value : "val" }}},
46+ {"/name=val?" , []Token {RootToken {}, MatchingIndexToken {Key : "name" , Value : "val" , Optional : true }}},
47+ {"/name=val?/name2=val" , []Token {
48+ RootToken {},
49+ MatchingIndexToken {Key : "name" , Value : "val" , Optional : true },
50+ MatchingIndexToken {Key : "name2" , Value : "val" , Optional : true },
51+ }},
5852 {"/=" , []Token {RootToken {}, MatchingIndexToken {Key : "" , Value : "" }}},
53+ {"/=?" , []Token {RootToken {}, MatchingIndexToken {Key : "" , Value : "" , Optional : true }}},
5954 {"/name=" , []Token {RootToken {}, MatchingIndexToken {Key : "name" , Value : "" }}},
6055 {"/=val" , []Token {RootToken {}, MatchingIndexToken {Key : "" , Value : "val" }}},
6156 {"/==" , []Token {RootToken {}, MatchingIndexToken {Key : "" , Value : "=" }}},
57+
58+ // Optionality
59+ {"/key?/name=val" , []Token {
60+ RootToken {},
61+ KeyToken {Key : "key" , Optional : true },
62+ MatchingIndexToken {Key : "name" , Value : "val" , Optional : true },
63+ }},
64+ {"/name=val?/key" , []Token {
65+ RootToken {},
66+ MatchingIndexToken {Key : "name" , Value : "val" , Optional : true },
67+ KeyToken {Key : "key" , Optional : true },
68+ }},
69+
70+ // Escaping (todo support ~2 for '?'; ~3 for '=')
71+ {"/m~0n" , []Token {RootToken {}, KeyToken {Key : "m~n" }}},
72+ {"/a~01b" , []Token {RootToken {}, KeyToken {Key : "a~1b" }}},
73+ {"/a~1b" , []Token {RootToken {}, KeyToken {Key : "a/b" }}},
74+ {"/name~0n=val~0n" , []Token {RootToken {}, MatchingIndexToken {Key : "name~n" , Value : "val~n" }}},
75+
76+ // Special chars
77+ {"/c%d" , []Token {RootToken {}, KeyToken {Key : "c%d" }}},
78+ {"/e^f" , []Token {RootToken {}, KeyToken {Key : "e^f" }}},
79+ {"/g|h" , []Token {RootToken {}, KeyToken {Key : "g|h" }}},
80+ {"/i\\ j" , []Token {RootToken {}, KeyToken {Key : "i\\ j" }}},
81+ {"/k\" l" , []Token {RootToken {}, KeyToken {Key : "k\" l" }}},
6282}
6383
6484var _ = Describe ("NewPointer" , func () {
0 commit comments