IndieGame/client/Packages/com.unity.ugui@1.0.0/Tests/Runtime/Graphic/NavigationTests.cs

170 lines
8.1 KiB
C#
Raw Normal View History

2024-10-11 10:12:15 +08:00
using System.Reflection;
using System.Collections;
using NUnit.Framework;
using UnityEngine.EventSystems;
using UnityEngine.TestTools;
namespace UnityEngine.UI.Tests
{
[TestFixture]
class NavigationTests
{
GameObject canvasRoot;
Selectable topLeftSelectable;
Selectable bottomLeftSelectable;
Selectable topRightSelectable;
Selectable bottomRightSelectable;
[SetUp]
public void TestSetup()
{
canvasRoot = new GameObject("Canvas", typeof(RectTransform), typeof(Canvas));
GameObject topLeftGO = new GameObject("topLeftGO", typeof(RectTransform), typeof(CanvasRenderer), typeof(Selectable));
topLeftGO.transform.SetParent(canvasRoot.transform);
(topLeftGO.transform as RectTransform).anchoredPosition = new Vector2(50, 200);
topLeftSelectable = topLeftGO.GetComponent<Selectable>();
GameObject bottomLeftGO = new GameObject("bottomLeftGO", typeof(RectTransform), typeof(CanvasRenderer), typeof(Selectable));
bottomLeftGO.transform.SetParent(canvasRoot.transform);
(bottomLeftGO.transform as RectTransform).anchoredPosition = new Vector2(50, 50);
bottomLeftSelectable = bottomLeftGO.GetComponent<Selectable>();
GameObject topRightGO = new GameObject("topRightGO", typeof(RectTransform), typeof(CanvasRenderer), typeof(Selectable));
topRightGO.transform.SetParent(canvasRoot.transform);
(topRightGO.transform as RectTransform).anchoredPosition = new Vector2(200, 200);
topRightSelectable = topRightGO.GetComponent<Selectable>();
GameObject bottomRightGO = new GameObject("bottomRightGO", typeof(RectTransform), typeof(CanvasRenderer), typeof(Selectable));
bottomRightGO.transform.SetParent(canvasRoot.transform);
(bottomRightGO.transform as RectTransform).anchoredPosition = new Vector2(200, 50);
bottomRightSelectable = bottomRightGO.GetComponent<Selectable>();
}
[TearDown]
public void TearDown()
{
GameObject.DestroyImmediate(canvasRoot);
}
[Test]
public void FindSelectableOnRight_ReturnsNextSelectableRightOfTarget()
{
Selectable selectableRightOfTopLeft = topLeftSelectable.FindSelectableOnRight();
Selectable selectableRightOfBottomLeft = bottomLeftSelectable.FindSelectableOnRight();
Assert.AreEqual(topRightSelectable, selectableRightOfTopLeft, "Wrong selectable to right of Top Left Selectable");
Assert.AreEqual(bottomRightSelectable, selectableRightOfBottomLeft, "Wrong selectable to right of Bottom Left Selectable");
}
[Test]
public void FindSelectableOnLeft_ReturnsNextSelectableLeftOfTarget()
{
Selectable selectableLeftOfTopRight = topRightSelectable.FindSelectableOnLeft();
Selectable selectableLeftOfBottomRight = bottomRightSelectable.FindSelectableOnLeft();
Assert.AreEqual(topLeftSelectable, selectableLeftOfTopRight, "Wrong selectable to left of Top Right Selectable");
Assert.AreEqual(bottomLeftSelectable, selectableLeftOfBottomRight, "Wrong selectable to left of Bottom Right Selectable");
}
[Test]
public void FindSelectableOnRDown_ReturnsNextSelectableBelowTarget()
{
Selectable selectableDownOfTopLeft = topLeftSelectable.FindSelectableOnDown();
Selectable selectableDownOfTopRight = topRightSelectable.FindSelectableOnDown();
Assert.AreEqual(bottomLeftSelectable, selectableDownOfTopLeft, "Wrong selectable to Bottom of Top Left Selectable");
Assert.AreEqual(bottomRightSelectable, selectableDownOfTopRight, "Wrong selectable to Bottom of top Right Selectable");
}
[Test]
public void FindSelectableOnUp_ReturnsNextSelectableAboveTarget()
{
Selectable selectableUpOfBottomLeft = bottomLeftSelectable.FindSelectableOnUp();
Selectable selectableUpOfBottomRight = bottomRightSelectable.FindSelectableOnUp();
Assert.AreEqual(topLeftSelectable, selectableUpOfBottomLeft, "Wrong selectable to Up of bottom Left Selectable");
Assert.AreEqual(topRightSelectable, selectableUpOfBottomRight, "Wrong selectable to Up of bottom Right Selectable");
}
[Test]
public void FindSelectableOnRight__WrappingEnabled_ReturnsFurthestSelectableOnLeft()
{
Navigation nav = topRightSelectable.navigation;
nav.wrapAround = true;
nav.mode = Navigation.Mode.Horizontal;
topRightSelectable.navigation = nav;
nav = bottomRightSelectable.navigation;
nav.wrapAround = true;
nav.mode = Navigation.Mode.Horizontal;
bottomRightSelectable.navigation = nav;
Selectable selectableRightOfTopRight = topRightSelectable.FindSelectableOnRight();
Selectable selectableRightOfBottomRight = bottomRightSelectable.FindSelectableOnRight();
Assert.AreEqual(bottomLeftSelectable, selectableRightOfTopRight, "Wrong selectable to right of Top Right Selectable");
Assert.AreEqual(topLeftSelectable, selectableRightOfBottomRight, "Wrong selectable to right of Bottom Right Selectable");
}
[Test]
public void FindSelectableOnLeft_WrappingEnabled_ReturnsFurthestSelectableOnRight()
{
Navigation nav = topLeftSelectable.navigation;
nav.wrapAround = true;
nav.mode = Navigation.Mode.Horizontal;
topLeftSelectable.navigation = nav;
nav = bottomLeftSelectable.navigation;
nav.wrapAround = true;
nav.mode = Navigation.Mode.Horizontal;
bottomLeftSelectable.navigation = nav;
Selectable selectableLeftOfTopLeft = topLeftSelectable.FindSelectableOnLeft();
Selectable selectableLeftOfBottomLeft = bottomLeftSelectable.FindSelectableOnLeft();
Assert.AreEqual(bottomRightSelectable, selectableLeftOfTopLeft, "Wrong selectable to left of Top Left Selectable");
Assert.AreEqual(topRightSelectable, selectableLeftOfBottomLeft, "Wrong selectable to left of Bottom Left Selectable");
}
[Test]
public void FindSelectableOnDown_WrappingEnabled_ReturnsFurthestSelectableAbove()
{
Navigation nav = bottomLeftSelectable.navigation;
nav.wrapAround = true;
nav.mode = Navigation.Mode.Vertical;
bottomLeftSelectable.navigation = nav;
nav = bottomRightSelectable.navigation;
nav.wrapAround = true;
nav.mode = Navigation.Mode.Vertical;
bottomRightSelectable.navigation = nav;
Selectable selectableDownOfBottomLeft = bottomLeftSelectable.FindSelectableOnDown();
Selectable selectableDownOfBottomRight = bottomRightSelectable.FindSelectableOnDown();
Assert.AreEqual(topRightSelectable, selectableDownOfBottomLeft, "Wrong selectable to Bottom of Bottom Left Selectable");
Assert.AreEqual(topLeftSelectable, selectableDownOfBottomRight, "Wrong selectable to Bottom of Bottom Right Selectable");
}
[Test]
public void FindSelectableOnUp_WrappingEnabled_ReturnsFurthestSelectableBelow()
{
Navigation nav = topLeftSelectable.navigation;
nav.wrapAround = true;
nav.mode = Navigation.Mode.Vertical;
topLeftSelectable.navigation = nav;
nav = topRightSelectable.navigation;
nav.wrapAround = true;
nav.mode = Navigation.Mode.Vertical;
topRightSelectable.navigation = nav;
Selectable selectableUpOfTopLeft = topLeftSelectable.FindSelectableOnUp();
Selectable selectableUpOfTopRight = topRightSelectable.FindSelectableOnUp();
Assert.AreEqual(bottomRightSelectable, selectableUpOfTopLeft, "Wrong selectable to Up of Top Left Selectable");
Assert.AreEqual(bottomLeftSelectable, selectableUpOfTopRight, "Wrong selectable to Up of Top Right Selectable");
}
}
}