204 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			204 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 
								 | 
							
								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());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |