Maze / Library /PackageCache /com.unity.ugui@1.0.0 /Tests /Runtime /Layout /VerticalLayoutGroupTests.cs
| using System.IO; | |
| using System.Collections.Generic; | |
| using NUnit.Framework; | |
| using UnityEngine.EventSystems; | |
| using UnityEngine.TestTools; | |
| using UnityEditor; | |
| using UnityEngine; | |
| using UnityEngine.UI; | |
| using UnityEngine.UI.Tests; | |
| namespace LayoutTests | |
| { | |
| public class VerticalLayoutGroupTests : IPrebuildSetup | |
| { | |
| GameObject m_PrefabRoot; | |
| const string kPrefabPath = "Assets/Resources/VerticalLayoutGroupPrefab.prefab"; | |
| public void Setup() | |
| { | |
| var rootGO = new GameObject("rootGo"); | |
| GameObject canvasGO = new GameObject("Canvas", typeof(RectTransform), typeof(Canvas)); | |
| canvasGO.transform.SetParent(rootGO.transform); | |
| var canvas = canvasGO.GetComponent<Canvas>(); | |
| canvas.referencePixelsPerUnit = 100; | |
| var groupGO = new GameObject("Group", typeof(RectTransform), typeof(VerticalLayoutGroup)); | |
| groupGO.transform.SetParent(canvasGO.transform); | |
| var element1GO = new GameObject("Element1", typeof(RectTransform), typeof(LayoutElement)); | |
| element1GO.transform.SetParent(groupGO.transform); | |
| var element2GO = new GameObject("Element2", typeof(RectTransform), typeof(LayoutElement)); | |
| element2GO.transform.SetParent(groupGO.transform); | |
| var element3GO = new GameObject("Element3", typeof(RectTransform), typeof(LayoutElement)); | |
| element3GO.transform.SetParent(groupGO.transform); | |
| VerticalLayoutGroup layoutGroup = groupGO.GetComponent<VerticalLayoutGroup>(); | |
| layoutGroup.padding = new RectOffset(2, 4, 3, 5); | |
| layoutGroup.spacing = 1; | |
| layoutGroup.childForceExpandWidth = false; | |
| layoutGroup.childForceExpandHeight = false; | |
| layoutGroup.childControlWidth = true; | |
| layoutGroup.childControlHeight = true; | |
| var element1 = element1GO.GetComponent<LayoutElement>(); | |
| element1.minWidth = 5; | |
| element1.minHeight = 10; | |
| element1.preferredWidth = 100; | |
| element1.preferredHeight = 50; | |
| element1.flexibleWidth = 0; | |
| element1.flexibleHeight = 0; | |
| element1.enabled = true; | |
| var element2 = element2GO.GetComponent<LayoutElement>(); | |
| element2.minWidth = 10; | |
| element2.minHeight = 5; | |
| element2.preferredWidth = -1; | |
| element2.preferredHeight = -1; | |
| element2.flexibleWidth = 0; | |
| element2.flexibleHeight = 0; | |
| element2.enabled = true; | |
| var element3 = element3GO.GetComponent<LayoutElement>(); | |
| element3.minWidth = 25; | |
| element3.minHeight = 15; | |
| element3.preferredWidth = 200; | |
| element3.preferredHeight = 80; | |
| element3.flexibleWidth = 1; | |
| element3.flexibleHeight = 1; | |
| element3.enabled = true; | |
| if (!Directory.Exists("Assets/Resources/")) | |
| Directory.CreateDirectory("Assets/Resources/"); | |
| PrefabUtility.SaveAsPrefabAsset(rootGO, kPrefabPath); | |
| GameObject.DestroyImmediate(rootGO); | |
| } | |
| [] | |
| public void TestSetup() | |
| { | |
| m_PrefabRoot = Object.Instantiate(Resources.Load("VerticalLayoutGroupPrefab")) as GameObject; | |
| } | |
| [] | |
| public void TearDown() | |
| { | |
| Object.DestroyImmediate(m_PrefabRoot); | |
| } | |
| [] | |
| public void OneTimeTearDown() | |
| { | |
| AssetDatabase.DeleteAsset(kPrefabPath); | |
| } | |
| [] | |
| public void TestCalculateLayoutInputHorizontal() | |
| { | |
| var layoutGroup = m_PrefabRoot.GetComponentInChildren<VerticalLayoutGroup>(); | |
| layoutGroup.CalculateLayoutInputHorizontal(); | |
| layoutGroup.SetLayoutHorizontal(); | |
| layoutGroup.CalculateLayoutInputVertical(); | |
| layoutGroup.SetLayoutVertical(); | |
| Assert.AreEqual(31, layoutGroup.minWidth); | |
| Assert.AreEqual(206, layoutGroup.preferredWidth); | |
| Assert.AreEqual(1, layoutGroup.flexibleWidth); | |
| } | |
| [] | |
| public void TestCalculateLayoutInputVertical() | |
| { | |
| var layoutGroup = m_PrefabRoot.GetComponentInChildren<VerticalLayoutGroup>(); | |
| layoutGroup.CalculateLayoutInputHorizontal(); | |
| layoutGroup.SetLayoutHorizontal(); | |
| layoutGroup.CalculateLayoutInputVertical(); | |
| layoutGroup.SetLayoutVertical(); | |
| Assert.AreEqual(40, layoutGroup.minHeight); | |
| Assert.AreEqual(145, layoutGroup.preferredHeight); | |
| Assert.AreEqual(1, layoutGroup.flexibleHeight); | |
| } | |
| [] | |
| public void TestCalculateLayoutVertical() | |
| { | |
| var parentGO = m_PrefabRoot.transform.GetChild(0).GetChild(0); | |
| var element1GO = parentGO.GetChild(0); | |
| var element1Trans = element1GO.GetComponent<RectTransform>(); | |
| var element2GO = parentGO.GetChild(1); | |
| var element2Trans = element2GO.GetComponent<RectTransform>(); | |
| var element3GO = parentGO.GetChild(2); | |
| var element3Trans = element3GO.GetComponent<RectTransform>(); | |
| var layoutGroup = m_PrefabRoot.GetComponentInChildren<VerticalLayoutGroup>(); | |
| layoutGroup.CalculateLayoutInputHorizontal(); | |
| layoutGroup.SetLayoutHorizontal(); | |
| layoutGroup.CalculateLayoutInputVertical(); | |
| layoutGroup.SetLayoutVertical(); | |
| Assert.AreEqual(-19.4f, element1Trans.anchoredPosition.y, 0.1f); | |
| Assert.AreEqual(-39.4f, element2Trans.anchoredPosition.y, 0.1f); | |
| Assert.AreEqual(-68.9f, element3Trans.anchoredPosition.y, 0.1f); | |
| } | |
| [] | |
| public void TestCalculateLayoutVerticalReversed() | |
| { | |
| var parentGO = m_PrefabRoot.transform.GetChild(0).GetChild(0); | |
| var element1GO = parentGO.GetChild(0); | |
| var element1Trans = element1GO.GetComponent<RectTransform>(); | |
| var element2GO = parentGO.GetChild(1); | |
| var element2Trans = element2GO.GetComponent<RectTransform>(); | |
| var element3GO = parentGO.GetChild(2); | |
| var element3Trans = element3GO.GetComponent<RectTransform>(); | |
| var layoutGroup = m_PrefabRoot.GetComponentInChildren<VerticalLayoutGroup>(); | |
| layoutGroup.reverseArrangement = true; | |
| layoutGroup.CalculateLayoutInputHorizontal(); | |
| layoutGroup.SetLayoutHorizontal(); | |
| layoutGroup.CalculateLayoutInputVertical(); | |
| layoutGroup.SetLayoutVertical(); | |
| //Assert.AreEqual(-78.6f, element1Trans.anchoredPosition.y, 0.1f); | |
| Assert.AreEqual(-58.6f, element2Trans.anchoredPosition.y, 0.1f); | |
| Assert.AreEqual(-29.1f, element3Trans.anchoredPosition.y, 0.1f); | |
| } | |
| } | |
| } | |