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.
169 lines
8.1 KiB
169 lines
8.1 KiB
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"); |
|
} |
|
} |
|
}
|
|
|