You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
3.1 KiB
83 lines
3.1 KiB
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; |
|
} |
|
}
|
|
|