using System.Collections; using System.Collections.Generic; using System.IO; using NUnit.Framework; using UnityEditor; using UnityEngine; using UnityEngine.TestTools; using UnityEngine.UI; public class ScrollBarTests : IPrebuildSetup { GameObject m_PrefabRoot; const string kPrefabPath = "Assets/Resources/ScrollBarPrefab.prefab"; public void Setup() { #if UNITY_EDITOR var rootGO = new GameObject("rootGo"); var canvasGO = new GameObject("Canvas", typeof(RectTransform), typeof(Canvas)); canvasGO.transform.SetParent(rootGO.transform); var scrollBarGo = new GameObject("ScrollBar", typeof(Scrollbar)); scrollBarGo.transform.SetParent(canvasGO.transform); if (!Directory.Exists("Assets/Resources/")) Directory.CreateDirectory("Assets/Resources/"); PrefabUtility.SaveAsPrefabAsset(rootGO, kPrefabPath); GameObject.DestroyImmediate(rootGO); #endif } [SetUp] public void TestSetup() { m_PrefabRoot = UnityEngine.Object.Instantiate(Resources.Load("ScrollBarPrefab")) as GameObject; } [Test] public void ScrollBarSetValueWithoutNotifyWillNotNotify() { Scrollbar s = m_PrefabRoot.GetComponentInChildren(); s.value = 0; bool calledOnValueChanged = false; s.onValueChanged.AddListener(b => { calledOnValueChanged = true; }); s.SetValueWithoutNotify(1); Assert.IsTrue(s.value == 1); Assert.IsFalse(calledOnValueChanged); } [TearDown] public void TearDown() { GameObject.DestroyImmediate(m_PrefabRoot); #if UNITY_EDITOR AssetDatabase.DeleteAsset(kPrefabPath); #endif } }