public IEnumerator EnableGameObjectBehavior() { // Given EnableGameObjectBehavior, TrainingSceneObject trainingSceneObject = TestingUtils.CreateSceneObject("TestObject"); ICourse training1 = new LinearTrainingBuilder("Training") .AddChapter(new LinearChapterBuilder("Chapter") .AddStep(new BasicCourseStepBuilder("Step") .Enable("TestObject"))) .Build(); // When we serialize and deserialize a training course with it ICourse training2 = Serializer.CourseFromByteArray(Serializer.CourseToByteArray(training1)); EnableGameObjectBehavior behavior1 = training1.Data.FirstChapter.Data.FirstStep.Data.Behaviors.Data.Behaviors.First() as EnableGameObjectBehavior; EnableGameObjectBehavior behavior2 = training2.Data.FirstChapter.Data.FirstStep.Data.Behaviors.Data.Behaviors.First() as EnableGameObjectBehavior; // 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 inactive training scene object and an EnableGameObjectBehavior, TrainingSceneObject toEnable = TestingUtils.CreateSceneObject("ToEnable"); toEnable.GameObject.SetActive(false); EnableGameObjectBehavior behavior = new EnableGameObjectBehavior(toEnable); // 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(toEnable); yield break; }
public IEnumerator FastForwardInactiveBehaviorAndActivateIt() { // Given an inactive training scene object and a EnableGameObjectBehavior, TrainingSceneObject toEnable = TestingUtils.CreateSceneObject("ToEnable"); toEnable.GameObject.SetActive(false); EnableGameObjectBehavior behavior = new EnableGameObjectBehavior(toEnable); // 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.IsTrue(toEnable.GameObject.activeSelf); // Cleanup. TestingUtils.DestroySceneObject(toEnable); yield break; }