You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
2.7 KiB
133 lines
2.7 KiB
|
|
|
|
const parser = require('./plugin_cfg.js');
|
|
const input_text = `3.4.x 3.5 3 3.* * 6.2.* || > 3.5 <= 3.2 > 2.4 <= 33.2 >=133.222.2 !333 != 22 || 4`;
|
|
|
|
// let r = parser.parse(input_text);
|
|
|
|
|
|
|
|
function assert(label, blk) {
|
|
console.log(`run ${label}`);
|
|
let r = blk();
|
|
if (!r) {
|
|
console.error(` failed!`);
|
|
}
|
|
}
|
|
|
|
// r.match("3.2");
|
|
// r.match("3.4");
|
|
{
|
|
let vs = ["3.4", "3.4.*", "3.4.x", "3.4.X"];
|
|
for (let v of vs) {
|
|
let s = parser.parse(v);
|
|
let label = `Simple match ${v}`;
|
|
assert(`${label} 1`, () => {
|
|
return s.match("3.4");
|
|
});
|
|
assert(`${label} 2`, () => {
|
|
return !s.match("3.2");
|
|
});
|
|
assert(`${label} 2`, () => {
|
|
return s.match("3.4.3");
|
|
});
|
|
assert(`${label} 3`, () => {
|
|
return s.match("3.4.6");
|
|
});
|
|
assert(`${label} 4`, () => {
|
|
return !s.match("3.444");
|
|
});
|
|
assert("dont match", () => {
|
|
let cases = [
|
|
"2.4",
|
|
"2.4.2",
|
|
"6.4",
|
|
"3"
|
|
]
|
|
return !cases.reduce((p, cs) => p || s.match(cs), false);
|
|
});
|
|
}
|
|
}
|
|
{
|
|
let s = parser.parse("*");
|
|
assert("match all", () => {
|
|
let cases = [
|
|
"2.4",
|
|
"2.4.2",
|
|
"6.4",
|
|
"3"
|
|
]
|
|
return cases.reduce((p, cs) => p && s.match(cs), true);
|
|
});
|
|
}
|
|
{
|
|
function assert_match(target, versions, bad_versions) {
|
|
let s = parser.parse(target);
|
|
for (let v of versions) {
|
|
assert(`test ${v}`, () => {
|
|
return s.match(v);
|
|
});
|
|
}
|
|
for (let v of bad_versions) {
|
|
assert(`test not match ${v}`, () => {
|
|
return !s.match(v);
|
|
});
|
|
}
|
|
}
|
|
assert_match(">3.3 <3.6", [
|
|
'3.4',
|
|
'3.4.1',
|
|
'3.4.2',
|
|
'3.5',
|
|
'3.5.0',
|
|
'3.5.1',
|
|
'3.5.2',
|
|
],
|
|
[
|
|
'3.3',
|
|
'3.3.2',
|
|
'2.3',
|
|
'3.6.0',
|
|
'3.6',
|
|
]
|
|
);
|
|
assert_match(">=3.3 <= 3.6.0", [
|
|
'3.3.0',
|
|
'3.3.1',
|
|
'3.4',
|
|
'3.4.1',
|
|
'3.4.2',
|
|
'3.5',
|
|
'3.5.0',
|
|
'3.5.1',
|
|
'3.5.2',
|
|
'3.6.0'
|
|
],
|
|
[
|
|
'3.2.9',
|
|
'2.3',
|
|
'3.6.1',
|
|
]
|
|
);
|
|
assert_match(">=3.3 <= 3.6.0 !3.5.2|| 4.x", [
|
|
'3.3.0',
|
|
'3.3.1',
|
|
'3.4',
|
|
'3.4.1',
|
|
'3.4.2',
|
|
'3.5',
|
|
'3.5.0',
|
|
'4.0',
|
|
'4.1',
|
|
'4.2',
|
|
'3.5.1',
|
|
'3.6.0'
|
|
],
|
|
[
|
|
'3.2.9',
|
|
'2.3',
|
|
'3.6.1',
|
|
'3.5.2'
|
|
]
|
|
);
|
|
} |