VanguardReMaster/client/Assets/Vanguard/Tests/PlayMode/AppBootstrapPlayModeTests.cs

69 lines
2.5 KiB
C#

using System.Collections;
using System.Linq;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.TestTools;
using Vanguard.App;
namespace Vanguard.Tests
{
public sealed class AppBootstrapPlayModeTests
{
[UnityTest]
public IEnumerator App_Bootstraps_And_Shows_A_Screen()
{
if (Object.FindAnyObjectByType<VanguardApp>() == null)
{
var go = new GameObject("Test App");
go.AddComponent<VanguardApp>();
}
yield return null;
yield return null;
Assert.IsNotNull(Object.FindAnyObjectByType<VanguardApp>());
Assert.IsNotNull(GameObject.Find("Vanguard Canvas"));
var login = Resources.FindObjectsOfTypeAll<GameObject>()
.FirstOrDefault(go => go.name == "LoginScreen");
var onboarding = Resources.FindObjectsOfTypeAll<GameObject>()
.FirstOrDefault(go => go.name == "OnboardingScreen");
var meta = Resources.FindObjectsOfTypeAll<GameObject>()
.FirstOrDefault(go => go.name == "MetaScreen");
var hierarchy = string.Join(
"\n",
Resources.FindObjectsOfTypeAll<GameObject>()
.Where(go => go.name.EndsWith("Screen") || go.name == "Vanguard Canvas")
.Select(go => go.name + ": activeSelf=" + go.activeSelf + ", activeInHierarchy=" + go.activeInHierarchy));
var hasStartScreen = (login != null && login.activeInHierarchy)
|| (onboarding != null && onboarding.activeInHierarchy)
|| (meta != null && meta.activeInHierarchy);
Assert.IsTrue(
hasStartScreen,
"Ни LoginScreen, ни OnboardingScreen, ни MetaScreen не активны.\nInitError: "
+ VanguardApp.LastInitializationError + "\n" + hierarchy);
Cleanup();
yield return null;
}
private static void Cleanup()
{
var app = Object.FindAnyObjectByType<VanguardApp>();
if (app != null)
Object.Destroy(app.gameObject);
var canvas = GameObject.Find("Vanguard Canvas");
if (canvas != null)
Object.Destroy(canvas);
var eventSystem = Object.FindAnyObjectByType<EventSystem>();
if (eventSystem != null)
Object.Destroy(eventSystem.gameObject);
}
}
}