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);
}
}
}