| using System; |
| using System.Collections; |
| using System.Collections.Generic; |
| using System.IO; |
| using NUnit.Framework; |
| using UnityEditor; |
| using UnityEngine; |
| using UnityEngine.EventSystems; |
| using UnityEngine.TestTools; |
| using UnityEngine.UI; |
| using UnityEngine.UI.Tests; |
| using Object = UnityEngine.Object; |
|
|
| namespace ToggleTest |
| { |
| class ToggleTests : IPrebuildSetup |
| { |
| const string kPrefabTogglePath = "Assets/Resources/TestToggle.prefab"; |
|
|
| protected GameObject m_PrefabRoot; |
| protected List<Toggle> m_toggle = new List<Toggle>(); |
| protected static int nbToggleInGroup = 2; |
|
|
| public void Setup() |
| { |
| #if UNITY_EDITOR |
| var rootGO = new GameObject("rootGo"); |
|
|
| GameObject canvasGO = new GameObject("Canvas", typeof(RectTransform), typeof(Canvas)); |
| canvasGO.transform.SetParent(rootGO.transform); |
|
|
| var canvas = canvasGO.GetComponent<Canvas>(); |
| canvas.referencePixelsPerUnit = 100; |
|
|
| var toggleGO = new GameObject("TestToggle", typeof(RectTransform), typeof(Toggle), typeof(Image)); |
| toggleGO.transform.SetParent(canvasGO.transform); |
|
|
| var toggle = toggleGO.GetComponent<Toggle>(); |
| toggle.enabled = true; |
| toggle.graphic = toggleGO.GetComponent<Image>(); |
| toggle.graphic.canvasRenderer.SetColor(Color.white); |
|
|
| if (!Directory.Exists("Assets/Resources/")) |
| Directory.CreateDirectory("Assets/Resources/"); |
|
|
| PrefabUtility.SaveAsPrefabAsset(rootGO, kPrefabTogglePath); |
|
|
| GameObject.DestroyImmediate(rootGO); |
| #endif |
| } |
|
|
| [SetUp] |
| public virtual void TestSetup() |
| { |
| m_PrefabRoot = Object.Instantiate(Resources.Load("TestToggle")) as GameObject; |
| m_toggle.Add(m_PrefabRoot.GetComponentInChildren<Toggle>()); |
| } |
|
|
| [TearDown] |
| public virtual void TearDown() |
| { |
| m_toggle.Clear(); |
| Object.DestroyImmediate(m_PrefabRoot); |
| } |
|
|
| [OneTimeTearDown] |
| public void OneTimeTearDown() |
| { |
| #if UNITY_EDITOR |
| AssetDatabase.DeleteAsset(kPrefabTogglePath); |
| #endif |
| } |
|
|
| [Test] |
| public void SetIsOnWithoutNotifyWillNotNotify() |
| { |
| m_toggle[0].isOn = false; |
| bool calledOnValueChanged = false; |
| m_toggle[0].onValueChanged.AddListener(b => { calledOnValueChanged = true; }); |
| m_toggle[0].SetIsOnWithoutNotify(true); |
| Assert.IsTrue(m_toggle[0].isOn); |
| Assert.IsFalse(calledOnValueChanged); |
| } |
|
|
| [Test] |
| public void NonInteractableCantBeToggled() |
| { |
| m_toggle[0].isOn = true; |
| Assert.IsTrue(m_toggle[0].isOn); |
| m_toggle[0].interactable = false; |
| m_toggle[0].OnSubmit(null); |
| Assert.IsTrue(m_toggle[0].isOn); |
| } |
|
|
| [Test] |
| public void InactiveCantBeToggled() |
| { |
| m_toggle[0].isOn = true; |
| Assert.IsTrue(m_toggle[0].isOn); |
| m_toggle[0].enabled = false; |
| m_toggle[0].OnSubmit(null); |
| Assert.IsTrue(m_toggle[0].isOn); |
| } |
| } |
| } |
|
|