1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- using UnityEngine;
- using UnityEngine.TestTools;
- using NUnit.Framework;
- using System.Collections;
- using UnityEngine.UI;
-
- [TestFixture]
- [Category("RegressionTest")]
- [Description("Case 723062")]
- public class SiblingOrderChangesLayout
- {
- GameObject m_CanvasGO;
- GameObject m_ParentGO;
- GameObject m_Child1GO;
- GameObject m_Child2GO;
-
- [SetUp]
- public void TestSetup()
- {
- m_CanvasGO = new GameObject("Canvas", typeof(Canvas));
- m_ParentGO = new GameObject("ParentRenderer");
- m_Child1GO = CreateTextObject("ChildRenderer1");
- m_Child2GO = CreateTextObject("ChildRenderer2");
- #if UNITY_EDITOR
- UnityEditor.EditorApplication.ExecuteMenuItem("Window/General/Game");
- #endif
- }
-
- [UnityTest]
- public IEnumerator ReorderingSiblingChangesLayout()
- {
- m_ParentGO.transform.SetParent(m_CanvasGO.transform);
- m_Child1GO.transform.SetParent(m_ParentGO.transform);
- m_Child2GO.transform.SetParent(m_ParentGO.transform);
-
- m_ParentGO.AddComponent<CanvasRenderer>();
- m_ParentGO.AddComponent<RectTransform>();
- m_ParentGO.AddComponent<VerticalLayoutGroup>();
- m_ParentGO.AddComponent<ContentSizeFitter>();
-
- yield return new WaitForEndOfFrame();
-
- Vector2 child1Pos = m_Child1GO.GetComponent<RectTransform>().anchoredPosition;
- Vector2 child2Pos = m_Child2GO.GetComponent<RectTransform>().anchoredPosition;
-
- Assert.That(child1Pos, Is.Not.EqualTo(child2Pos));
- Assert.That(m_Child1GO.GetComponent<CanvasRenderer>().hasMoved, Is.False, "CanvasRenderer.hasMoved should be false");
-
- m_Child2GO.transform.SetAsFirstSibling();
- Canvas.ForceUpdateCanvases();
-
- Assert.That(m_Child1GO.GetComponent<CanvasRenderer>().hasMoved, Is.True, "CanvasRenderer.hasMoved should be true");
- Vector2 newChild1Pos = m_Child1GO.GetComponent<RectTransform>().anchoredPosition;
- Vector2 newChild2Pos = m_Child2GO.GetComponent<RectTransform>().anchoredPosition;
-
- Assert.That(newChild1Pos, Is.EqualTo(child2Pos), "Child1 should have moved to Child2's position");
- Assert.That(newChild2Pos, Is.EqualTo(child1Pos), "Child2 should have moved to Child1's position");
- }
-
- [TearDown]
- public void TearDown()
- {
- GameObject.DestroyImmediate(m_CanvasGO);
- }
-
- // Factory method for creating UI text objects taken from the original bug repro scene:
- private GameObject CreateTextObject(string name)
- {
- GameObject outputTextGameObject = new GameObject("OutputContent", typeof(CanvasRenderer));
-
- RectTransform outputTextTransform = outputTextGameObject.AddComponent<RectTransform>();
- outputTextTransform.pivot = new Vector2(0.5f, 0);
- outputTextTransform.anchorMin = Vector2.zero;
- outputTextTransform.anchorMax = new Vector2(1, 0);
- outputTextTransform.anchoredPosition = Vector2.zero;
- outputTextTransform.sizeDelta = Vector2.zero;
-
- Text outputText = outputTextGameObject.AddComponent<Text>();
- outputText.text = "Hello World!";
- outputTextGameObject.name = name;
- return outputTextGameObject;
- }
- }
|