暫無描述
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

RawImageTest.cs 2.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using System.Collections;
  2. using System.IO;
  3. using NUnit.Framework;
  4. using UnityEditor;
  5. using UnityEngine;
  6. using UnityEngine.TestTools;
  7. using UnityEngine.UI;
  8. namespace Graphics
  9. {
  10. public class RawImageTest : IPrebuildSetup
  11. {
  12. private const int Width = 32;
  13. private const int Height = 32;
  14. private GameObject m_PrefabRoot;
  15. private RawImageTestHook m_image;
  16. private Texture2D m_defaultTexture;
  17. const string kPrefabPath = "Assets/Resources/RawImageUpdatePrefab.prefab";
  18. public void Setup()
  19. {
  20. #if UNITY_EDITOR
  21. var rootGO = new GameObject("Root");
  22. var canvasGO = new GameObject("Canvas", typeof(Canvas));
  23. var canvas = canvasGO.GetComponent<Canvas>();
  24. canvas.renderMode = RenderMode.WorldSpace;
  25. canvasGO.transform.SetParent(rootGO.transform);
  26. var imageGO = new GameObject("Image", typeof(RectTransform), typeof(RawImageTestHook));
  27. var imageTransform = imageGO.GetComponent<RectTransform>();
  28. imageTransform.SetParent(canvas.transform);
  29. imageTransform.anchoredPosition = Vector2.zero;
  30. if (!Directory.Exists("Assets/Resources/"))
  31. Directory.CreateDirectory("Assets/Resources/");
  32. PrefabUtility.SaveAsPrefabAsset(rootGO, kPrefabPath);
  33. GameObject.DestroyImmediate(rootGO);
  34. #endif
  35. }
  36. [SetUp]
  37. public void TestSetup()
  38. {
  39. m_PrefabRoot = Object.Instantiate(Resources.Load("RawImageUpdatePrefab")) as GameObject;
  40. m_image = m_PrefabRoot.transform.Find("Canvas/Image").GetComponent<RawImageTestHook>();
  41. m_defaultTexture = new Texture2D(Width, Height);
  42. m_image.texture = m_defaultTexture;
  43. }
  44. [UnityTest]
  45. public IEnumerator Sprite_Material()
  46. {
  47. m_image.ResetTest();
  48. // can test only on texture change, same texture is bypass by RawImage property
  49. m_image.texture = new Texture2D(Width, Height);
  50. yield return new WaitUntil(() => m_image.isGeometryUpdated);
  51. // validate that layout change rebuild is called
  52. Assert.IsTrue(m_image.isMaterialRebuild);
  53. }
  54. [TearDown]
  55. public void TearDown()
  56. {
  57. GameObject.DestroyImmediate(m_PrefabRoot);
  58. #if UNITY_EDITOR
  59. AssetDatabase.DeleteAsset(kPrefabPath);
  60. #endif
  61. }
  62. }
  63. }