From 0aca6e11465115b9187228f90aa2fcc76c644b10 Mon Sep 17 00:00:00 2001 From: Peter Fajdiga Date: Thu, 18 Apr 2024 21:20:14 +0200 Subject: [PATCH] create unit tests --- Makefile | 3 +++ src/lib/rules/WindowRuleEnforcer.test.ts | 27 ++++++++++++++++++++++++ src/tests/tests.ts | 17 +++++++++++++++ src/tests/tsconfig.json | 5 +++++ 4 files changed, 52 insertions(+) create mode 100644 src/lib/rules/WindowRuleEnforcer.test.ts create mode 100644 src/tests/tests.ts create mode 100644 src/tests/tsconfig.json diff --git a/Makefile b/Makefile index 4c95dd4..1151300 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,9 @@ config: build: tsc -p ./src/main --outFile ./package/contents/code/main.js +tests: + ./run-ts.sh ./src/tests + install: build config kpackagetool6 --type=KWin/Script -i ./package || kpackagetool6 --type=KWin/Script -u ./package diff --git a/src/lib/rules/WindowRuleEnforcer.test.ts b/src/lib/rules/WindowRuleEnforcer.test.ts new file mode 100644 index 0000000..4c9fc49 --- /dev/null +++ b/src/lib/rules/WindowRuleEnforcer.test.ts @@ -0,0 +1,27 @@ +{ + const testCases = [ + {tiledByDefault: true, resourceClass: "ksmserver-logout-greeter", caption: "anything", shouldTile: false}, + ]; + + const enforcer = new WindowRuleEnforcer(JSON.parse(defaultWindowRules)); + for (const testCase of testCases) { + const kwinClient: any = createKwinClient(testCase.tiledByDefault, testCase.resourceClass, testCase.caption); + assert(enforcer.shouldTile(kwinClient) === testCase.shouldTile, "failed case: " + JSON.stringify(testCase)); + } + + function createKwinClient(normalWindow: boolean, resoureClass: string, caption: string) { + return { + normalWindow: normalWindow, + transient: false, + managed: true, + moveable: true, + resizeable: true, + popupWindow: false, + minimized: false, + desktops: [1], + activities: [1], + resourceClass: resoureClass, + caption: caption, + } + } +} diff --git a/src/tests/tests.ts b/src/tests/tests.ts new file mode 100644 index 0000000..493eef1 --- /dev/null +++ b/src/tests/tests.ts @@ -0,0 +1,17 @@ +declare const process: { + exit(code?: number): void, +}; + +function assert(assertion: boolean, message?: string) { + if (assertion) { + return; + } + + if (message != undefined) { + console.assert(assertion, message); + } else { + console.assert(assertion); + } + console.trace(); + process.exit(1); +} diff --git a/src/tests/tsconfig.json b/src/tests/tsconfig.json new file mode 100644 index 0000000..88efb94 --- /dev/null +++ b/src/tests/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "../tsconfig.json", + "include": ["../lib/**/*", "./**/*"], + "exclude": [] +}