assert.ts: skip own stack frames

This commit is contained in:
Peter Fajdiga
2024-09-20 11:53:03 +02:00
parent b18516646d
commit d926be2e12
2 changed files with 13 additions and 10 deletions

View File

@@ -1,6 +1,5 @@
type Console = {
log(...args: any[]): void;
trace(): void;
assert(assertion: boolean, message?: string): void;
};

View File

@@ -1,4 +1,4 @@
function assert(assertion: boolean, message?: string) {
function assert(assertion: boolean, message?: string, skip: number = 0) {
if (assertion) {
return;
}
@@ -8,22 +8,26 @@ function assert(assertion: boolean, message?: string) {
} else {
console.assert(assertion);
}
console.trace();
console.log(getStackTrace(skip+1));
process.exit(1);
}
function assertEqual(actual: any, expected: any) {
assert(expected == actual, `Values not equal
Expected: ${expected}
Actual: ${actual}`);
function getStackTrace(skip: number) {
return new Error().stack!.split("\n").slice(skip+2).join("\n");
}
function assertRectEqual(actual: QmlRect, expected: QmlRect) {
function assertEqual(actual: any, expected: any, skip: number = 0) {
assert(expected == actual, `Values not equal
Expected: ${expected}
Actual: ${actual}`, skip+1);
}
function assertRectEqual(actual: QmlRect, expected: QmlRect, skip: number = 0) {
assert(rectEquals(expected, actual), `QmlRect not equal
Expected: ${expected}
Actual: ${actual}`);
Actual: ${actual}`, skip+1);
}
function assertRect(actual: QmlRect, x: number, y: number, width: number, height: number) {
assertRectEqual(actual, new MockQmlRect(x, y, width, height));
assertRectEqual(actual, new MockQmlRect(x, y, width, height), 1);
}