RawImageTest.cs
2.4 KB
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
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(RawImageTestHook), typeof(RectTransform));
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
}
}
}