public IEnumerator DisableGameObjectBehavior() { // Given DisableGameObjectBehavior, TrainingSceneObject trainingSceneObject = TestingUtils.CreateSceneObject("TestObject"); ICourse training1 = new LinearTrainingBuilder("Training") .AddChapter(new LinearChapterBuilder("Chapter") .AddStep(new BasicCourseStepBuilder("Step") .Disable("TestObject"))) .Build(); // When we serialize and deserialize a training with it byte[] serialized = Serializer.CourseToByteArray(training1); ICourse training2 = Serializer.CourseFromByteArray(serialized); DisableGameObjectBehavior behavior1 = training1.Data.FirstChapter.Data.FirstStep.Data.Behaviors.Data.Behaviors.First() as DisableGameObjectBehavior; DisableGameObjectBehavior behavior2 = training2.Data.FirstChapter.Data.FirstStep.Data.Behaviors.Data.Behaviors.First() as DisableGameObjectBehavior; // Then it's target training scene object is still the same. Assert.IsNotNull(behavior1); Assert.IsNotNull(behavior2); Assert.AreEqual(behavior1.Data.Target.Value, behavior2.Data.Target.Value); TestingUtils.DestroySceneObject(trainingSceneObject); return(null); }
public IEnumerator FastForwardInactiveBehavior() { // Given an active training scene object and a DisableGameObjectBehavior, TrainingSceneObject toDisable = TestingUtils.CreateSceneObject("ToDisable"); DisableGameObjectBehavior behavior = new DisableGameObjectBehavior(toDisable); // When we mark it to fast-forward, behavior.LifeCycle.MarkToFastForward(); // Then it doesn't autocomplete because it weren't activated yet. Assert.AreEqual(Stage.Inactive, behavior.LifeCycle.Stage); // Cleanup. TestingUtils.DestroySceneObject(toDisable); yield break; }
public IEnumerator FastForwardInactiveBehaviorAndActivateIt() { // Given an active training scene object and a DisableGameObjectBehavior, TrainingSceneObject toDisable = TestingUtils.CreateSceneObject("ToDisable"); DisableGameObjectBehavior behavior = new DisableGameObjectBehavior(toDisable); // When we mark it to fast-forward and activate it, behavior.LifeCycle.MarkToFastForward(); behavior.LifeCycle.Activate(); // Then it should work without any differences because the behavior is done immediately anyways. Assert.AreEqual(Stage.Active, behavior.LifeCycle.Stage); Assert.IsFalse(toDisable.GameObject.activeSelf); // Cleanup. TestingUtils.DestroySceneObject(toDisable); yield break; }