diff --git a/Engine.Tests/Behaviour_Tests.cs b/Engine.Tests/Behaviour_Tests.cs new file mode 100644 index 0000000..56cd9a7 --- /dev/null +++ b/Engine.Tests/Behaviour_Tests.cs @@ -0,0 +1,71 @@ +using Syntriax.Engine.Core; + +namespace Engine.Tests; + +public class Behaviour_Tests +{ + private static IUniverseObject CreateUniverseObject() + { + UniverseObject universeObject = new(); + BehaviourController behaviourController = new(); + + universeObject.Assign(new StateEnable()); + universeObject.StateEnable.Assign(universeObject); + + behaviourController.Assign(new StateEnable()); + behaviourController.StateEnable.Assign(behaviourController); + + behaviourController.Assign(universeObject); + universeObject.Assign(behaviourController); + + universeObject.Initialize(); + behaviourController.Initialize(); + + return universeObject; + } + + [Fact] + public void BehaviourActive() + { + IUniverseObject universeObject = CreateUniverseObject(); + + BehaviourX behaviourX = universeObject.BehaviourController.AddBehaviour(); + + Assert.True(behaviourX.IsActive); + } + + [Fact] + public void BehaviourNotActiveOnDisabled() + { + IUniverseObject universeObject = CreateUniverseObject(); + + BehaviourX behaviourX = universeObject.BehaviourController.AddBehaviour(); + behaviourX.StateEnable.Enabled = false; + + Assert.False(behaviourX.IsActive); + } + + [Fact] + public void BehaviourNotActiveOnBehaviourControllerDisabled() + { + IUniverseObject universeObject = CreateUniverseObject(); + + BehaviourX behaviourX = universeObject.BehaviourController.AddBehaviour(); + universeObject.BehaviourController.StateEnable.Enabled = false; + + Assert.False(behaviourX.IsActive); + } + + [Fact] + public void BehaviourNotActiveOnUniverseObjectDisabled() + { + IUniverseObject universeObject = CreateUniverseObject(); + + BehaviourX behaviourX = universeObject.BehaviourController.AddBehaviour(); + universeObject.StateEnable.Enabled = false; + + Assert.False(behaviourX.IsActive); + } + + public class BehaviourX : BehaviourBase; +}