File size: 3,211 Bytes
18a519f | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | 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);
}
}
}
|