aboutsummaryrefslogtreecommitdiff
path: root/Foundation/TestData/GTMURITemplateExtraTests.json
diff options
context:
space:
mode:
Diffstat (limited to 'Foundation/TestData/GTMURITemplateExtraTests.json')
-rw-r--r--Foundation/TestData/GTMURITemplateExtraTests.json222
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"]
+ ]
+ }
+}