issue-15 #21
@ -0,0 +1,41 @@
|
||||
|
||||
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");
|
||||
import {ConditionTrainer} from "./ConditionTrainer";
|
||||
import {Conditional} from "@angular/compiler";
|
||||
import {TransitionConditionTrainer} from "./TransitionConditionTrainer";
|
||||
import {transition} from "@angular/animations";
|
||||
test.describe('Test Adding Conditions To Transitions', () => {
|
||||
|
||||
test("Test adding not contradicting Conditions", async () => {
|
||||
const transition = TransitionConditionTrainer.withTransitionWithCondition();
|
||||
const condition = ScriptAccountCondition.constructScriptAccountCondition(new ScriptAccount("Test", ""), -200, -100);
|
||||
|
||||
transition.addScriptAccountCondition(condition);
|
||||
expect(transition.scriptAccountConditions.length).toEqual(2);
|
||||
expect(transition.scriptAccountConditions.includes(condition)).toBeTruthy();
|
||||
})
|
||||
|
||||
test("Test adding contradicting Conditions", async () => {
|
||||
const transition = TransitionConditionTrainer.withTransitionWithCondition();
|
||||
const condition = ConditionTrainer.withContradictingCondition(transition.scriptAccountConditions[0]);
|
||||
|
||||
transition.addScriptAccountCondition(condition)
|
||||
expect(transition.scriptAccountConditions.length).toEqual(1);
|
||||
expect(transition.scriptAccountConditions.includes(condition)).toBeFalsy();
|
||||
})
|
||||
|
||||
test("Test expanding Conditions", async () => {
|
||||
const transition = TransitionConditionTrainer.withTransitionWithCondition();
|
||||
const condition = ConditionTrainer.withExpendingCondition(transition.scriptAccountConditions[0]);
|
||||
|
||||
transition.addScriptAccountCondition(condition);
|
||||
expect(transition.scriptAccountConditions.length).toEqual(1);
|
||||
expect(transition.scriptAccountConditions.includes(condition)).toBeFalsy();
|
||||
expect(transition.scriptAccountConditions[0].minValue).toEqual(-10)
|
||||
expect(transition.scriptAccountConditions[0].maxValue).toEqual(20)
|
||||
})
|
||||
|
||||
});
|
@ -10,4 +10,8 @@ export class ConditionTrainer {
|
||||
static withContradictingCondition(condition: ScriptAccountCondition): ScriptAccountCondition {
|
||||
return ScriptAccountCondition.constructScriptAccountCondition(condition.scriptAccount, condition.minValue-20, condition.minValue-10);
|
||||
}
|
||||
|
||||
static withExpendingCondition(condition: ScriptAccountCondition): ScriptAccount {
|
||||
return ScriptAccountCondition.constructScriptAccountCondition(condition.scriptAccount, condition.minValue-10, condition.maxValue+10);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,24 @@
|
||||
import {SimpleState} from "../../../../src/app/game-model/gamesystems/states/SimpleState";
|
||||
import {SimpleTransition} from "../../../../src/app/game-model/gamesystems/transitions/SimpleTransition";
|
||||
import {ScriptAccount} from "../../../../src/app/game-model/scriptAccounts/ScriptAccount";
|
||||
import {ScriptAccountCondition} from "../../../../src/app/game-model/gamesystems/conditions/ScriptAccountCondition";
|
||||
export class TransitionConditionTrainer {
|
||||
static withTransitionWithoutConditions() {
|
||||
const startingState = new SimpleState("StartingState", "");
|
||||
const endingState = new SimpleState("EndingState", "");
|
||||
|
||||
return new SimpleTransition(startingState, endingState);
|
||||
}
|
||||
|
||||
static withTransitionWithCondition() {
|
||||
const startingState = new SimpleState("StartingState", "");
|
||||
const endingState = new SimpleState("EndingState", "");
|
||||
|
||||
const transition = new SimpleTransition(startingState, endingState);
|
||||
|
||||
const scriptAccount = new ScriptAccount("ScriptAccount", "");
|
||||
transition.scriptAccountConditions.push(ScriptAccountCondition.constructScriptAccountCondition(scriptAccount, 0, 10)!)
|
||||
|
||||
return transition;
|
||||
}
|
||||
}
|
@ -40,14 +40,21 @@ export abstract class Transition<S extends State<any>> {
|
||||
}
|
||||
|
||||
addScriptAccountCondition(scriptAccountCondition: ScriptAccountCondition) {
|
||||
|
||||
const existingScriptAccountCondition = this.findScriptAccountConditionByScriptAccount(scriptAccountCondition.scriptAccount);
|
||||
if(existingScriptAccountCondition != undefined) {
|
||||
if(!existingScriptAccountCondition.isContradicting(scriptAccountCondition)) {
|
||||
existingScriptAccountCondition.extendCondition(scriptAccountCondition)
|
||||
}
|
||||
} else {
|
||||
this.scriptAccountConditions.push(scriptAccountCondition);
|
||||
}
|
||||
}
|
||||
|
||||
removeScriptAccountCondition(scriptAccount: ScriptAccount) {
|
||||
|
||||
this.scriptAccountConditions = this.scriptAccountConditions.filter(condition => condition.scriptAccount !== scriptAccount);
|
||||
}
|
||||
|
||||
findScriptAccountConditionByScriptAccount(scriptAccount: ScriptAccount) {
|
||||
|
||||
findScriptAccountConditionByScriptAccount(scriptAccount: ScriptAccount): ScriptAccountCondition | undefined {
|
||||
return this.scriptAccountConditions.find(condition => condition.scriptAccount === scriptAccount);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user