{ "Test Suite 1" : { "variables": { "var" : "value", "hello" : "Hello World!", "empty" : "", "list" : [ "val1", "val2", "val3" ], "keys" : {"key1": "val1", "key2": "val2"}, "path" : "/foo/bar", "x" : "1024", "y" : "768" }, "testcases" : [ ["{var}", "value"], ["{hello}", "Hello%20World%21"], ["{path}/here", "%2Ffoo%2Fbar/here"], ["{x,y}", "1024,768"], ["{var=default}", "value"], ["{undef=default}", "default"], ["{list}", "val1,val2,val3"], ["{list*}", "val1,val2,val3"], ["{list+}", "list.val1,list.val2,list.val3"], ["{keys}", "key1,val1,key2,val2"], ["{keys*}", "key1,val1,key2,val2"], ["{keys+}", "keys.key1,val1,keys.key2,val2"], ["{+var}", "value"], ["{+hello}", "Hello%20World!"], ["{+path}/here", "/foo/bar/here"], ["{+path,x}/here", "/foo/bar,1024/here"], ["{+path}{x}/here", "/foo/bar1024/here"], ["{+empty}/here", "/here"], ["{+undef}/here", "/here"], ["{+list}", "val1,val2,val3"], ["{+list*}", "val1,val2,val3"], ["{+list+}", "list.val1,list.val2,list.val3"], ["{+keys}", "key1,val1,key2,val2"], ["{+keys*}", "key1,val1,key2,val2"], ["{+keys+}", "keys.key1,val1,keys.key2,val2"], ["{;x,y}", ";x=1024;y=768"], ["{;x,y,empty}", ";x=1024;y=768;empty"], ["{;x,y,undef}", ";x=1024;y=768"], ["{;list}", ";val1,val2,val3"], ["{;list*}", ";val1;val2;val3"], ["{;list+}", ";list=val1;list=val2;list=val3"], ["{;keys}", ";key1,val1,key2,val2"], ["{;keys*}", ";key1=val1;key2=val2"], ["{;keys+}", ";keys.key1=val1;keys.key2=val2"], ["{?x,y}", "?x=1024&y=768"], ["{?x,y,empty}", "?x=1024&y=768&empty"], ["{?x,y,undef}", "?x=1024&y=768"], ["{?list}", "?list=val1,val2,val3"], ["{?list*}", "?val1&val2&val3"], ["{?list+}", "?list=val1&list=val2&list=val3"], ["{?keys}", "?keys=key1,val1,key2,val2"], ["{?keys*}", "?key1=val1&key2=val2"], ["{?keys+}", "?keys.key1=val1&keys.key2=val2"], ["{/var}", "/value"], ["{/var,empty}", "/value/"], ["{/var,undef}", "/value"], ["{/list}", "/val1,val2,val3"], ["{/list*}", "/val1/val2/val3"], ["{/list*,x}", "/val1/val2/val3/1024"], ["{/list+}", "/list.val1/list.val2/list.val3"], ["{/keys}", "/key1,val1,key2,val2"], ["{/keys*}", "/key1/val1/key2/val2"], ["{/keys+}", "/keys.key1/val1/keys.key2/val2"], ["X{.var}", "X.value"], ["X{.empty}", "X"], ["X{.undef}", "X"], ["X{.list}", "X.val1,val2,val3"], ["X{.list*}", "X.val1.val2.val3"], ["X{.list*,x}", "X.val1.val2.val3.1024"], ["X{.list+}", "X.list.val1.list.val2.list.val3"], ["X{.keys}", "X.key1,val1,key2,val2"], ["X{.keys*}", "X.key1.val1.key2.val2"], ["X{.keys+}", "X.keys.key1.val1.keys.key2.val2"] ] }, "Test Suite 2" : { "variables": { "var" : "value", "empty" : "", "name" : [ "Fred", "Wilma", "Pebbles" ], "favs" : {"color":"red", "volume": "high"}, "empty_list" : [], "empty_keys" : {} }, "testcases" : [ ["{var=default}", "value"], ["{undef=default}", "default"], ["x{empty}y", "xy"], ["x{empty=_}y", "xy"], ["x{undef}y", "xy"], ["x{undef=_}y", "x_y"], ["x{empty_list}y", "xy"], ["x{empty_list=_}y", "x_y"], ["x{empty_list*}y", "xy"], ["x{empty_list*=_}y", "x_y"], ["x{empty_list+}y", "xy"], ["x{empty_list+=_}y", "x_y"], ["x{empty_keys}y", "xy"], ["x{empty_keys=_}y", "x_y"], ["x{empty_keys*}y", "xy"], ["x{empty_keys*=_}y", "x_y"], ["x{empty_keys+}y", "xy"], ["x{empty_keys+=_}y", "x_y"], ["x{?name=none}", "x?name=Fred,Wilma,Pebbles"], ["x{?favs=none}", "x?favs=color,red,volume,high"], ["x{?favs*=none}", "x?color=red&volume=high"], ["x{?favs+=none}", "x?favs.color=red&favs.volume=high"], ["x{?undef}", "x"], ["x{?undef=none}", "x?undef=none"], ["x{?empty}", "x?empty"], ["x{?empty=none}", "x?empty"], ["x{?empty_list}", "x"], ["x{?empty_list=none}", "x?empty_list=none"], ["x{?empty_list*}", "x"], ["x{?empty_list*=none}", "x?empty_list=none"], ["x{?empty_list+}", "x"], ["x{?empty_list+=none}", "x?empty_list=none"], ["x{?empty_keys}", "x"], ["x{?empty_keys=none}", "x?empty_keys=none"], ["x{?empty_keys*}", "x"], ["x{?empty_keys*=none}", "x?empty_keys=none"], ["x{?empty_keys+}", "x"], ["x{?empty_keys+=none}", "x?empty_keys=none"] ] } }