Skip to content

Commit 767a776

Browse files
committed
Switch to test runner from decimal branch
1 parent 312bd76 commit 767a776

File tree

1 file changed

+41
-131
lines changed

1 file changed

+41
-131
lines changed

compatible.test.js

Lines changed: 41 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import fs from 'fs'
22
import { LogicEngine, AsyncLogicEngine } from './index.js'
3+
34
const tests = []
45

56
// get all json files from "suites" directory
@@ -20,141 +21,50 @@ function correction (x) {
2021
return x
2122
}
2223

23-
// eslint-disable-next-line no-labels
24-
inline: {
25-
const logic = new LogicEngine(undefined, { compatible: true })
26-
const asyncLogic = new AsyncLogicEngine(undefined, { compatible: true })
27-
const logicWithoutOptimization = new LogicEngine(undefined, { compatible: true })
28-
const asyncLogicWithoutOptimization = new AsyncLogicEngine(undefined, { compatible: true })
24+
const engines = []
2925

30-
describe('All of the compatible tests', () => {
31-
tests.forEach((testCase) => {
32-
test(`${JSON.stringify(testCase[0])} ${JSON.stringify(
33-
testCase[1]
34-
)}`, () => {
35-
expect(correction(logic.run(testCase[0], testCase[1]))).toStrictEqual(testCase[2])
36-
})
37-
38-
test(`${JSON.stringify(testCase[0])} ${JSON.stringify(
39-
testCase[1]
40-
)} (async)`, async () => {
41-
expect(correction(await asyncLogic.run(testCase[0], testCase[1]))).toStrictEqual(
42-
testCase[2]
43-
)
44-
})
45-
46-
test(`${JSON.stringify(testCase[0])} ${JSON.stringify(
47-
testCase[1]
48-
)} (built)`, () => {
49-
const f = logic.build(testCase[0])
50-
expect(correction(f(testCase[1]))).toStrictEqual(testCase[2])
51-
})
52-
53-
test(`${JSON.stringify(testCase[0])} ${JSON.stringify(
54-
testCase[1]
55-
)} (asyncBuilt)`, async () => {
56-
const f = await asyncLogic.build(testCase[0])
57-
expect(correction(await f(testCase[1]))).toStrictEqual(testCase[2])
58-
})
59-
60-
test(`${JSON.stringify(testCase[0])} ${JSON.stringify(
61-
testCase[1]
62-
)} (noOptimization)`, () => {
63-
expect(correction(logicWithoutOptimization.run(testCase[0], testCase[1]))).toStrictEqual(testCase[2])
64-
})
65-
66-
test(`${JSON.stringify(testCase[0])} ${JSON.stringify(
67-
testCase[1]
68-
)} (asyncNoOptimization)`, async () => {
69-
expect(correction(await asyncLogicWithoutOptimization.run(testCase[0], testCase[1]))).toStrictEqual(
70-
testCase[2]
71-
)
72-
})
26+
for (let i = 0; i < 8; i++) {
27+
let res = 'sync'
28+
let engine = new LogicEngine(undefined, { compatible: true })
29+
// sync / async
30+
if (i & 1) {
31+
engine = new AsyncLogicEngine(undefined, { compatible: true })
32+
res = 'async'
33+
}
34+
// inline / disabled
35+
if (i & 2) {
36+
engine.disableInline = true
37+
res += ' no-inline'
38+
}
39+
// optimized / not optimized
40+
if (i & 4) {
41+
engine.disableInterpretedOptimization = true
42+
res += ' no-optimized'
43+
}
44+
engines.push([engine, res])
45+
}
7346

74-
test(`${JSON.stringify(testCase[0])} ${JSON.stringify(
47+
describe('All of the compatible tests', () => {
48+
for (const testCase of tests) {
49+
for (const engine of engines) {
50+
test(`${engine[1]} ${JSON.stringify(testCase[0])} ${JSON.stringify(
7551
testCase[1]
76-
)} (builtNoOptimization)`, () => {
77-
const f = logicWithoutOptimization.build(testCase[0])
78-
expect(correction(f(testCase[1]))).toStrictEqual(testCase[2])
52+
)}`, async () => {
53+
let result = await engine[0].run(testCase[0], testCase[1])
54+
if ((result || 0).toNumber) result = Number(result)
55+
if (Array.isArray(result)) result = result.map(i => (i || 0).toNumber ? Number(i) : i)
56+
expect(correction(result)).toStrictEqual(testCase[2])
7957
})
8058

81-
test(`${JSON.stringify(testCase[0])} ${JSON.stringify(
59+
test(`${engine[1]} ${JSON.stringify(testCase[0])} ${JSON.stringify(
8260
testCase[1]
83-
)} (asyncBuiltNoOptimization)`, async () => {
84-
const f = await asyncLogicWithoutOptimization.build(testCase[0])
85-
expect(correction(await f(testCase[1]))).toStrictEqual(testCase[2])
61+
)} (built)`, async () => {
62+
const f = await engine[0].build(testCase[0])
63+
let result = await f(testCase[1])
64+
if ((result || 0).toNumber) result = Number(result)
65+
if (Array.isArray(result)) result = result.map(i => i.toNumber ? Number(i) : i)
66+
expect(correction(result)).toStrictEqual(testCase[2])
8667
})
87-
})
88-
})
89-
}
90-
// eslint-disable-next-line no-labels
91-
notInline: {
92-
const logic = new LogicEngine(undefined, { compatible: true })
93-
const asyncLogic = new AsyncLogicEngine(undefined, { compatible: true })
94-
const logicWithoutOptimization = new LogicEngine(undefined, { compatible: true })
95-
const asyncLogicWithoutOptimization = new AsyncLogicEngine(undefined, { compatible: true })
96-
97-
logicWithoutOptimization.disableInline = true
98-
logic.disableInline = true
99-
asyncLogic.disableInline = true
100-
asyncLogicWithoutOptimization.disableInline = true
101-
102-
// using a loop to disable the inline compilation mechanism.
103-
tests.forEach((testCase) => {
104-
test(`${JSON.stringify(testCase[0])} ${JSON.stringify(
105-
testCase[1]
106-
)}`, () => {
107-
expect(correction(logic.run(testCase[0], testCase[1]))).toStrictEqual(testCase[2])
108-
})
109-
110-
test(`${JSON.stringify(testCase[0])} ${JSON.stringify(
111-
testCase[1]
112-
)} (async)`, async () => {
113-
expect(correction(await asyncLogic.run(testCase[0], testCase[1]))).toStrictEqual(
114-
testCase[2]
115-
)
116-
})
117-
118-
test(`${JSON.stringify(testCase[0])} ${JSON.stringify(
119-
testCase[1]
120-
)} (built)`, () => {
121-
const f = logic.build(testCase[0])
122-
expect(correction(f(testCase[1]))).toStrictEqual(testCase[2])
123-
})
124-
125-
test(`${JSON.stringify(testCase[0])} ${JSON.stringify(
126-
testCase[1]
127-
)} (asyncBuilt)`, async () => {
128-
const f = await asyncLogic.build(testCase[0])
129-
expect(correction(await f(testCase[1]))).toStrictEqual(testCase[2])
130-
})
131-
132-
test(`${JSON.stringify(testCase[0])} ${JSON.stringify(
133-
testCase[1]
134-
)} (noOptimization)`, () => {
135-
expect(correction(logicWithoutOptimization.run(testCase[0], testCase[1]))).toStrictEqual(testCase[2])
136-
})
137-
138-
test(`${JSON.stringify(testCase[0])} ${JSON.stringify(
139-
testCase[1]
140-
)} (asyncNoOptimization)`, async () => {
141-
expect(correction(await asyncLogicWithoutOptimization.run(testCase[0], testCase[1]))).toStrictEqual(
142-
testCase[2]
143-
)
144-
})
145-
146-
test(`${JSON.stringify(testCase[0])} ${JSON.stringify(
147-
testCase[1]
148-
)} (builtNoOptimization)`, () => {
149-
const f = logicWithoutOptimization.build(testCase[0])
150-
expect(correction(f(testCase[1]))).toStrictEqual(testCase[2])
151-
})
152-
153-
test(`${JSON.stringify(testCase[0])} ${JSON.stringify(
154-
testCase[1]
155-
)} (asyncBuiltNoOptimization)`, async () => {
156-
const f = await asyncLogicWithoutOptimization.build(testCase[0])
157-
expect(correction(await f(testCase[1]))).toStrictEqual(testCase[2])
158-
})
159-
})
160-
}
68+
}
69+
}
70+
})

0 commit comments

Comments
 (0)