78 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			78 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| 
								 | 
							
								using System.Collections;
							 | 
						||
| 
								 | 
							
								using System.IO;
							 | 
						||
| 
								 | 
							
								using NUnit.Framework;
							 | 
						||
| 
								 | 
							
								using UnityEditor;
							 | 
						||
| 
								 | 
							
								using UnityEngine;
							 | 
						||
| 
								 | 
							
								using UnityEngine.TestTools;
							 | 
						||
| 
								 | 
							
								using UnityEngine.UI;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace Graphics
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    public class RawImageTest : IPrebuildSetup
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        private const int Width = 32;
							 | 
						||
| 
								 | 
							
								        private const int Height = 32;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        private GameObject m_PrefabRoot;
							 | 
						||
| 
								 | 
							
								        private RawImageTestHook m_image;
							 | 
						||
| 
								 | 
							
								        private Texture2D m_defaultTexture;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        const string kPrefabPath = "Assets/Resources/RawImageUpdatePrefab.prefab";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        public void Setup()
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								#if UNITY_EDITOR
							 | 
						||
| 
								 | 
							
								            var rootGO = new GameObject("Root");
							 | 
						||
| 
								 | 
							
								            var canvasGO = new GameObject("Canvas", typeof(Canvas));
							 | 
						||
| 
								 | 
							
								            var canvas = canvasGO.GetComponent<Canvas>();
							 | 
						||
| 
								 | 
							
								            canvas.renderMode = RenderMode.WorldSpace;
							 | 
						||
| 
								 | 
							
								            canvasGO.transform.SetParent(rootGO.transform);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            var imageGO = new GameObject("Image", typeof(RectTransform), typeof(RawImageTestHook));
							 | 
						||
| 
								 | 
							
								            var imageTransform = imageGO.GetComponent<RectTransform>();
							 | 
						||
| 
								 | 
							
								            imageTransform.SetParent(canvas.transform);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            imageTransform.anchoredPosition = Vector2.zero;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            if (!Directory.Exists("Assets/Resources/"))
							 | 
						||
| 
								 | 
							
								                Directory.CreateDirectory("Assets/Resources/");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            PrefabUtility.SaveAsPrefabAsset(rootGO, kPrefabPath);
							 | 
						||
| 
								 | 
							
								            GameObject.DestroyImmediate(rootGO);
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        [SetUp]
							 | 
						||
| 
								 | 
							
								        public void TestSetup()
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            m_PrefabRoot = Object.Instantiate(Resources.Load("RawImageUpdatePrefab")) as GameObject;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            m_image = m_PrefabRoot.transform.Find("Canvas/Image").GetComponent<RawImageTestHook>();
							 | 
						||
| 
								 | 
							
								            m_defaultTexture = new Texture2D(Width, Height);
							 | 
						||
| 
								 | 
							
								            m_image.texture = m_defaultTexture;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        [UnityTest]
							 | 
						||
| 
								 | 
							
								        public IEnumerator Sprite_Material()
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            m_image.ResetTest();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            // can test only on texture change, same texture is bypass by RawImage property
							 | 
						||
| 
								 | 
							
								            m_image.texture = new Texture2D(Width, Height);
							 | 
						||
| 
								 | 
							
								            yield return new WaitUntil(() => m_image.isGeometryUpdated);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            // validate that layout change rebuild is called
							 | 
						||
| 
								 | 
							
								            Assert.IsTrue(m_image.isMaterialRebuild);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        [TearDown]
							 | 
						||
| 
								 | 
							
								        public void TearDown()
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            GameObject.DestroyImmediate(m_PrefabRoot);
							 | 
						||
| 
								 | 
							
								#if UNITY_EDITOR
							 | 
						||
| 
								 | 
							
								            AssetDatabase.DeleteAsset(kPrefabPath);
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |