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");
 | |
|         }
 | |
|     }
 | |
| }
 |