123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- using UnityEngine;
- using UnityEngine.TestTools;
- using NUnit.Framework;
- using System.Collections;
- using UnityEngine.UI;
-
- [TestFixture]
- public class CanvasGroupTests
- {
- GameObject m_CanvasObject;
- CanvasGroup m_CanvasGroup;
-
- CanvasRenderer m_ChildCanvasRenderer;
- CanvasGroup m_ChildCanvasGroup;
-
- CanvasRenderer m_GrandChildCanvasRenderer;
- CanvasGroup m_GrandChildCanvasGroup;
-
- GameObject m_CanvasTwoObject;
- CanvasGroup m_CanvasTwoGroup;
-
- CanvasRenderer m_ChildCanvasTwoRenderer;
-
- const float m_CanvasAlpha = 0.25f;
- const float m_ChildAlpha = 0.5f;
- const float m_GrandChildAlpha = 0.8f;
-
- [SetUp]
- public void TestSetup()
- {
- m_CanvasObject = new GameObject("Canvas", typeof(Canvas));
- m_CanvasGroup = m_CanvasObject.AddComponent<CanvasGroup>();
- m_CanvasGroup.alpha = m_CanvasAlpha;
-
- var childObject = new GameObject("Child Object", typeof(Image));
- childObject.transform.SetParent(m_CanvasObject.transform);
- m_ChildCanvasGroup = childObject.AddComponent<CanvasGroup>();
- m_ChildCanvasGroup.alpha = m_ChildAlpha;
- m_ChildCanvasRenderer = childObject.GetComponent<CanvasRenderer>();
-
- var grandChildObject = new GameObject("Grand Child Object", typeof(Image));
- grandChildObject.transform.SetParent(childObject.transform);
- m_GrandChildCanvasGroup = grandChildObject.AddComponent<CanvasGroup>();
- m_GrandChildCanvasGroup.alpha = m_GrandChildAlpha;
- m_GrandChildCanvasRenderer = grandChildObject.GetComponent<CanvasRenderer>();
-
- m_CanvasTwoObject = new GameObject("CanvasTwo", typeof(Canvas));
- m_CanvasTwoObject.transform.SetParent(m_CanvasObject.transform);
- m_CanvasTwoGroup = m_CanvasTwoObject.AddComponent<CanvasGroup>();
- m_CanvasTwoGroup.alpha = m_CanvasAlpha;
-
- var childTwoObject = new GameObject("Child Two Object", typeof(Image));
- childTwoObject.transform.SetParent(m_CanvasTwoObject.transform);
- m_ChildCanvasTwoRenderer = childTwoObject.GetComponent<CanvasRenderer>();
- }
-
- [TearDown]
- public void TearDown()
- {
- GameObject.DestroyImmediate(m_CanvasObject);
- }
-
- private void SetUpCanvasGroupState()
- {
- m_CanvasGroup.enabled = false;
- m_CanvasGroup.ignoreParentGroups = false;
- m_ChildCanvasGroup.enabled = false;
- m_ChildCanvasGroup.ignoreParentGroups = false;
- m_GrandChildCanvasGroup.enabled = false;
- m_GrandChildCanvasGroup.ignoreParentGroups = false;
-
- m_CanvasTwoGroup.enabled = false;
- m_CanvasTwoGroup.ignoreParentGroups = false;
- }
-
- [Test]
- public void EnabledCanvasGroupEffectSelfAndChildrenAlpha()
- {
- // Set up the states of the canvas groups for the tests.
- SetUpCanvasGroupState();
-
- // With no enabled CanvasGroup the Alphas should be 1
- Assert.AreEqual(1.0f, m_ChildCanvasRenderer.GetInheritedAlpha());
- Assert.AreEqual(1.0f, m_GrandChildCanvasRenderer.GetInheritedAlpha());
-
- // Enable the child CanvasGroup. It and its children should now have the same alpha value.
- m_ChildCanvasGroup.enabled = true;
-
- Assert.AreEqual(m_ChildAlpha, m_ChildCanvasRenderer.GetInheritedAlpha());
- Assert.AreEqual(m_ChildAlpha, m_GrandChildCanvasRenderer.GetInheritedAlpha());
- }
-
- [Test]
- public void EnabledCanvasGroupOnACanvasEffectAllChildrenAlpha()
- {
- // Set up the states of the canvas groups for the tests.
- SetUpCanvasGroupState();
-
- // With no enabled CanvasGroup the Alphas should be 1
- Assert.AreEqual(1.0f, m_ChildCanvasRenderer.GetInheritedAlpha());
- Assert.AreEqual(1.0f, m_GrandChildCanvasRenderer.GetInheritedAlpha());
-
- // Children under a different nest canvas should also obey the alpha
- Assert.AreEqual(1.0f, m_ChildCanvasTwoRenderer.GetInheritedAlpha());
-
- // Enable the Canvas CanvasGroup. All of the Canvas children should now have the same alpha value.
- m_CanvasGroup.enabled = true;
-
- Assert.AreEqual(m_CanvasAlpha, m_ChildCanvasRenderer.GetInheritedAlpha());
- Assert.AreEqual(m_CanvasAlpha, m_GrandChildCanvasRenderer.GetInheritedAlpha());
-
- // Children under a different nest canvas should also obey the alpha
- Assert.AreEqual(m_CanvasAlpha, m_ChildCanvasTwoRenderer.GetInheritedAlpha());
- }
-
- [Test]
- public void EnabledCanvasGroupOnLeafChildEffectOnlyThatChild()
- {
- // Set up the states of the canvas groups for the tests.
- SetUpCanvasGroupState();
-
- // With no enabled CanvasGroup the Alphas should be 1
- Assert.AreEqual(1.0f, m_ChildCanvasRenderer.GetInheritedAlpha());
- Assert.AreEqual(1.0f, m_GrandChildCanvasRenderer.GetInheritedAlpha());
-
- // Enable the Leaf child CanvasGroup. Only it should have a modified alpha
- m_GrandChildCanvasGroup.enabled = true;
-
- Assert.AreEqual(1.0f, m_ChildCanvasRenderer.GetInheritedAlpha());
- Assert.AreEqual(m_GrandChildAlpha, m_GrandChildCanvasRenderer.GetInheritedAlpha());
- }
-
- [Test]
- public void EnabledCanvasGroupOnCanvasAndChildMultipleAlphaValuesCorrectly()
- {
- // Set up the states of the canvas groups for the tests.
- SetUpCanvasGroupState();
-
- // With no enabled CanvasGroup the Alphas should be 1
- Assert.AreEqual(1.0f, m_ChildCanvasRenderer.GetInheritedAlpha());
- Assert.AreEqual(1.0f, m_GrandChildCanvasRenderer.GetInheritedAlpha());
-
- // Enable the Canvas CanvasGroup. All of the Canvas children should now have the same alpha value.
- m_CanvasGroup.enabled = true;
- m_ChildCanvasGroup.enabled = true;
- Assert.AreEqual(m_CanvasAlpha * m_ChildAlpha, m_ChildCanvasRenderer.GetInheritedAlpha());
- Assert.AreEqual(m_CanvasAlpha * m_ChildAlpha, m_GrandChildCanvasRenderer.GetInheritedAlpha());
- }
-
- [Test]
- public void EnabledCanvasGroupOnCanvasAndChildWithChildIgnoringParentGroupMultipleAlphaValuesCorrectly()
- {
- // Set up the states of the canvas groups for the tests.
- SetUpCanvasGroupState();
-
- // With no enabled CanvasGroup the Alphas should be 1
- Assert.AreEqual(1.0f, m_ChildCanvasRenderer.GetInheritedAlpha());
- Assert.AreEqual(1.0f, m_GrandChildCanvasRenderer.GetInheritedAlpha());
-
- // Enable the Canvas CanvasGroup. All of the Canvas children should now have the same alpha value.
- m_CanvasGroup.enabled = true;
- m_ChildCanvasGroup.enabled = true;
- m_ChildCanvasGroup.ignoreParentGroups = true;
- Assert.AreEqual(m_ChildAlpha, m_ChildCanvasRenderer.GetInheritedAlpha());
- Assert.AreEqual(m_ChildAlpha, m_GrandChildCanvasRenderer.GetInheritedAlpha());
- }
-
- [Test]
- public void EnabledCanvasGroupOnCanvasAndChildrenWithAllChildrenIgnoringParentGroupMultipleAlphaValuesCorrectly()
- {
- // Set up the states of the canvas groups for the tests.
- SetUpCanvasGroupState();
-
- // With no enabled CanvasGroup the Alphas should be 1
- Assert.AreEqual(1.0f, m_ChildCanvasRenderer.GetInheritedAlpha());
- Assert.AreEqual(1.0f, m_GrandChildCanvasRenderer.GetInheritedAlpha());
-
- // Enable the Canvas CanvasGroup. All of the Canvas children should now have the same alpha value.
- m_CanvasGroup.enabled = true;
- m_ChildCanvasGroup.enabled = true;
- m_GrandChildCanvasGroup.enabled = true;
- m_ChildCanvasGroup.ignoreParentGroups = true;
- m_GrandChildCanvasGroup.ignoreParentGroups = true;
- Assert.AreEqual(m_ChildAlpha, m_ChildCanvasRenderer.GetInheritedAlpha());
- Assert.AreEqual(m_GrandChildAlpha, m_GrandChildCanvasRenderer.GetInheritedAlpha());
- }
-
- [Test]
- public void EnabledCanvasGroupOnNestedCanvasIgnoringParentGroupMultipleAlphaValuesCorrectly()
- {
- // Set up the states of the canvas groups for the tests.
- SetUpCanvasGroupState();
-
- // With no enabled CanvasGroup the Alphas should be 1
- Assert.AreEqual(1.0f, m_ChildCanvasTwoRenderer.GetInheritedAlpha());
-
- // Enable the Canvas CanvasGroup. All of the Canvas children should now have the same alpha value.
- m_CanvasGroup.enabled = true;
- m_CanvasTwoGroup.enabled = true;
- m_CanvasTwoGroup.ignoreParentGroups = true;
- Assert.AreEqual(m_CanvasAlpha, m_ChildCanvasTwoRenderer.GetInheritedAlpha());
- }
- }
|