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.
61 lines
1.9 KiB
61 lines
1.9 KiB
using System; |
|
using UnityEngine; |
|
using UnityEngine.TestTools; |
|
using NUnit.Framework; |
|
using System.Collections; |
|
using UnityEngine.Profiling; |
|
using UnityEngine.SceneManagement; |
|
using UnityEditor; |
|
|
|
[TestFixture] |
|
[UnityPlatform(include = new RuntimePlatform[] { RuntimePlatform.OSXEditor, RuntimePlatform.LinuxEditor, RuntimePlatform.WindowsEditor })] |
|
[Category("RegressionTest")] |
|
[Description("CoveredBugID = 883807, CoveredBugDescription = \"Object::GetInstanceID crash when trying to switch canvas\"")] |
|
public class NoActiveCameraInSceneDoesNotCrashEditor : IPrebuildSetup |
|
{ |
|
Scene m_InitScene; |
|
const string k_SceneName = "NoActiveCameraInSceneDoesNotCrashEditorScene"; |
|
|
|
public void Setup() |
|
{ |
|
#if UNITY_EDITOR |
|
Action codeToExecute = delegate() |
|
{ |
|
UnityEditor.EditorApplication.ExecuteMenuItem("GameObject/UI/Legacy/Button"); |
|
}; |
|
|
|
CreateSceneUtility.CreateScene(k_SceneName, codeToExecute); |
|
#endif |
|
} |
|
|
|
[SetUp] |
|
public void TestSetup() |
|
{ |
|
m_InitScene = SceneManager.GetActiveScene(); |
|
} |
|
|
|
[UnityTest] |
|
public IEnumerator EditorShouldNotCrashWithoutActiveCamera() |
|
{ |
|
AsyncOperation operationResult = SceneManager.LoadSceneAsync(k_SceneName, LoadSceneMode.Additive); |
|
yield return operationResult; |
|
|
|
SceneManager.SetActiveScene(SceneManager.GetSceneByName(k_SceneName)); |
|
|
|
Profiler.enabled = true; |
|
Camera.main.gameObject.SetActive(false); |
|
|
|
yield return new WaitForSeconds(0.1f); |
|
Assert.That(Profiler.enabled, Is.True, "Expected the profiler to be enabled. Unable to test if the profiler will crash the editor if it is not enabled."); |
|
} |
|
|
|
[TearDown] |
|
public void TearDown() |
|
{ |
|
SceneManager.SetActiveScene(m_InitScene); |
|
SceneManager.UnloadSceneAsync(k_SceneName); |
|
#if UNITY_EDITOR |
|
AssetDatabase.DeleteAsset("Assets/" + k_SceneName + ".unity"); |
|
#endif |
|
} |
|
}
|
|
|