Skip to content

Commit a3d2d6c

Browse files
committed
Update typechecker tests to be more informative
1 parent 8226cdf commit a3d2d6c

13 files changed

+133
-48
lines changed

src/types/checker/__tests__/assignStatements.test.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,17 @@ describe("Type Checker", () => {
4848
if (result.currentType === null)
4949
expect(result.currentType).toBe(testcase.result.type);
5050
else expect(result.currentType).toBeInstanceOf(testcase.result.type);
51-
expect(result.errors.length).toBe(testcase.result.errors.length);
52-
testcase.result.errors.forEach((error, index) => {
53-
expect(result.errors[index].message).toBe(error.message);
54-
});
51+
if (testcase.result.errors.length > result.errors.length) {
52+
testcase.result.errors.forEach((error, index) => {
53+
if (!result.errors[index]) expect("").toBe(error.message);
54+
expect(result.errors[index].message).toBe(error.message);
55+
});
56+
} else {
57+
result.errors.forEach((error, index) => {
58+
if (!testcase.result.errors[index]) expect(error.message).toBe("");
59+
expect(error.message).toBe(testcase.result.errors[index].message);
60+
});
61+
}
5562
});
5663
});
5764
});

src/types/checker/__tests__/binaryExpressions.test.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,17 @@ describe("Type Checker", () => {
130130
if (result.currentType === null)
131131
expect(result.currentType).toBe(testcase.result.type);
132132
else expect(result.currentType).toBeInstanceOf(testcase.result.type);
133-
expect(result.errors.length).toBe(testcase.result.errors.length);
134-
testcase.result.errors.forEach((error, index) => {
135-
expect(result.errors[index].message).toBe(error.message);
136-
});
133+
if (testcase.result.errors.length > result.errors.length) {
134+
testcase.result.errors.forEach((error, index) => {
135+
if (!result.errors[index]) expect("").toBe(error.message);
136+
expect(result.errors[index].message).toBe(error.message);
137+
});
138+
} else {
139+
result.errors.forEach((error, index) => {
140+
if (!testcase.result.errors[index]) expect(error.message).toBe("");
141+
expect(error.message).toBe(testcase.result.errors[index].message);
142+
});
143+
}
137144
});
138145
});
139146
});

src/types/checker/__tests__/booleanLiterals.test.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,17 @@ describe("Type Checker", () => {
4141
if (result.currentType === null)
4242
expect(result.currentType).toBe(testcase.result.type);
4343
else expect(result.currentType).toBeInstanceOf(testcase.result.type);
44-
expect(result.errors.length).toBe(testcase.result.errors.length);
45-
testcase.result.errors.forEach((error, index) => {
46-
expect(result.errors[index].message).toBe(error.message);
47-
});
44+
if (testcase.result.errors.length > result.errors.length) {
45+
testcase.result.errors.forEach((error, index) => {
46+
if (!result.errors[index]) expect("").toBe(error.message);
47+
expect(result.errors[index].message).toBe(error.message);
48+
});
49+
} else {
50+
result.errors.forEach((error, index) => {
51+
if (!testcase.result.errors[index]) expect(error.message).toBe("");
52+
expect(error.message).toBe(testcase.result.errors[index].message);
53+
});
54+
}
4855
});
4956
});
5057
});

src/types/checker/__tests__/characterLiterals.test.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,17 @@ describe("Type Checker", () => {
4545
if (result.currentType === null)
4646
expect(result.currentType).toBe(testcase.result.type);
4747
else expect(result.currentType).toBeInstanceOf(testcase.result.type);
48-
expect(result.errors.length).toBe(testcase.result.errors.length);
49-
testcase.result.errors.forEach((error, index) => {
50-
expect(result.errors[index].message).toBe(error.message);
51-
});
48+
if (testcase.result.errors.length > result.errors.length) {
49+
testcase.result.errors.forEach((error, index) => {
50+
if (!result.errors[index]) expect("").toBe(error.message);
51+
expect(result.errors[index].message).toBe(error.message);
52+
});
53+
} else {
54+
result.errors.forEach((error, index) => {
55+
if (!testcase.result.errors[index]) expect(error.message).toBe("");
56+
expect(error.message).toBe(testcase.result.errors[index].message);
57+
});
58+
}
5259
});
5360
});
5461
});

src/types/checker/__tests__/floatingPointLiterals.test.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -233,10 +233,17 @@ describe("Type Checker", () => {
233233
if (result.currentType === null)
234234
expect(result.currentType).toBe(testcase.result.type);
235235
else expect(result.currentType).toBeInstanceOf(testcase.result.type);
236-
expect(result.errors.length).toBe(testcase.result.errors.length);
237-
testcase.result.errors.forEach((error, index) => {
238-
expect(result.errors[index].message).toBe(error.message);
239-
});
236+
if (testcase.result.errors.length > result.errors.length) {
237+
testcase.result.errors.forEach((error, index) => {
238+
if (!result.errors[index]) expect("").toBe(error.message);
239+
expect(result.errors[index].message).toBe(error.message);
240+
});
241+
} else {
242+
result.errors.forEach((error, index) => {
243+
if (!testcase.result.errors[index]) expect(error.message).toBe("");
244+
expect(error.message).toBe(testcase.result.errors[index].message);
245+
});
246+
}
240247
});
241248
});
242249
});

