Index: node_modules/vulcanize/node_modules/whacko/node_modules/CSSselect/node_modules/CSSwhat/tests/test.js |
diff --git a/node_modules/vulcanize/node_modules/whacko/node_modules/CSSselect/node_modules/CSSwhat/tests/test.js b/node_modules/vulcanize/node_modules/whacko/node_modules/CSSselect/node_modules/CSSwhat/tests/test.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..634f5bae9478de3b6ba70660c8e840c1f7be0f84 |
--- /dev/null |
+++ b/node_modules/vulcanize/node_modules/whacko/node_modules/CSSselect/node_modules/CSSwhat/tests/test.js |
@@ -0,0 +1,392 @@ |
+var assert = require("assert"), |
+ CSSwhat = require("../"); |
+ |
+var tests = [ |
+ //tag names |
+ [ |
+ 'div', |
+ [ |
+ [ |
+ { |
+ 'type': 'tag', |
+ 'name': 'div' |
+ } |
+ ] |
+ ], |
+ 'simple tag' |
+ ], |
+ [ |
+ '*', |
+ [ |
+ [ |
+ { |
+ 'type': 'universal' |
+ } |
+ ] |
+ ], |
+ 'universal' |
+ ], |
+ |
+ //traversal |
+ [ |
+ 'div div', |
+ [ |
+ [ |
+ { |
+ 'type': 'tag', |
+ 'name': 'div' |
+ }, |
+ { |
+ 'type': 'descendant' |
+ }, |
+ { |
+ 'type': 'tag', |
+ 'name': 'div' |
+ } |
+ ] |
+ ], |
+ 'descendant' |
+ ], |
+ [ |
+ 'div\t \n \tdiv', |
+ [ |
+ [ |
+ { |
+ 'type': 'tag', |
+ 'name': 'div' |
+ }, |
+ { |
+ 'type': 'descendant' |
+ }, |
+ { |
+ 'type': 'tag', |
+ 'name': 'div' |
+ } |
+ ] |
+ ], |
+ 'descendant /w whitespace' |
+ ], |
+ [ |
+ 'div + div', |
+ [ |
+ [ |
+ { |
+ 'type': 'tag', |
+ 'name': 'div' |
+ }, |
+ { |
+ 'type': 'adjacent' |
+ }, |
+ { |
+ 'type': 'tag', |
+ 'name': 'div' |
+ } |
+ ] |
+ ], |
+ 'adjacent' |
+ ], |
+ [ |
+ 'div ~ div', |
+ [ |
+ [ |
+ { |
+ 'type': 'tag', |
+ 'name': 'div' |
+ }, |
+ { |
+ 'type': 'sibling' |
+ }, |
+ { |
+ 'type': 'tag', |
+ 'name': 'div' |
+ } |
+ ] |
+ ], |
+ 'sibling' |
+ ], |
+ [ |
+ 'p < div', |
+ [ |
+ [ |
+ { |
+ 'type': 'tag', |
+ 'name': 'p' |
+ }, |
+ { |
+ 'type': 'parent' |
+ }, |
+ { |
+ 'type': 'tag', |
+ 'name': 'div' |
+ } |
+ ] |
+ ], |
+ 'parent' |
+ ], |
+ |
+ |
+ //Escaped whitespace |
+ [ |
+ '#\\ > a ', |
+ [ |
+ [ |
+ { |
+ 'type': 'attribute', |
+ 'action': 'equals', |
+ 'name': 'id', |
+ 'value': ' ', |
+ 'ignoreCase': false |
+ }, |
+ { |
+ 'type': 'child' |
+ }, |
+ { |
+ 'type': 'tag', |
+ 'name': 'a' |
+ } |
+ ] |
+ ], |
+ 'Space between escaped space and combinator' |
+ ], |
+ [ |
+ '.\\ ', |
+ [ |
+ [ |
+ { |
+ 'type': 'attribute', |
+ 'name': 'class', |
+ 'action': 'element', |
+ 'value': ' ', |
+ 'ignoreCase': false |
+ } |
+ ] |
+ ], |
+ 'Space after escaped space' |
+ ], |
+ [ |
+ '\\61 ', |
+ [ |
+ [ |
+ { |
+ 'type': 'tag', |
+ 'name': 'a' |
+ } |
+ ] |
+ ], |
+ 'Numeric escape with space (BMP)' |
+ ], |
+ [ |
+ '\\1d306\\01d306', |
+ [ |
+ [ |
+ { |
+ 'type': 'tag', |
+ 'name': '\uD834\uDF06\uD834\uDF06' |
+ } |
+ ] |
+ ], |
+ 'Numeric escape (outside BMP)' |
+ ], |
+ |
+ |
+ //attributes |
+ [ |
+ '[name^=\'foo[\']', |
+ [ |
+ [ |
+ { |
+ 'type': 'attribute', |
+ 'name': 'name', |
+ 'action': 'start', |
+ 'value': 'foo[', |
+ 'ignoreCase': false |
+ } |
+ ] |
+ ], |
+ 'quoted attribute' |
+ ], |
+ [ |
+ '[name^=\'foo[bar]\']', |
+ [ |
+ [ |
+ { |
+ 'type': 'attribute', |
+ 'name': 'name', |
+ 'action': 'start', |
+ 'value': 'foo[bar]', |
+ 'ignoreCase': false |
+ } |
+ ] |
+ ], |
+ 'quoted attribute' |
+ ], |
+ [ |
+ '[name$=\'[bar]\']', |
+ [ |
+ [ |
+ { |
+ 'type': 'attribute', |
+ 'name': 'name', |
+ 'action': 'end', |
+ 'value': '[bar]', |
+ 'ignoreCase': false |
+ } |
+ ] |
+ ], |
+ 'quoted attribute' |
+ ], |
+ [ |
+ '[href *= \'google\']', |
+ [ |
+ [ |
+ { |
+ 'type': 'attribute', |
+ 'name': 'href', |
+ 'action': 'any', |
+ 'value': 'google', |
+ 'ignoreCase': false |
+ } |
+ ] |
+ ], |
+ 'quoted attribute with spaces' |
+ ], |
+ [ |
+ '[name=foo\\.baz]', |
+ [ |
+ [ |
+ { |
+ 'type': 'attribute', |
+ 'name': 'name', |
+ 'action': 'equals', |
+ 'value': 'foo.baz', |
+ 'ignoreCase': false |
+ } |
+ ] |
+ ], |
+ 'attribute with escaped dot' |
+ ], |
+ [ |
+ '[name=foo\\[bar\\]]', |
+ [ |
+ [ |
+ { |
+ 'type': 'attribute', |
+ 'name': 'name', |
+ 'action': 'equals', |
+ 'value': 'foo[bar]', |
+ 'ignoreCase': false |
+ } |
+ ] |
+ ], |
+ 'attribute with escaped square brackets' |
+ ], |
+ [ |
+ '[xml\\:test]', |
+ [ |
+ [ |
+ { |
+ 'type': 'attribute', |
+ 'name': 'xml:test', |
+ 'action': 'exists', |
+ 'value': '', |
+ 'ignoreCase': false |
+ } |
+ ] |
+ ], |
+ 'escaped attribute' |
+ ], |
+ [ |
+ '[name="foo ~ < > , bar" i]', |
+ [ |
+ [ |
+ { |
+ 'type': 'attribute', |
+ 'name': 'name', |
+ 'action': 'equals', |
+ 'value': 'foo ~ < > , bar', |
+ 'ignoreCase': true |
+ } |
+ ] |
+ ], |
+ 'attribute with previously normalized characters' |
+ ], |
+ |
+ |
+ |
+ //pseudo selectors |
+ [ |
+ ':foo', |
+ [ |
+ [ |
+ { |
+ 'type': 'pseudo', |
+ 'name': 'foo', |
+ 'data': null |
+ } |
+ ] |
+ ], |
+ 'pseudo selector without any data' |
+ ], |
+ [ |
+ ':bar(baz)', |
+ [ |
+ [ |
+ { |
+ 'type': 'pseudo', |
+ 'name': 'bar', |
+ 'data': 'baz' |
+ } |
+ ] |
+ ], |
+ 'pseudo selector with data' |
+ ], |
+ [ |
+ ':contains(\'(foo)\')', |
+ [ |
+ [ |
+ { |
+ 'type': 'pseudo', |
+ 'name': 'contains', |
+ 'data': '\'(foo)\'' |
+ } |
+ ] |
+ ], |
+ 'pseudo selector with data' |
+ ], |
+ |
+ //multiple selectors |
+ [ |
+ 'a , b', |
+ [ |
+ [ |
+ { |
+ 'type': 'tag', |
+ 'name': 'a' |
+ } |
+ ], |
+ [ |
+ { |
+ 'type': 'tag', |
+ 'name': 'b' |
+ } |
+ ] |
+ ], |
+ 'multiple selectors' |
+ ] |
+]; |
+ |
+tests.forEach(function(arr, i){ |
+ arr[0] = CSSwhat(arr[0]); |
+ assert.deepEqual.apply(null, arr); |
+ console.log("\t%d: '%s' passed", i + 1, arr[2]); |
+}); |
+ |
+console.log("\nCollected selectors (qwery, sizzle, nwmatcher)..."); |
+ |
+var out = require("./out.json"); |
+ |
+Object.keys(out).forEach(function(s){ |
+ assert.deepEqual(CSSwhat(s), out[s], s); |
+}); |
+ |
+console.log("Passed!"); |