diff options
Diffstat (limited to 'Foundation/TestData/GTMURITemplateExtraTests.json')
-rw-r--r-- | Foundation/TestData/GTMURITemplateExtraTests.json | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/Foundation/TestData/GTMURITemplateExtraTests.json b/Foundation/TestData/GTMURITemplateExtraTests.json new file mode 100644 index 0000000..e84ab90 --- /dev/null +++ b/Foundation/TestData/GTMURITemplateExtraTests.json @@ -0,0 +1,222 @@ +{ + "No varspec (section 3.3, paragraph 3)" : + { + "variables": { + "var" : "value" + }, + "testcases" : [ + ["{}", "{}"], + ["{,}", "{,}"], + ["{,,}", "{,,}"] + ] + }, + "Missing closing brace (section 3.3 paragraph 4)" : + { + "variables": { + "var" : "value", + "hello" : "Hello World!", + "list" : [ "val1", "val2", "val3" ], + "keys" : {"key1": "val1", "key2": "val2"}, + "x" : "1024", + "y" : "768" + }, + "testcases" : [ + ["{var", "value"], + ["{hello", "Hello%20World%21"], + ["{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"] + ] + }, + "varspec of only operator and explodes (section 3.3?)" : + { + "variables": { + "var" : "value" + }, + "testcases" : [ + ["{+}", "{+}"], + ["{;}", "{;}"], + ["{?}", "{?}"], + ["{/}", "{/}"], + ["{.}", "{.}"], + ["{+,}", "{+,}"], + ["{;,}", "{;,}"], + ["{?,}", "{?,}"], + ["{/,}", "{/,}"], + ["{.,}", "{.,}"], + ["{++}", "{++}"], + ["{;+}", "{;+}"], + ["{?+}", "{?+}"], + ["{/+}", "{/+}"], + ["{.+}", "{.+}"], + ["{+*}", "{+*}"], + ["{;*}", "{;*}"], + ["{?*}", "{?*}"], + ["{/*}", "{/*}"], + ["{.*}", "{.*}"] + ] + }, + "One good varspec and bad varspecs (section 3.3, paragraph 3?)" : + { + "variables": { + "var" : "value" + }, + "testcases" : [ + ["{var,}", "value"], + ["{,var}", "value"], + ["{,var,,}", "value"], + ["{+var,,}", "value"], + ["{;var,,}", ";var=value"], + ["{?var,,}", "?var=value"], + ["{/var,,}", "/value"], + ["{.var,,}", ".value"], + ["{+,var,}", "value"], + ["{;,var,}", ";var=value"], + ["{?,var,}", "?var=value"], + ["{/,var,}", "/value"], + ["{.,var,}", ".value"], + ["{+,,var}", "value"], + ["{;,,var}", ";var=value"], + ["{?,,var}", "?var=value"], + ["{/,,var}", "/value"], + ["{.,,var}", ".value"] + ] + }, + "Multiple undefined variables (section 3.4)" : + { + "variables": { + "var" : "value" + }, + "testcases" : [ + ["{undef1,undef2}", ""], + ["{+undef1,undef2}", ""], + ["{;undef1,undef2}", ""], + ["{?undef1,undef2}", ""], + ["{/undef1,undef2}", ""], + ["{.undef1,undef2}", ""] + ] + }, + "Default with variable in varspec (just reported like above cases)" : + { + "variables": { + "var" : "value" + }, + "testcases" : [ + ["{=foo}", "{=foo}"] + ] + }, + "varspec with bad partial (partial gets ignored)" : + { + "variables": { + "var" : "value" + }, + "testcases" : [ + ["{var:}", "value"], + ["{var^}", "value"] + ] + }, + "Default of empty string and edge cases with empty strings" : + { + "variables": { + "empty" : "", + "x" : "1024", + "y" : "768" + }, + "testcases" : [ + ["{empty}", ""], + ["{;x,empty,y}", ";x=1024;empty;y=768"], + ["{?x,empty,y}", "?x=1024&empty&y=768"], + ["{x,empty,y}", "1024,,768"], + ["{+x,empty,y}", "1024,,768"], + ["{/x,empty,y}", "/1024//768"], + ["{.x,empty,y}", ".1024..768"], + ["{undef=}", ""], + ["{;x,undef=,y}", ";x=1024;undef;y=768"], + ["{?x,undef=,y}", "?x=1024&undef&y=768"], + ["{x,undef=,y}", "1024,,768"], + ["{+x,undef=,y}", "1024,,768"], + ["{/x,undef=,y}", "/1024//768"], + ["{.x,undef=,y}", ".1024..768"] + ] + }, + "Two defaults for one variable" : + { + "variables": { + "y" : "768" + }, + "testcases" : [ + ["1{undef=a}2{undef=b}3", "1a2b3"], + ["0{undef}1{undef=a}2{undef}3{undef=b}4{undef}5", "01a2a3b4b5"] + ] + }, + "Empty strings within arrays and associative arrays" : + { + "variables": { + "list" : [ "val1", "", "val3" ], + "keysA" : {"key1": "", "key2": "val2"}, + "keysB" : {"key1": "val1", "": "val2"} + }, + "testcases" : [ + ["{list}", "val1,,val3"], + ["{list*}", "val1,,val3"], + ["{list+}", "list.val1,list.,list.val3"], + ["{keysA}", "key1,,key2,val2"], + ["{keysA*}", "key1,,key2,val2"], + ["{keysA+}", "keysA.key1,,keysA.key2,val2"], + ["{keysB}", ",val2,key1,val1"], + ["{keysB*}", ",val2,key1,val1"], + ["{keysB+}", "keysB.,val2,keysB.key1,val1"], + ["{+list}", "val1,,val3"], + ["{+list*}", "val1,,val3"], + ["{+list+}", "list.val1,list.,list.val3"], + ["{+keysA}", "key1,,key2,val2"], + ["{+keysA*}", "key1,,key2,val2"], + ["{+keysA+}", "keysA.key1,,keysA.key2,val2"], + ["{+keysB}", ",val2,key1,val1"], + ["{+keysB*}", ",val2,key1,val1"], + ["{+keysB+}", "keysB.,val2,keysB.key1,val1"], + ["{;list}", ";val1,,val3"], + ["{;list*}", ";val1;;val3"], + ["{;list+}", ";list=val1;list=;list=val3"], + ["{;keysA}", ";key1,key2,val2"], + ["{;keysA*}", ";key1;key2=val2"], + ["{;keysA+}", ";keysA.key1;keysA.key2=val2"], + ["{;keysB}", ";,val2,key1,val1"], + ["{;keysB*}", ";=val2;key1=val1"], + ["{;keysB+}", ";keysB.=val2;keysB.key1=val1"], + ["{?list}", "?list=val1,,val3"], + ["{?list*}", "?val1&&val3"], + ["{?list+}", "?list=val1&list=&list=val3"], + ["{?keysA}", "?keysA=key1,key2,val2"], + ["{?keysA*}", "?key1&key2=val2"], + ["{?keysA+}", "?keysA.key1&keysA.key2=val2"], + ["{?keysB}", "?keysB=,val2,key1,val1"], + ["{?keysB*}", "?=val2&key1=val1"], + ["{?keysB+}", "?keysB.=val2&keysB.key1=val1"], + ["{/list}", "/val1,,val3"], + ["{/list*}", "/val1//val3"], + ["{/list+}", "/list.val1/list./list.val3"], + ["{/keysA}", "/key1,,key2,val2"], + ["{/keysA*}", "/key1//key2/val2"], + ["{/keysA+}", "/keysA.key1//keysA.key2/val2"], + ["{/keysB}", "/,val2,key1,val1"], + ["{/keysB*}", "//val2/key1/val1"], + ["{/keysB+}", "/keysB./val2/keysB.key1/val1"], + ["X{.list}", "X.val1,,val3"], + ["X{.list*}", "X.val1..val3"], + ["X{.list+}", "X.list.val1.list..list.val3"], + ["X{.keysA}", "X.key1,,key2,val2"], + ["X{.keysA*}", "X.key1..key2.val2"], + ["X{.keysA+}", "X.keysA.key1..keysA.key2.val2"], + ["X{.keysB}", "X.,val2,key1,val1"], + ["X{.keysB*}", "X..val2.key1.val1"], + ["X{.keysB+}", "X.keysB..val2.keysB.key1.val1"] + ] + } +} |