170 lines
8.1 KiB
C#
170 lines
8.1 KiB
C#
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");
|
|
}
|
|
}
|
|
}
|