webpack/test/walkCssTokens.unittest.js

90 lines
2.3 KiB
JavaScript
Raw Permalink Normal View History

"use strict";
2024-10-05 23:52:05 +08:00
const fs = require("fs");
const path = require("path");
2021-09-07 15:08:58 +08:00
const walkCssTokens = require("../lib/css/walkCssTokens");
describe("walkCssTokens", () => {
const test = (name, content, fn) => {
2024-10-05 23:52:05 +08:00
it(`should parse ${name}`, () => {
2021-09-07 15:08:58 +08:00
const results = [];
2024-11-07 03:18:34 +08:00
walkCssTokens(content, 0, {
2024-10-16 21:14:48 +08:00
comment: (input, s, e) => {
results.push(["comment", input.slice(s, e)]);
return e;
},
2021-09-07 15:08:58 +08:00
url: (input, s, e, cs, ce) => {
results.push(["url", input.slice(s, e), input.slice(cs, ce)]);
return e;
},
leftCurlyBracket: (input, s, e) => {
results.push(["leftCurlyBracket", input.slice(s, e)]);
return e;
},
rightCurlyBracket: (input, s, e) => {
results.push(["rightCurlyBracket", input.slice(s, e)]);
return e;
},
leftParenthesis: (input, s, e) => {
results.push(["leftParenthesis", input.slice(s, e)]);
return e;
},
rightParenthesis: (input, s, e) => {
results.push(["rightParenthesis", input.slice(s, e)]);
return e;
},
semicolon: (input, s, e) => {
results.push(["semicolon", input.slice(s, e)]);
return e;
},
comma: (input, s, e) => {
results.push(["comma", input.slice(s, e)]);
return e;
},
2021-12-01 20:27:00 +08:00
atKeyword: (input, s, e) => {
results.push(["atKeyword", input.slice(s, e)]);
return e;
},
2024-10-09 17:09:36 +08:00
colon: (input, s, e) => {
results.push(["colon", input.slice(s, e)]);
return e;
},
delim: (input, s, e) => {
results.push(["delim", input.slice(s, e)]);
2021-09-07 15:08:58 +08:00
return e;
},
identifier: (input, s, e) => {
results.push(["identifier", input.slice(s, e)]);
return e;
},
2024-10-09 14:21:00 +08:00
hash: (input, s, e, isID) => {
results.push(["hash", input.slice(s, e), isID]);
2021-09-07 15:08:58 +08:00
return e;
2024-10-05 23:52:05 +08:00
},
string: (input, s, e) => {
results.push(["string", input.slice(s, e)]);
return e;
},
function: (input, s, e) => {
results.push(["function", input.slice(s, e)]);
return e;
2021-09-07 15:08:58 +08:00
}
});
fn(expect(results));
});
};
2024-10-05 23:52:05 +08:00
const casesPath = path.resolve(__dirname, "./configCases/css/parsing/cases");
const tests = fs
.readdirSync(casesPath)
.filter((test) => /\.css/.test(test))
.map((item) => [
2024-10-05 23:52:05 +08:00
item,
fs.readFileSync(path.resolve(casesPath, item), "utf8")
2024-10-05 23:52:05 +08:00
]);
2021-12-01 20:27:00 +08:00
2024-10-05 23:52:05 +08:00
for (const [name, code] of tests) {
test(name, code, (e) => e.toMatchSnapshot());
2024-10-05 23:52:05 +08:00
}
2021-09-07 15:08:58 +08:00
});