Danro-Jump/Assets/Tests/EditMode/Editor/MissingScriptSweepTests.cs
Danil Iarosh d39d160d92 Implement physical prize dispensing, service stats, and QR screen timeout
- Добавлен асинхронный процесс аппаратной выдачи физических призов (хоппер и витрина) в GameplayHudController.
- Реализована блокировка выдачи по 10-секундному таймауту датчика хоппера с гарантированной отправкой команды отключения двигателя '300'.
- Реализован автоматический таймаут неактивности на экране QR-кода с последующим переходом в главное меню.
- Расширен сервис статистики PrizeSessionStateService новыми долгосрочными счетчиками (сыгранные игры, очки, монеты, сбои связи COM, физ. выдачи и ошибки).
- Обновлен построитель сводки статистики в меню настроек для отображения новых счетчиков и списка последних 5 сессий.
- Написаны EditMode тесты для проверки инкремента счетчиков и запуска выдачи призов.
2026-06-23 10:36:13 +03:00

35 lines
1.2 KiB
C#

using System.IO;
using NUnit.Framework;
using UnityEditor;
using UnityEngine;
namespace DanroJump.Tests.EditMode
{
public sealed class MissingScriptSweepTests
{
[Test]
public void PrefabsAndScenes_DoNotContainExplicitMissingScriptReferences()
{
var guids = AssetDatabase.FindAssets("t:Prefab");
foreach (var guid in guids)
{
var path = AssetDatabase.GUIDToAssetPath(guid);
var prefab = AssetDatabase.LoadAssetAtPath<GameObject>(path);
Assert.That(prefab, Is.Not.Null, $"{path} could not be loaded as prefab.");
Assert.That(
GameObjectUtility.GetMonoBehavioursWithMissingScriptCount(prefab),
Is.EqualTo(0),
$"{path} contains missing MonoBehaviour references.");
}
foreach (var scenePath in Directory.GetFiles("Assets", "*.unity", SearchOption.AllDirectories))
{
Assert.That(
File.ReadAllText(scenePath),
Does.Not.Contain("m_Script: {fileID: 0}"),
$"{scenePath} contains explicit missing script references.");
}
}
}
}