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