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() == null) { var go = new GameObject("Test App"); go.AddComponent(); } yield return null; yield return null; Assert.IsNotNull(Object.FindAnyObjectByType()); Assert.IsNotNull(GameObject.Find("Vanguard Canvas")); var login = Resources.FindObjectsOfTypeAll() .FirstOrDefault(go => go.name == "LoginScreen"); var onboarding = Resources.FindObjectsOfTypeAll() .FirstOrDefault(go => go.name == "OnboardingScreen"); var meta = Resources.FindObjectsOfTypeAll() .FirstOrDefault(go => go.name == "MetaScreen"); var hierarchy = string.Join( "\n", Resources.FindObjectsOfTypeAll() .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(); if (app != null) Object.Destroy(app.gameObject); var canvas = GameObject.Find("Vanguard Canvas"); if (canvas != null) Object.Destroy(canvas); var eventSystem = Object.FindAnyObjectByType(); if (eventSystem != null) Object.Destroy(eventSystem.gameObject); } } }