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.
73 lines
2.4 KiB
73 lines
2.4 KiB
using System; |
|
using System.Collections; |
|
using UnityEngine; |
|
using UnityEngine.TestTools; |
|
using NUnit.Framework; |
|
using UnityEngine.SceneManagement; |
|
using UnityEngine.UI; |
|
using UnityEditor; |
|
|
|
[TestFixture] |
|
public class RectTransformValidAfterEnable : IPrebuildSetup |
|
{ |
|
const string kSceneName = "DisabledCanvasScene"; |
|
const string kGameObjectName = "DisabledCanvas"; |
|
public void Setup() |
|
{ |
|
#if UNITY_EDITOR |
|
Action codeToExecute = delegate() |
|
{ |
|
var canvasGameObject = new GameObject(kGameObjectName, typeof(Canvas)); |
|
canvasGameObject.SetActive(false); |
|
canvasGameObject.GetComponent<Canvas>().renderMode = RenderMode.ScreenSpaceOverlay; |
|
canvasGameObject.GetComponent<RectTransform>().sizeDelta = new Vector2(0, 0); |
|
canvasGameObject.GetComponent<RectTransform>().anchoredPosition = new Vector2(0, 0); |
|
CanvasScaler canvasScaler = canvasGameObject.AddComponent<CanvasScaler>(); |
|
canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; |
|
canvasScaler.referenceResolution = new Vector2(1024, 768); |
|
}; |
|
CreateSceneUtility.CreateScene(kSceneName, codeToExecute); |
|
#endif |
|
} |
|
|
|
[UnityTest] |
|
public IEnumerator CheckRectTransformValidAfterEnable() |
|
{ |
|
AsyncOperation operation = SceneManager.LoadSceneAsync(kSceneName, LoadSceneMode.Additive); |
|
yield return operation; |
|
|
|
Scene scene = SceneManager.GetSceneByName(kSceneName); |
|
GameObject[] gameObjects = scene.GetRootGameObjects(); |
|
GameObject canvasGameObject = null; |
|
foreach (GameObject gameObject in gameObjects) |
|
{ |
|
if (gameObject.name == kGameObjectName) |
|
{ |
|
canvasGameObject = gameObject; |
|
break; |
|
} |
|
} |
|
Assert.IsNotNull(canvasGameObject); |
|
|
|
RectTransform rectTransform = canvasGameObject.GetComponent<RectTransform>(); |
|
canvasGameObject.SetActive(true); |
|
|
|
yield return new WaitForEndOfFrame(); |
|
|
|
Rect rect = rectTransform.rect; |
|
Assert.Greater(rect.width, 0); |
|
Assert.Greater(rect.height, 0); |
|
|
|
operation = SceneManager.UnloadSceneAsync(kSceneName); |
|
yield return operation; |
|
} |
|
|
|
[TearDown] |
|
public void TearDown() |
|
{ |
|
//Manually add Assets/ and .unity as CreateSceneUtility does that for you. |
|
#if UNITY_EDITOR |
|
AssetDatabase.DeleteAsset("Assets/" + kSceneName + ".unity"); |
|
#endif |
|
} |
|
}
|
|
|