Ei kuvausta
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.

ToggleTests.cs 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using NUnit.Framework;
  6. using UnityEditor;
  7. using UnityEngine;
  8. using UnityEngine.EventSystems;
  9. using UnityEngine.TestTools;
  10. using UnityEngine.UI;
  11. using UnityEngine.UI.Tests;
  12. using Object = UnityEngine.Object;
  13. namespace ToggleTest
  14. {
  15. class ToggleTests : IPrebuildSetup
  16. {
  17. const string kPrefabTogglePath = "Assets/Resources/TestToggle.prefab";
  18. protected GameObject m_PrefabRoot;
  19. protected List<Toggle> m_toggle = new List<Toggle>();
  20. protected static int nbToggleInGroup = 2;
  21. public void Setup()
  22. {
  23. #if UNITY_EDITOR
  24. var rootGO = new GameObject("rootGo");
  25. GameObject canvasGO = new GameObject("Canvas", typeof(RectTransform), typeof(Canvas));
  26. canvasGO.transform.SetParent(rootGO.transform);
  27. var canvas = canvasGO.GetComponent<Canvas>();
  28. canvas.referencePixelsPerUnit = 100;
  29. var toggleGO = new GameObject("TestToggle", typeof(RectTransform), typeof(Toggle), typeof(Image));
  30. toggleGO.transform.SetParent(canvasGO.transform);
  31. var toggle = toggleGO.GetComponent<Toggle>();
  32. toggle.enabled = true;
  33. toggle.graphic = toggleGO.GetComponent<Image>();
  34. toggle.graphic.canvasRenderer.SetColor(Color.white);
  35. if (!Directory.Exists("Assets/Resources/"))
  36. Directory.CreateDirectory("Assets/Resources/");
  37. PrefabUtility.SaveAsPrefabAsset(rootGO, kPrefabTogglePath);
  38. GameObject.DestroyImmediate(rootGO);
  39. #endif
  40. }
  41. [SetUp]
  42. public virtual void TestSetup()
  43. {
  44. m_PrefabRoot = Object.Instantiate(Resources.Load("TestToggle")) as GameObject;
  45. m_toggle.Add(m_PrefabRoot.GetComponentInChildren<Toggle>());
  46. }
  47. [TearDown]
  48. public virtual void TearDown()
  49. {
  50. m_toggle.Clear();
  51. Object.DestroyImmediate(m_PrefabRoot);
  52. }
  53. [OneTimeTearDown]
  54. public void OneTimeTearDown()
  55. {
  56. #if UNITY_EDITOR
  57. AssetDatabase.DeleteAsset(kPrefabTogglePath);
  58. #endif
  59. }
  60. [Test]
  61. public void SetIsOnWithoutNotifyWillNotNotify()
  62. {
  63. m_toggle[0].isOn = false;
  64. bool calledOnValueChanged = false;
  65. m_toggle[0].onValueChanged.AddListener(b => { calledOnValueChanged = true; });
  66. m_toggle[0].SetIsOnWithoutNotify(true);
  67. Assert.IsTrue(m_toggle[0].isOn);
  68. Assert.IsFalse(calledOnValueChanged);
  69. }
  70. [Test]
  71. public void NonInteractableCantBeToggled()
  72. {
  73. m_toggle[0].isOn = true;
  74. Assert.IsTrue(m_toggle[0].isOn);
  75. m_toggle[0].interactable = false;
  76. m_toggle[0].OnSubmit(null);
  77. Assert.IsTrue(m_toggle[0].isOn);
  78. }
  79. [Test]
  80. public void InactiveCantBeToggled()
  81. {
  82. m_toggle[0].isOn = true;
  83. Assert.IsTrue(m_toggle[0].isOn);
  84. m_toggle[0].enabled = false;
  85. m_toggle[0].OnSubmit(null);
  86. Assert.IsTrue(m_toggle[0].isOn);
  87. }
  88. }
  89. }