08-27-周三_17-09-29

This commit is contained in:
2025-08-27 17:10:05 +08:00
commit 86df397d8f
12735 changed files with 1145479 additions and 0 deletions

392
node_modules/CSSwhat/tests/test.js generated vendored Normal file
View File

@@ -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!");