diff options
Diffstat (limited to 'devtools/client/shared/test/unit/test_attribute-parsing-02.js')
-rw-r--r-- | devtools/client/shared/test/unit/test_attribute-parsing-02.js | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/devtools/client/shared/test/unit/test_attribute-parsing-02.js b/devtools/client/shared/test/unit/test_attribute-parsing-02.js new file mode 100644 index 000000000..2c24d8f05 --- /dev/null +++ b/devtools/client/shared/test/unit/test_attribute-parsing-02.js @@ -0,0 +1,134 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +// Test parseAttribute from node-attribute-parser.js + +const {require} = Components.utils.import("resource://devtools/shared/Loader.jsm", {}); +const {parseAttribute} = require("devtools/client/shared/node-attribute-parser"); + +const TEST_DATA = [{ + tagName: "body", + namespaceURI: "http://www.w3.org/1999/xhtml", + attributeName: "class", + attributeValue: "some css class names", + expected: [ + {value: "some css class names", type: "string"} + ] +}, { + tagName: "box", + namespaceURI: "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", + attributeName: "datasources", + attributeValue: "/url/1?test=1#test http://mozilla.org/wow", + expected: [ + {value: "/url/1?test=1#test", type: "uri"}, + {value: " ", type: "string"}, + {value: "http://mozilla.org/wow", type: "uri"} + ] +}, { + tagName: "form", + namespaceURI: "http://www.w3.org/1999/xhtml", + attributeName: "action", + attributeValue: "/path/to/handler", + expected: [ + {value: "/path/to/handler", type: "uri"} + ] +}, { + tagName: "a", + namespaceURI: "http://www.w3.org/1999/xhtml", + attributeName: "ping", + attributeValue: "http://analytics.com/track?id=54 http://analytics.com/track?id=55", + expected: [ + {value: "http://analytics.com/track?id=54", type: "uri"}, + {value: " ", type: "string"}, + {value: "http://analytics.com/track?id=55", type: "uri"} + ] +}, { + tagName: "link", + namespaceURI: "http://www.w3.org/1999/xhtml", + attributeName: "href", + attributeValue: "styles.css", + otherAttributes: [{name: "rel", value: "stylesheet"}], + expected: [ + {value: "styles.css", type: "cssresource"} + ] +}, { + tagName: "link", + namespaceURI: "http://www.w3.org/1999/xhtml", + attributeName: "href", + attributeValue: "styles.css", + expected: [ + {value: "styles.css", type: "uri"} + ] +}, { + tagName: "output", + namespaceURI: "http://www.w3.org/1999/xhtml", + attributeName: "for", + attributeValue: "element-id something id", + expected: [ + {value: "element-id", type: "idref"}, + {value: " ", type: "string"}, + {value: "something", type: "idref"}, + {value: " ", type: "string"}, + {value: "id", type: "idref"} + ] +}, { + tagName: "img", + namespaceURI: "http://www.w3.org/1999/xhtml", + attributeName: "contextmenu", + attributeValue: "id-of-menu", + expected: [ + {value: "id-of-menu", type: "idref"} + ] +}, { + tagName: "img", + namespaceURI: "http://www.w3.org/1999/xhtml", + attributeName: "src", + attributeValue: "omg-thats-so-funny.gif", + expected: [ + {value: "omg-thats-so-funny.gif", type: "uri"} + ] +}, { + tagName: "key", + namespaceURI: "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", + attributeName: "command", + attributeValue: "some_command_id", + expected: [ + {value: "some_command_id", type: "idref"} + ] +}, { + tagName: "script", + namespaceURI: "whatever", + attributeName: "src", + attributeValue: "script.js", + expected: [ + {value: "script.js", type: "jsresource"} + ] +}]; + +function run_test() { + for (let {tagName, namespaceURI, attributeName, + otherAttributes, attributeValue, expected} of TEST_DATA) { + do_print("Testing <" + tagName + " " + attributeName + "='" + attributeValue + "'>"); + + let attributes = [ + ...otherAttributes || [], + { name: attributeName, value: attributeValue } + ]; + let tokens = parseAttribute(namespaceURI, tagName, attributes, attributeName); + if (!expected) { + do_check_true(!tokens); + continue; + } + + do_print("Checking that the number of parsed tokens is correct"); + do_check_eq(tokens.length, expected.length); + + for (let i = 0; i < tokens.length; i++) { + do_print("Checking the data in token " + i); + do_check_eq(tokens[i].value, expected[i].value); + do_check_eq(tokens[i].type, expected[i].type); + } + } +} |