using System; using System.Collections.Generic; using System.IO; using CounterDrone.Core; using CounterDrone.Core.Models; using SQLite; namespace CounterDrone.Core.Tests { /// 测试辅助:从 seeded 数据库读取(与生产环境同源) internal static class TestData { private static readonly string _tempDir; private static readonly SQLiteConnection _db; static TestData() { _tempDir = Path.Combine(Path.GetTempPath(), $"cd_td_{Guid.NewGuid():N}"); var paths = new TestPathProvider(_tempDir); var dbm = new DatabaseManager(paths); _db = dbm.OpenMainDb(); } private static List? _ammo; public static List Ammo => _ammo ??= new List(_db.Table()); private static DefaultData? _all; public static DefaultData All { get { if (_all == null) { var dir = TestPathProvider.FindProjectDataDirectory()!; _all = DefaultData.Load(new DirPathProvider(dir)); } return _all; } } private class DirPathProvider : IPathProvider { private readonly string _dir; public DirPathProvider(string dir) => _dir = dir; public string GetDataRoot() => _dir; public string GetMainDbPath() => throw new NotImplementedException(); public string GetFramesDir() => throw new NotImplementedException(); public string GetModelsDir() => throw new NotImplementedException(); } public static void Cleanup() { _db?.Close(); if (Directory.Exists(_tempDir)) Directory.Delete(_tempDir, true); } } }