69 lines
2.5 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|