Imported Upstream version 0.16
[liburi-template-perl.git] / t / cases / spec-examples.json
1 {
2   "Level 1 Examples" :
3   {
4     "level": 1,
5     "variables": {
6        "var"   : "value",
7        "hello" : "Hello World!"
8      },
9      "testcases" : [
10         ["{var}", "value"],
11         ["{hello}", "Hello%20World%21"]
12      ]
13   },
14   "Level 2 Examples" :
15   {
16     "level": 2,
17     "variables": {
18        "var"   : "value",
19        "hello" : "Hello World!",
20        "path"  : "/foo/bar"
21      },
22      "testcases" : [
23         ["{+var}", "value"],
24         ["{+hello}", "Hello%20World!"],
25         ["{+path}/here", "/foo/bar/here"],
26         ["here?ref={+path}", "here?ref=/foo/bar"]
27      ]
28   },
29   "Level 3 Examples" :
30   {
31     "level": 3,
32     "variables": {
33        "var"   : "value",
34        "hello" : "Hello World!",
35        "empty" : "",
36        "path"  : "/foo/bar",
37        "x"     : "1024",
38        "y"     : "768"
39      },
40      "testcases" : [
41         ["map?{x,y}", "map?1024,768"],
42         ["{x,hello,y}", "1024,Hello%20World%21,768"],
43         ["{+x,hello,y}", "1024,Hello%20World!,768"],
44         ["{+path,x}/here", "/foo/bar,1024/here"],
45         ["{#x,hello,y}", "#1024,Hello%20World!,768"],
46         ["{#path,x}/here", "#/foo/bar,1024/here"],
47         ["X{.var}", "X.value"],
48         ["X{.x,y}", "X.1024.768"],
49         ["{/var}", "/value"],
50         ["{/var,x}/here", "/value/1024/here"],
51         ["{;x,y}", ";x=1024;y=768"],
52         ["{;x,y,empty}", ";x=1024;y=768;empty"],
53         ["{?x,y}", "?x=1024&y=768"],
54         ["{?x,y,empty}", "?x=1024&y=768&empty="],
55         ["?fixed=yes{&x}", "?fixed=yes&x=1024"],
56         ["{&x,y,empty}", "&x=1024&y=768&empty="]
57      ]
58   },
59   "Level 4 Examples" :
60   {
61     "level": 4,
62     "variables": {
63       "var": "value",
64       "hello": "Hello World!",
65       "path": "/foo/bar",
66       "list": ["red", "green", "blue"],
67       "keys": {"semi": ";", "dot": ".", "comma":","}
68     },
69     "testcases": [
70       ["{var:3}", "val"],
71       ["{var:30}", "value"],
72       ["{list}", "red,green,blue"],
73       ["{list*}", "red,green,blue"],
74       ["{keys}", [
75         "comma,%2C,dot,.,semi,%3B",
76         "comma,%2C,semi,%3B,dot,.",
77         "dot,.,comma,%2C,semi,%3B",
78         "dot,.,semi,%3B,comma,%2C",
79         "semi,%3B,comma,%2C,dot,.",
80         "semi,%3B,dot,.,comma,%2C"
81       ]],
82       ["{keys*}", [
83         "comma=%2C,dot=.,semi=%3B",
84         "comma=%2C,semi=%3B,dot=.",
85         "dot=.,comma=%2C,semi=%3B",
86         "dot=.,semi=%3B,comma=%2C",
87         "semi=%3B,comma=%2C,dot=.",
88         "semi=%3B,dot=.,comma=%2C"
89       ]],
90       ["{+path:6}/here", "/foo/b/here"],
91       ["{+list}", "red,green,blue"],
92       ["{+list*}", "red,green,blue"],
93       ["{+keys}", [
94         "comma,,,dot,.,semi,;",
95         "comma,,,semi,;,dot,.",
96         "dot,.,comma,,,semi,;",
97         "dot,.,semi,;,comma,,",
98         "semi,;,comma,,,dot,.",
99         "semi,;,dot,.,comma,,"
100       ]],
101       ["{+keys*}", [
102         "comma=,,dot=.,semi=;",
103         "comma=,,semi=;,dot=.",
104         "dot=.,comma=,,semi=;",
105         "dot=.,semi=;,comma=,",
106         "semi=;,comma=,,dot=.",
107         "semi=;,dot=.,comma=,"
108       ]],
109       ["{#path:6}/here", "#/foo/b/here"],
110       ["{#list}", "#red,green,blue"],
111       ["{#list*}", "#red,green,blue"],
112       ["{#keys}", [
113         "#comma,,,dot,.,semi,;",
114         "#comma,,,semi,;,dot,.",
115         "#dot,.,comma,,,semi,;",
116         "#dot,.,semi,;,comma,,",
117         "#semi,;,comma,,,dot,.",
118         "#semi,;,dot,.,comma,,"
119       ]],
120       ["{#keys*}", [
121         "#comma=,,dot=.,semi=;",
122         "#comma=,,semi=;,dot=.",
123         "#dot=.,comma=,,semi=;",
124         "#dot=.,semi=;,comma=,",
125         "#semi=;,comma=,,dot=.",
126         "#semi=;,dot=.,comma=,"
127       ]],
128       ["X{.var:3}", "X.val"],
129       ["X{.list}", "X.red,green,blue"],
130       ["X{.list*}", "X.red.green.blue"],
131       ["X{.keys}", [ 
132         "X.comma,%2C,dot,.,semi,%3B",
133         "X.comma,%2C,semi,%3B,dot,.",
134         "X.dot,.,comma,%2C,semi,%3B",
135         "X.dot,.,semi,%3B,comma,%2C",
136         "X.semi,%3B,comma,%2C,dot,.",
137         "X.semi,%3B,dot,.,comma,%2C"
138       ]],
139       ["{/var:1,var}", "/v/value"],
140       ["{/list}", "/red,green,blue"],
141       ["{/list*}", "/red/green/blue"],
142       ["{/list*,path:4}", "/red/green/blue/%2Ffoo"],
143       ["{/keys}", [
144         "/comma,%2C,dot,.,semi,%3B",
145         "/comma,%2C,semi,%3B,dot,.",
146         "/dot,.,comma,%2C,semi,%3B",
147         "/dot,.,semi,%3B,comma,%2C",
148         "/semi,%3B,comma,%2C,dot,.",
149         "/semi,%3B,dot,.,comma,%2C"
150       ]],
151       ["{/keys*}", [ 
152         "/comma=%2C/dot=./semi=%3B",
153         "/comma=%2C/semi=%3B/dot=.",
154         "/dot=./comma=%2C/semi=%3B",
155         "/dot=./semi=%3B/comma=%2C",
156         "/semi=%3B/comma=%2C/dot=.",
157         "/semi=%3B/dot=./comma=%2C"
158       ]],
159       ["{;hello:5}", ";hello=Hello"],
160       ["{;list}", ";list=red,green,blue"],
161       ["{;list*}", ";list=red;list=green;list=blue"],
162       ["{;keys}", [ 
163         ";keys=comma,%2C,dot,.,semi,%3B",
164         ";keys=comma,%2C,semi,%3B,dot,.",
165         ";keys=dot,.,comma,%2C,semi,%3B",
166         ";keys=dot,.,semi,%3B,comma,%2C",
167         ";keys=semi,%3B,comma,%2C,dot,.",
168         ";keys=semi,%3B,dot,.,comma,%2C"
169       ]],
170       ["{;keys*}", [ 
171         ";comma=%2C;dot=.;semi=%3B",
172         ";comma=%2C;semi=%3B;dot=.",
173         ";dot=.;comma=%2C;semi=%3B",
174         ";dot=.;semi=%3B;comma=%2C",
175         ";semi=%3B;comma=%2C;dot=.",
176         ";semi=%3B;dot=.;comma=%2C"
177       ]],
178       ["{?var:3}", "?var=val"],
179       ["{?list}", "?list=red,green,blue"],
180       ["{?list*}", "?list=red&list=green&list=blue"],
181       ["{?keys}", [ 
182         "?keys=comma,%2C,dot,.,semi,%3B",
183         "?keys=comma,%2C,semi,%3B,dot,.",
184         "?keys=dot,.,comma,%2C,semi,%3B",
185         "?keys=dot,.,semi,%3B,comma,%2C",
186         "?keys=semi,%3B,comma,%2C,dot,.",
187         "?keys=semi,%3B,dot,.,comma,%2C"
188       ]],
189       ["{?keys*}", [ 
190         "?comma=%2C&dot=.&semi=%3B",
191         "?comma=%2C&semi=%3B&dot=.",
192         "?dot=.&comma=%2C&semi=%3B",
193         "?dot=.&semi=%3B&comma=%2C",
194         "?semi=%3B&comma=%2C&dot=.",
195         "?semi=%3B&dot=.&comma=%2C"
196       ]],
197       ["{&var:3}", "&var=val"],
198       ["{&list}", "&list=red,green,blue"],
199       ["{&list*}", "&list=red&list=green&list=blue"],
200       ["{&keys}", [ 
201         "&keys=comma,%2C,dot,.,semi,%3B",
202         "&keys=comma,%2C,semi,%3B,dot,.",
203         "&keys=dot,.,comma,%2C,semi,%3B",
204         "&keys=dot,.,semi,%3B,comma,%2C",
205         "&keys=semi,%3B,comma,%2C,dot,.",
206         "&keys=semi,%3B,dot,.,comma,%2C"
207       ]],
208       ["{&keys*}", [ 
209         "&comma=%2C&dot=.&semi=%3B",
210         "&comma=%2C&semi=%3B&dot=.",
211         "&dot=.&comma=%2C&semi=%3B",
212         "&dot=.&semi=%3B&comma=%2C",
213         "&semi=%3B&comma=%2C&dot=.",
214         "&semi=%3B&dot=.&comma=%2C"
215       ]]
216     ]
217   }
218 }