public void SetUp() { containingObject = new GameObject(); container = new RuleContainer(); subject = containingObject.AddComponent <ActiveInHierarchyRule>(); container.Interface = subject; }
public IEnumerator OnlActiveTargetsFollowSourceNoOffsets() { UnityEventListenerMock preprocessedMock = new UnityEventListenerMock(); UnityEventListenerMock processedMock = new UnityEventListenerMock(); subject.Preprocessed.AddListener(preprocessedMock.Listen); subject.Processed.AddListener(processedMock.Listen); GameObject source = new GameObject("playAreaAlias"); GameObject target1 = new GameObject("SDK1PlayArea"); GameObject target2 = new GameObject("SDK2PlayArea"); GameObject target3 = new GameObject("SDK3PlayArea"); subject.Sources = containingObject.AddComponent <GameObjectObservableList>(); subject.Targets = containingObject.AddComponent <GameObjectObservableList>(); yield return(null); source.transform.position = Vector3.one; target1.transform.position = Vector3.one * 2f; target2.transform.position = Vector3.one * 3f; target3.transform.position = Vector3.one * 4f; subject.Sources.Add(source); subject.Targets.Add(target1); subject.Targets.Add(target2); subject.Targets.Add(target3); subject.gameObject.AddComponent <RuleStub>(); ActiveInHierarchyRule activeInHierarchyRule = subject.gameObject.AddComponent <ActiveInHierarchyRule>(); subject.TargetValidity = new RuleContainer { Interface = activeInHierarchyRule }; target1.SetActive(false); target2.SetActive(true); target3.SetActive(true); FollowModifierMock followModifierMock = containingObject.AddComponent <FollowModifierMock>(); subject.FollowModifier = followModifierMock; subject.Process(); Assert.IsTrue(preprocessedMock.Received); Assert.IsTrue(processedMock.Received); Assert.AreNotEqual(source.transform.position, target1.transform.position); Assert.AreEqual(source.transform.position, target2.transform.position); Assert.AreEqual(source.transform.position, target3.transform.position); Object.DestroyImmediate(source); Object.DestroyImmediate(target1); Object.DestroyImmediate(target2); Object.DestroyImmediate(target3); }
public void TargetFollowsFirstActiveSourceNoOffsets() { /// The first active SDK HMD moves and the target HMD alias follows UnityEventListenerMock preprocessedMock = new UnityEventListenerMock(); UnityEventListenerMock processedMock = new UnityEventListenerMock(); subject.Preprocessed.AddListener(preprocessedMock.Listen); subject.Processed.AddListener(processedMock.Listen); GameObject source1 = new GameObject("SDK1HMD"); GameObject source2 = new GameObject("SDK2HMD"); GameObject source3 = new GameObject("SDK3HMD"); GameObject target = new GameObject("HMDAlias"); source1.transform.position = Vector3.one; source2.transform.position = Vector3.one * 2f; source3.transform.position = Vector3.one * 3f; target.transform.position = Vector3.zero; subject.AddSource(source1); subject.AddSource(source2); subject.AddSource(source3); subject.AddTarget(target); subject.ceaseAfterFirstSourceProcessed = true; subject.gameObject.AddComponent <RuleStub>(); ActiveInHierarchyRule activeInHierarchyRule = subject.gameObject.AddComponent <ActiveInHierarchyRule>(); subject.sourceValidity = new RuleContainer { Interface = activeInHierarchyRule }; source1.SetActive(false); source2.SetActive(true); source3.SetActive(true); FollowModifierMock followModifierMock = containingObject.AddComponent <FollowModifierMock>(); subject.followModifier = followModifierMock; subject.Process(); Assert.IsTrue(preprocessedMock.Received); Assert.IsTrue(processedMock.Received); Assert.AreNotEqual(source1.transform.position, target.transform.position); Assert.AreEqual(source2.transform.position, target.transform.position); Assert.AreNotEqual(source3.transform.position, target.transform.position); Object.DestroyImmediate(source1); Object.DestroyImmediate(source2); Object.DestroyImmediate(source3); Object.DestroyImmediate(target); }
public void ProcessFirstActiveSourceAgainstValidTargetThenCease() { GameObject source1 = new GameObject("source1"); GameObject source2 = new GameObject("source2"); GameObject source3 = new GameObject("source3"); GameObject target1 = new GameObject("target1"); GameObject target2 = new GameObject("target2"); GameObject target3 = new GameObject("target3"); subject.ceaseAfterFirstSourceProcessed = true; subject.gameObject.AddComponent <RuleStub>(); ActiveInHierarchyRule activeInHierarchyRule = subject.gameObject.AddComponent <ActiveInHierarchyRule>(); subject.sourceValidity = new RuleContainer { Interface = activeInHierarchyRule }; subject.targetValidity = new RuleContainer { Interface = activeInHierarchyRule }; subject.AddSource(source1); subject.AddSource(source2); subject.AddSource(source3); subject.AddTarget(target1); subject.AddTarget(target2); subject.AddTarget(target3); Assert.AreEqual("source1", source1.name); Assert.AreEqual("source2", source2.name); Assert.AreEqual("source3", source3.name); Assert.AreEqual("target1", target1.name); Assert.AreEqual("target2", target2.name); Assert.AreEqual("target3", target3.name); source1.SetActive(false); source2.SetActive(true); source3.SetActive(true); target1.SetActive(false); target2.SetActive(true); target3.SetActive(true); subject.Process(); Assert.AreEqual("source1", source1.name); Assert.AreEqual("source2", source2.name); Assert.AreEqual("source3", source3.name); Assert.AreEqual("target1", target1.name); Assert.AreEqual("source2", target2.name); Assert.AreEqual("source2", target3.name); source1.SetActive(false); source2.SetActive(false); source3.SetActive(true); target1.SetActive(false); target2.SetActive(true); target3.SetActive(false); subject.Process(); Assert.AreEqual("source1", source1.name); Assert.AreEqual("source2", source2.name); Assert.AreEqual("source3", source3.name); Assert.AreEqual("target1", target1.name); Assert.AreEqual("source3", target2.name); Assert.AreEqual("source2", target3.name); source1.SetActive(true); source2.SetActive(true); source3.SetActive(true); target1.SetActive(true); target2.SetActive(true); target3.SetActive(true); subject.Process(); Assert.AreEqual("source1", source1.name); Assert.AreEqual("source2", source2.name); Assert.AreEqual("source3", source3.name); Assert.AreEqual("source1", target1.name); Assert.AreEqual("source1", target2.name); Assert.AreEqual("source1", target3.name); Object.DestroyImmediate(source1); Object.DestroyImmediate(source2); Object.DestroyImmediate(source3); Object.DestroyImmediate(target1); Object.DestroyImmediate(target2); Object.DestroyImmediate(target3); }
public IEnumerator ProcessFirstActiveSourceAgainstValidTargetThenCease() { GameObject source1 = new GameObject("source1"); GameObject source2 = new GameObject("source2"); GameObject source3 = new GameObject("source3"); GameObject target1 = new GameObject("target1"); GameObject target2 = new GameObject("target2"); GameObject target3 = new GameObject("target3"); subject.Sources = containingObject.AddComponent <GameObjectObservableList>(); subject.Targets = containingObject.AddComponent <GameObjectObservableList>(); yield return(null); subject.CeaseAfterFirstSourceProcessed = true; subject.gameObject.AddComponent <RuleStub>(); ActiveInHierarchyRule activeInHierarchyRule = subject.gameObject.AddComponent <ActiveInHierarchyRule>(); subject.SourceValidity = new RuleContainer { Interface = activeInHierarchyRule }; subject.TargetValidity = new RuleContainer { Interface = activeInHierarchyRule }; subject.Sources.Add(source1); subject.Sources.Add(source2); subject.Sources.Add(source3); subject.Targets.Add(target1); subject.Targets.Add(target2); subject.Targets.Add(target3); Assert.AreEqual("source1", source1.name); Assert.AreEqual("source2", source2.name); Assert.AreEqual("source3", source3.name); Assert.AreEqual("target1", target1.name); Assert.AreEqual("target2", target2.name); Assert.AreEqual("target3", target3.name); source1.SetActive(false); source2.SetActive(true); source3.SetActive(true); target1.SetActive(false); target2.SetActive(true); target3.SetActive(true); subject.Process(); Assert.AreEqual("source1", source1.name); Assert.AreEqual("source2", source2.name); Assert.AreEqual("source3", source3.name); Assert.AreEqual("target1", target1.name); Assert.AreEqual("source2", target2.name); Assert.AreEqual("source2", target3.name); source1.SetActive(false); source2.SetActive(false); source3.SetActive(true); target1.SetActive(false); target2.SetActive(true); target3.SetActive(false); subject.Process(); Assert.AreEqual("source1", source1.name); Assert.AreEqual("source2", source2.name); Assert.AreEqual("source3", source3.name); Assert.AreEqual("target1", target1.name); Assert.AreEqual("source3", target2.name); Assert.AreEqual("source2", target3.name); source1.SetActive(true); source2.SetActive(true); source3.SetActive(true); target1.SetActive(true); target2.SetActive(true); target3.SetActive(true); subject.Process(); Assert.AreEqual("source1", source1.name); Assert.AreEqual("source2", source2.name); Assert.AreEqual("source3", source3.name); Assert.AreEqual("source1", target1.name); Assert.AreEqual("source1", target2.name); Assert.AreEqual("source1", target3.name); Object.DestroyImmediate(source1); Object.DestroyImmediate(source2); Object.DestroyImmediate(source3); Object.DestroyImmediate(target1); Object.DestroyImmediate(target2); Object.DestroyImmediate(target3); }
public IEnumerator ProcessFirstActiveSourceAgainstTargetThenCease() { GameObject source1 = new GameObject("source1"); GameObject source2 = new GameObject("source2"); GameObject source3 = new GameObject("source3"); GameObject target1 = new GameObject("target1"); subject.Sources = containingObject.AddComponent <GameObjectObservableList>(); subject.Targets = containingObject.AddComponent <GameObjectObservableList>(); UnityEventListenerMock activeSourceChangedListenerMock = new UnityEventListenerMock(); subject.ActiveSourceChanging.AddListener(activeSourceChangedListenerMock.Listen); yield return(null); subject.CeaseAfterFirstSourceProcessed = true; subject.gameObject.AddComponent <RuleStub>(); ActiveInHierarchyRule activeInHierarchyRule = subject.gameObject.AddComponent <ActiveInHierarchyRule>(); subject.SourceValidity = new RuleContainer { Interface = activeInHierarchyRule }; subject.Sources.Add(source1); subject.Sources.Add(source2); subject.Sources.Add(source3); subject.Targets.Add(target1); Assert.AreEqual("source1", source1.name); Assert.AreEqual("source2", source2.name); Assert.AreEqual("source3", source3.name); Assert.AreEqual("target1", target1.name); source1.SetActive(false); source2.SetActive(true); source3.SetActive(true); Assert.IsNull(subject.ActiveSource); Assert.IsFalse(activeSourceChangedListenerMock.Received); subject.Process(); Assert.IsTrue(activeSourceChangedListenerMock.Received); Assert.AreEqual("source2", subject.ActiveSource.name); Assert.AreEqual("source1", source1.name); Assert.AreEqual("source2", source2.name); Assert.AreEqual("source3", source3.name); Assert.AreEqual("source2", target1.name); source1.SetActive(false); source2.SetActive(false); source3.SetActive(true); activeSourceChangedListenerMock.Reset(); subject.Process(); Assert.IsTrue(activeSourceChangedListenerMock.Received); Assert.AreEqual("source3", subject.ActiveSource.name); Assert.AreEqual("source1", source1.name); Assert.AreEqual("source2", source2.name); Assert.AreEqual("source3", source3.name); Assert.AreEqual("source3", target1.name); source1.SetActive(true); source2.SetActive(true); source3.SetActive(true); activeSourceChangedListenerMock.Reset(); subject.Process(); Assert.IsTrue(activeSourceChangedListenerMock.Received); Assert.AreEqual("source1", subject.ActiveSource.name); Assert.AreEqual("source1", source1.name); Assert.AreEqual("source2", source2.name); Assert.AreEqual("source3", source3.name); Assert.AreEqual("source1", target1.name); activeSourceChangedListenerMock.Reset(); subject.Process(); Assert.IsFalse(activeSourceChangedListenerMock.Received); Assert.AreEqual("source1", subject.ActiveSource.name); Object.DestroyImmediate(source1); Object.DestroyImmediate(source2); Object.DestroyImmediate(source3); Object.DestroyImmediate(target1); }