Skip to content

Commit abb2be6

Browse files
committed
Test cases
Signed-off-by: Liam Allan <[email protected]>
1 parent 37db58f commit abb2be6

File tree

5 files changed

+146
-11
lines changed

5 files changed

+146
-11
lines changed

.vscode/launch.json

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,22 @@
66
"version": "0.2.0",
77
"configurations": [
88
{
9-
"name": "Run Extension",
10-
"type": "extensionHost",
9+
"name": "Launch Tests",
10+
"program": "${workspaceFolder}/test/index.js",
1111
"request": "launch",
12-
"args": [
13-
"--extensionDevelopmentPath=${workspaceFolder}"
14-
]
12+
"skipFiles": [
13+
"<node_internals>/**"
14+
],
15+
"type": "node"
1516
},
1617
{
17-
"name": "Extension Tests",
18+
"name": "Run Extension",
1819
"type": "extensionHost",
1920
"request": "launch",
2021
"args": [
21-
"--extensionDevelopmentPath=${workspaceFolder}",
22-
"--extensionTestsPath=${workspaceFolder}/test/suite/index"
22+
"--extensionDevelopmentPath=${workspaceFolder}"
2323
]
24-
}
24+
},
25+
2526
]
2627
}

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,7 @@
5656
],
5757
"scripts": {
5858
"lint": "eslint .",
59-
"pretest": "npm run lint",
60-
"test": "node ./test/runTest.js",
59+
"test": "node ./test",
6160
"package": "vsce package"
6261
},
6362
"devDependencies": {

test/file/depts.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
exports.lines = [
2+
` A INDARA`,
3+
` A CA03(03)`,
4+
` A R SFLDTA SFL`,
5+
` A RRN 4Y 0H`,
6+
` A* DISPLAY DTA`,
7+
` A XSEL 1A B 7 8`,
8+
` A XID 3A O 7 12`,
9+
` A XNAME 38A O 7 16`,
10+
` A* COLOR HELLO`,
11+
` A R SFLCTL SFLCTL(SFLDTA)`,
12+
` A SFLPAG(0014)`,
13+
` A SFLSIZ(9999)`,
14+
` A OVERLAY`,
15+
` A 85 SFLDSPCTL`,
16+
` A 95 SFLDSP`,
17+
` A N85 SFLCLR`,
18+
` A SFLRRN 4S 0H SFLRCDNBR(CURSOR)`,
19+
` A*`,
20+
` A 6 6'Opt'`,
21+
` A DSPATR(HI)`,
22+
` A DSPATR(UL)`,
23+
` A 6 12'ID'`,
24+
` A DSPATR(HI)`,
25+
` A DSPATR(UL)`,
26+
` A 6 16'Name'`,
27+
` A DSPATR(UL)`,
28+
` A COLOR(WHT)`,
29+
` A R FOOTER_FMT`,
30+
` A OVERLAY`,
31+
` A 3 6'F3=Exit'`,
32+
` A COLOR(BLU)`,
33+
` A 2 35'Departments'`,
34+
` A DSPATR(UL)`,
35+
` A COLOR(WHT)`,
36+
` A 4 6'5=View' COLOR(BLU)`,
37+
];

test/index.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
const cases = require("./tests");
2+
3+
Object.values(cases).forEach(testcase => testcase());

test/tests.js

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
const assert = require("assert");
2+
const { DisplayFile } = require("../src/dspf");
3+
const depts = require("./file/depts");
4+
5+
exports.testa = () => {
6+
const file = new DisplayFile();
7+
file.parse(depts.lines);
8+
9+
assert.strictEqual(file.formats.length, 4);
10+
11+
// Testing: window size, keywords
12+
13+
const globalFormat = file.formats[0];
14+
assert.strictEqual(globalFormat.name, `GLOBAL`);
15+
assert.deepStrictEqual(globalFormat.windowSize, {
16+
height: 24, width: 80, x: 0, y: 0
17+
});
18+
assert.strictEqual(globalFormat.keywords.length, 2);
19+
assert.deepStrictEqual(globalFormat.keywords[0], {
20+
name: `INDARA`, value: undefined, conditions: []
21+
});
22+
assert.deepStrictEqual(globalFormat.keywords[1], {
23+
name: `CA03`, value: `03`, conditions: []
24+
});
25+
26+
// Field type tests:
27+
28+
const subfileData = file.formats[1];
29+
assert.strictEqual(subfileData.name, `SFLDTA`);
30+
assert.deepStrictEqual(subfileData.keywords[0], {
31+
name: `SFL`, value: undefined, conditions: []
32+
});
33+
34+
const rrnField = subfileData.fields[0];
35+
assert.strictEqual(rrnField.type, `decimal`);
36+
assert.strictEqual(rrnField.length, 4);
37+
assert.strictEqual(rrnField.decimals, 0);
38+
assert.strictEqual(rrnField.displayType, `hidden`);
39+
assert.strictEqual(rrnField.name, `RRN`);
40+
assert.deepStrictEqual(rrnField.position, {x: 0, y: 0});
41+
42+
const xselField = subfileData.fields[1];
43+
assert.strictEqual(xselField.type, `char`);
44+
assert.strictEqual(xselField.length, 1);
45+
assert.strictEqual(xselField.decimals, 0);
46+
assert.strictEqual(xselField.displayType, `both`);
47+
assert.strictEqual(xselField.name, `XSEL`);
48+
assert.deepStrictEqual(xselField.position, {x: 8, y: 7});
49+
50+
const xidField = subfileData.fields[2];
51+
assert.strictEqual(xidField.type, `char`);
52+
assert.strictEqual(xidField.length, 3);
53+
assert.strictEqual(xidField.decimals, 0);
54+
assert.strictEqual(xidField.displayType, `output`);
55+
assert.strictEqual(xidField.name, `XID`);
56+
assert.deepStrictEqual(xidField.position, {x: 12, y: 7});
57+
58+
const xnameField = subfileData.fields[3];
59+
assert.strictEqual(xnameField.type, `char`);
60+
assert.strictEqual(xnameField.length, 38);
61+
assert.strictEqual(xnameField.decimals, 0);
62+
assert.strictEqual(xnameField.displayType, `output`);
63+
assert.strictEqual(xnameField.name, `XNAME`);
64+
assert.deepStrictEqual(xnameField.position, {x: 16, y: 7});
65+
66+
// Const (text field) tests
67+
68+
const subfileControl = file.formats[2];
69+
assert.strictEqual(subfileControl.fields.length, 4);
70+
assert.strictEqual(subfileControl.keywords.length, 7);
71+
72+
const text1 = subfileControl.fields[1];
73+
assert.strictEqual(text1.name, `TEXT1`);
74+
assert.strictEqual(text1.displayType, `const`);
75+
assert.strictEqual(text1.value, `Opt`);
76+
assert.deepStrictEqual(text1.position, {x: 6, y: 6});
77+
assert.deepStrictEqual(text1.keywords, [
78+
{ name: `DSPATR`, value: `HI`, conditions: [] },
79+
{ name: `DSPATR`, value: `UL`, conditions: [] }
80+
]);
81+
82+
// Keywords on same line tests
83+
const footer = file.formats[3];
84+
assert.strictEqual(footer.fields.length, 3);
85+
assert.strictEqual(footer.keywords.length, 1);
86+
87+
const sameLineField = footer.fields[2];
88+
assert.strictEqual(sameLineField.name, `TEXT6`);
89+
assert.strictEqual(sameLineField.displayType, `const`);
90+
assert.strictEqual(sameLineField.value, `5=View`);
91+
assert.deepStrictEqual(sameLineField.position, {x: 6, y: 4});
92+
assert.deepStrictEqual(sameLineField.keywords, [
93+
{ name: `COLOR`, value: `BLU`, conditions: [] },
94+
]);
95+
}

0 commit comments

Comments
 (0)