From 4a1f4e4c52e1a29bf10cf8ee0f5b194c73d88ca5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20B=C3=B6ckelmann?= Date: Sat, 17 Feb 2024 18:15:36 +0100 Subject: [PATCH] Create ScriptAccountConditions --- .../conditions/ConditionCreation.spec.ts | 55 +++++++++++++++++++ .../conditions/ScriptAccountCondition.ts | 20 +++++++ 2 files changed, 75 insertions(+) create mode 100644 e2e/game-model/gamesystems/conditions/ConditionCreation.spec.ts create mode 100644 src/app/game-model/gamesystems/conditions/ScriptAccountCondition.ts diff --git a/e2e/game-model/gamesystems/conditions/ConditionCreation.spec.ts b/e2e/game-model/gamesystems/conditions/ConditionCreation.spec.ts new file mode 100644 index 0000000..9b1239c --- /dev/null +++ b/e2e/game-model/gamesystems/conditions/ConditionCreation.spec.ts @@ -0,0 +1,55 @@ + +import { test, expect } from '@playwright/test'; +import {ScriptAccountCondition} from "../../../../src/app/game-model/gamesystems/conditions/ScriptAccountCondition"; +import {ScriptAccount} from "../../../../src/app/game-model/scriptAccounts/ScriptAccount"; +import exp = require("node:constants"); +test.describe('Test Create Gamesystems', () => { + + test("Test creation with null/undefined parameters", async () => { + let result = ScriptAccountCondition.constructScriptAccountCondition(null, 1, 2); + expect(result).toBeUndefined() + + result = ScriptAccountCondition.constructScriptAccountCondition(undefined, 1, 2); + expect(result).toBeUndefined(); + + result = ScriptAccountCondition.constructScriptAccountCondition(new ScriptAccount("Test", ""), null, 2); + expect(result).toBeUndefined(); + + result = ScriptAccountCondition.constructScriptAccountCondition(new ScriptAccount("Test", ""), undefined, 2); + expect(result).toBeUndefined(); + + result = ScriptAccountCondition.constructScriptAccountCondition(new ScriptAccount("Test", ""), 1, undefined); + expect(result).toBeUndefined(); + + result = ScriptAccountCondition.constructScriptAccountCondition(new ScriptAccount("Test", ""),1, null); + expect(result).toBeUndefined(); + }) + + test("Test Creation with swapped Min Max Parameter", async () => { + let result = ScriptAccountCondition.constructScriptAccountCondition(new ScriptAccount("Test", ""), 2, 1); + expect(result).toBeUndefined(); + }) + + test("Test Correct Condition Creation", async () => { + const scriptAccount = new ScriptAccount("Test", ""); + + let result = ScriptAccountCondition.constructScriptAccountCondition(scriptAccount, 1, 2); + expect(result).toBeDefined(); + expect(result!.scriptAccount).toEqual(scriptAccount) + expect(result!.minValue).toEqual(1); + expect(result!.maxValue).toEqual(2) + + result = ScriptAccountCondition.constructScriptAccountCondition(scriptAccount, -10, 2); + expect(result).toBeDefined(); + expect(result!.scriptAccount).toEqual(scriptAccount) + expect(result!.minValue).toEqual(-10); + expect(result!.maxValue).toEqual(2) + + result = ScriptAccountCondition.constructScriptAccountCondition(scriptAccount, -20, -10); + expect(result).toBeDefined(); + expect(result!.scriptAccount).toEqual(scriptAccount) + expect(result!.minValue).toEqual(-20); + expect(result!.maxValue).toEqual(-10) + }) + +}); diff --git a/src/app/game-model/gamesystems/conditions/ScriptAccountCondition.ts b/src/app/game-model/gamesystems/conditions/ScriptAccountCondition.ts new file mode 100644 index 0000000..aa04cd9 --- /dev/null +++ b/src/app/game-model/gamesystems/conditions/ScriptAccountCondition.ts @@ -0,0 +1,20 @@ +import {ScriptAccount} from "../../scriptAccounts/ScriptAccount"; +export class ScriptAccountCondition { + scriptAccount: ScriptAccount + minValue: number + maxValue: number + + + private constructor(scriptAccount: ScriptAccount, minValue: number, maxValue: number) { + this.scriptAccount = scriptAccount; + this.minValue = minValue; + this.maxValue = maxValue; + } + + static constructScriptAccountCondition(scriptAccount: ScriptAccount, minValue: number, maxValue: number) { + if(scriptAccount == undefined || minValue == undefined || maxValue == undefined || minValue > maxValue) return undefined + return new ScriptAccountCondition(scriptAccount, minValue, maxValue) + } + + +}