src/types/checker/__tests__/ifThenElseStatements.test.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,10 +182,17 @@ describe("Type Checker", () => {
182182
if (result.currentType === null)
183183
expect(result.currentType).toBe(testcase.result.type);
184184
else expect(result.currentType).toBeInstanceOf(testcase.result.type);
185-
expect(result.errors.length).toBe(testcase.result.errors.length);
186-
testcase.result.errors.forEach((error, index) => {
187-
expect(result.errors[index].message).toBe(error.message);
188-
});
185+
if (testcase.result.errors.length > result.errors.length) {
186+
testcase.result.errors.forEach((error, index) => {
187+
if (!result.errors[index]) expect("").toBe(error.message);
188+
expect(result.errors[index].message).toBe(error.message);
189+
});
190+
} else {
191+
result.errors.forEach((error, index) => {
192+
if (!testcase.result.errors[index]) expect(error.message).toBe("");
193+
expect(error.message).toBe(testcase.result.errors[index].message);
194+
});
195+
}
189196
});
190197
});
191198
});

src/types/checker/__tests__/integerLiterals.test.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -215,10 +215,17 @@ describe("Type Checker", () => {
215215
if (result.currentType === null)
216216
expect(result.currentType).toBe(testcase.result.type);
217217
else expect(result.currentType).toBeInstanceOf(testcase.result.type);
218-
expect(result.errors.length).toBe(testcase.result.errors.length);
219-
testcase.result.errors.forEach((error, index) => {
220-
expect(result.errors[index].message).toBe(error.message);
221-
});
218+
if (testcase.result.errors.length > result.errors.length) {
219+
testcase.result.errors.forEach((error, index) => {
220+
if (!result.errors[index]) expect("").toBe(error.message);
221+
expect(result.errors[index].message).toBe(error.message);
222+
});
223+
} else {
224+
result.errors.forEach((error, index) => {
225+
if (!testcase.result.errors[index]) expect(error.message).toBe("");
226+
expect(error.message).toBe(testcase.result.errors[index].message);
227+
});
228+
}
222229
});
223230
});
224231
});

src/types/checker/__tests__/integerOverflow.test.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -158,10 +158,17 @@ describe("Type Checker", () => {
158158
if (result.currentType === null)
159159
expect(result.currentType).toBe(testcase.result.type);
160160
else expect(result.currentType).toBeInstanceOf(testcase.result.type);
161-
expect(result.errors.length).toBe(testcase.result.errors.length);
162-
testcase.result.errors.forEach((error, index) => {
163-
expect(result.errors[index].message).toBe(error.message);
164-
});
161+
if (testcase.result.errors.length > result.errors.length) {
162+
testcase.result.errors.forEach((error, index) => {
163+
if (!result.errors[index]) expect("").toBe(error.message);
164+
expect(result.errors[index].message).toBe(error.message);
165+
});
166+
} else {
167+
result.errors.forEach((error, index) => {
168+
if (!testcase.result.errors[index]) expect(error.message).toBe("");
169+
expect(error.message).toBe(testcase.result.errors[index].message);
170+
});
171+
}
165172
});
166173
});
167174
});

src/types/checker/__tests__/localVariableDeclarationStatement.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ const testcases: {
4646
type: null,
4747
errors: [new IncompatibleTypesError(), new IncompatibleTypesError()],
4848
},
49+
only: true,
4950
},
5051
];
5152

src/types/checker/__tests__/nullLiterals.test.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,17 @@ describe("Type Checker", () => {
3333
if (result.currentType === null)
3434
expect(result.currentType).toBe(testcase.result.type);
3535
else expect(result.currentType).toBeInstanceOf(testcase.result.type);
36-
expect(result.errors.length).toBe(testcase.result.errors.length);
37-
testcase.result.errors.forEach((error, index) => {
38-
expect(result.errors[index].message).toBe(error.message);
39-
});
36+
if (testcase.result.errors.length > result.errors.length) {
37+
testcase.result.errors.forEach((error, index) => {
38+
if (!result.errors[index]) expect("").toBe(error.message);
39+
expect(result.errors[index].message).toBe(error.message);
40+
});
41+
} else {
42+
result.errors.forEach((error, index) => {
43+
if (!testcase.result.errors[index]) expect(error.message).toBe("");
44+
expect(error.message).toBe(testcase.result.errors[index].message);
45+
});
46+
}
4047
});
4148
});
4249
});

0 commit comments

Comments
 (0)