Update test
Xavier Guimard
3 years ago
0 | lib/ |
4 | 4 | Uploaders: Thorsten Alteholz <debian@alteholz.de> |
5 | 5 | Build-Depends: debhelper-compat (= 13) |
6 | 6 | , dh-sequence-nodejs |
7 | , mocha <!nocheck> | |
7 | 8 | , node-assert <!nocheck> |
8 | 9 | , node-boolbase <!nocheck> |
10 | , node-expect.js <!nocheck> | |
11 | , node-typescript | |
12 | , node-typescript-types | |
9 | 13 | Standards-Version: 4.5.1 |
10 | 14 | Vcs-Browser: https://salsa.debian.org/js-team/node-nth-check |
11 | 15 | Vcs-Git: https://salsa.debian.org/js-team/node-nth-check.git |
0 | debian/tests/test |
0 | const valid = [ | |
1 | ["1", [0, 1]], | |
2 | ["2", [0, 2]], | |
3 | ["3", [0, 3]], | |
4 | ["5", [0, 5]], | |
5 | [" 1 ", [0, 1]], | |
6 | [" 5 ", [0, 5]], | |
7 | ["+2n + 1", [2, 1]], | |
8 | ["-1", [0, -1]], | |
9 | ["-1n + 3", [-1, 3]], | |
10 | ["-1n+3", [-1, 3]], | |
11 | ["-n+2", [-1, 2]], | |
12 | ["-n+3", [-1, 3]], | |
13 | ["0n+3", [0, 3]], | |
14 | ["1n", [1, 0]], | |
15 | ["1n+0", [1, 0]], | |
16 | ["2n", [2, 0]], | |
17 | ["2n + 1", [2, 1]], | |
18 | ["2n+1", [2, 1]], | |
19 | ["3n", [3, 0]], | |
20 | ["3n+0", [3, 0]], | |
21 | ["3n+1", [3, 1]], | |
22 | ["3n+2", [3, 2]], | |
23 | ["3n+3", [3, 3]], | |
24 | ["3n-1", [3, -1]], | |
25 | ["3n-2", [3, -2]], | |
26 | ["3n-3", [3, -3]], | |
27 | ["even", [2, 0]], | |
28 | ["n", [1, 0]], | |
29 | ["n+2", [1, 2]], | |
30 | ["odd", [2, 1]], | |
31 | ||
32 | // Surprisingly, neither sizzle, qwery or nwmatcher cover these cases | |
33 | ["-4n+13", [-4, 13]], | |
34 | ["-2n + 12", [-2, 12]], | |
35 | ]; | |
36 | ||
37 | const invalid = [ | |
38 | "-", | |
39 | "- 1n", | |
40 | "-1 n", | |
41 | "2+0", | |
42 | "2n+-0", | |
43 | "an+b", | |
44 | "asdf", | |
45 | "b", | |
46 | "expr", | |
47 | "odd|even|x", | |
48 | ]; | |
49 | ||
50 | module.exports = {valid, invalid}; |
0 | const expect = require('expect.js'); | |
1 | const nthCheck = require('../../../lib'); | |
2 | const compile = nthCheck.compile; | |
3 | const { valid } = require("./__fixtures__/rules"); | |
4 | ||
5 | const valArray = new Array(...Array(2e3)).map((_, i) => i); | |
6 | ||
7 | /** | |
8 | * Iterate through all possible values. This is adapted from qwery, | |
9 | * and uses a more intuitive way to process all elements. | |
10 | */ | |
11 | function slowNth([a, b]) { | |
12 | if (a === 0 && b > 0) return [b - 1]; | |
13 | ||
14 | return valArray.filter((val) => { | |
15 | for (let i = b; a > 0 ? i <= valArray.length : i >= 1; i += a) { | |
16 | if (val === valArray[i - 1]) return true; | |
17 | } | |
18 | return false; | |
19 | }); | |
20 | } | |
21 | ||
22 | describe("parse", () => { | |
23 | it("compile & run all valid", () => { | |
24 | for (const [_, parsed] of valid) { | |
25 | const filtered = valArray.filter(compile(parsed)); | |
26 | const iterated = slowNth(parsed); | |
27 | ||
28 | expect(filtered).to.eql(iterated); | |
29 | } | |
30 | }); | |
31 | ||
32 | it("parse, compile & run all valid", () => { | |
33 | for (const [rule, parsed] of valid) { | |
34 | const filtered = valArray.filter(nthCheck.default(rule)); | |
35 | const iterated = slowNth(parsed); | |
36 | ||
37 | expect([filtered, rule]).to.eql([iterated, rule]); | |
38 | } | |
39 | }); | |
40 | }); |
0 | const expect = require('expect.js'); | |
1 | const { parse } = require("../../../lib/parse"); | |
2 | const { valid, invalid } = require("./__fixtures__/rules"); | |
3 | ||
4 | describe("parse", () => { | |
5 | it("parse invalid", () => { | |
6 | for (const formula of invalid) { | |
7 | expect(() => parse(formula)).to.throwError(Error); | |
8 | } | |
9 | }); | |
10 | ||
11 | it("parse valid", () => { | |
12 | for (const [formula, result] of valid) { | |
13 | expect(parse(formula)).to.eql(result); | |
14 | } | |
15 | }); | |
16 | }); |