+DataServiceTests (12 个) / 修复 FormationTemplate 缺 PrimaryKey / 删除死代码

This commit is contained in:
tian 2026-06-19 10:35:42 +08:00
parent d3248d80a3
commit 2a062c07bd
4 changed files with 173 additions and 0 deletions

View File

@ -1,10 +1,13 @@
using CounterDrone.Core.Models;
using SQLite;
namespace CounterDrone.Core.Models
{
/// <summary>编队模板</summary>
[Table("FormationTemplate")]
public class FormationTemplate
{
[PrimaryKey]
public string Id { get; set; } = "";
public string Name { get; set; } = "";
public int FormationMode { get; set; }

View File

@ -0,0 +1,170 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using CounterDrone.Core;
using CounterDrone.Core.Models;
using CounterDrone.Core.Repository;
using CounterDrone.Core.Services;
using Xunit;
namespace CounterDrone.Core.Tests
{
public class DataServiceTests : IDisposable
{
private readonly string _testDir;
private readonly SQLite.SQLiteConnection _db;
private readonly IDataService _service;
public DataServiceTests()
{
_testDir = Path.Combine(Path.GetTempPath(), $"cd_ds_{Guid.NewGuid():N}");
var paths = new TestPathProvider(_testDir);
_db = new DatabaseManager(paths).OpenMainDb();
_service = new DataService(
new AmmunitionSpecRepository(_db),
new FireUnitSpecRepository(_db),
new DroneSpecRepository(_db),
new SensorSpecRepository(_db),
new EnvironmentSpecRepository(_db),
new FormationTemplateRepository(_db),
new RouteTemplateRepository(_db));
}
public void Dispose()
{
_db?.Close();
if (Directory.Exists(_testDir)) Directory.Delete(_testDir, true);
}
// ══════════════════════════════ DroneSpec ══════════════════════════════
[Fact]
public void DroneSpec_SaveAndGet()
{
var spec = new DroneSpec
{
Id = "test-drone", Name = "Test Drone", DroneType = (int)DroneType.FixedWing,
PowerType = (int)PowerType.Piston, TypicalSpeed = 150, TypicalAltitude = 500,
};
_service.SaveDrone(spec);
var result = _service.GetDrone("test-drone");
Assert.NotNull(result);
Assert.Equal("Test Drone", result.Name);
Assert.Equal(150, result.TypicalSpeed);
}
[Fact]
public void DroneSpec_Save_UpdateExisting()
{
_service.SaveDrone(new DroneSpec { Id = "test-drone", Name = "Old", TypicalSpeed = 100 });
_service.SaveDrone(new DroneSpec { Id = "test-drone", Name = "New", TypicalSpeed = 200 });
var result = _service.GetDrone("test-drone");
Assert.Equal("New", result.Name);
Assert.Equal(200, result.TypicalSpeed);
}
[Fact]
public void DroneSpec_Delete()
{
_service.SaveDrone(new DroneSpec { Id = "test-drone", Name = "ToDelete" });
_service.DeleteDrone("test-drone");
Assert.Null(_service.GetDrone("test-drone"));
}
[Fact]
public void DroneSpec_GetAll()
{
_service.SaveDrone(new DroneSpec { Id = "d1", Name = "D1" });
_service.SaveDrone(new DroneSpec { Id = "d2", Name = "D2" });
var all = _service.GetAllDrones();
Assert.True(all.Count >= 2);
}
// ══════════════════════════════ FireUnitSpec ═══════════════════════════
[Fact]
public void FireUnitSpec_SaveAndGet()
{
var spec = new FireUnitSpec
{
Id = "test-fu", Name = "Test Unit", PlatformType = (int)PlatformType.GroundBased,
GunCount = 4, MuzzleVelocity = 800,
};
_service.SaveFireUnit(spec);
var result = _service.GetFireUnit("test-fu");
Assert.NotNull(result);
Assert.Equal("Test Unit", result.Name);
Assert.Equal(800, result.MuzzleVelocity);
}
[Fact]
public void FireUnitSpec_Delete()
{
_service.SaveFireUnit(new FireUnitSpec { Id = "test-fu", Name = "ToDelete" });
_service.DeleteFireUnit("test-fu");
Assert.Null(_service.GetFireUnit("test-fu"));
}
[Fact]
public void FireUnitSpec_GetAll()
{
_service.SaveFireUnit(new FireUnitSpec { Id = "f1", Name = "F1" });
_service.SaveFireUnit(new FireUnitSpec { Id = "f2", Name = "F2" });
var all = _service.GetAllFireUnits();
Assert.True(all.Count >= 2);
}
// ══════════════════════════════ SensorSpec ═════════════════════════════
[Fact]
public void SensorSpec_SaveAndGet()
{
var spec = new SensorSpec { Id = "test-sensor", Name = "Test Sensor", RadarRange = 5000 };
_service.SaveSensor(spec);
var result = _service.GetSensor("test-sensor");
Assert.Equal(5000, result.RadarRange);
}
[Fact]
public void SensorSpec_Delete()
{
_service.SaveSensor(new SensorSpec { Id = "test-sensor", Name = "Del" });
_service.DeleteSensor("test-sensor");
Assert.Null(_service.GetSensor("test-sensor"));
}
// ══════════════════════════════ EnvironmentSpec ════════════════════════
[Fact]
public void EnvironmentSpec_SaveAndGet()
{
var spec = new EnvironmentSpec { Id = "test-env", Name = "Fog", WeatherType = 2, Visibility = 500 };
_service.SaveEnvironment(spec);
var result = _service.GetEnvironment("test-env");
Assert.Equal(500, result.Visibility);
}
// ══════════════════════════════ FormationTemplate ══════════════════════
[Fact]
public void FormationTemplate_SaveAndGet()
{
var spec = new FormationTemplate { Id = "test-fmt", Name = "Test Formation", FormationMode = 1, LateralCount = 3 };
_service.SaveFormation(spec);
var result = _service.GetFormation("test-fmt");
Assert.Equal(3, result.LateralCount);
}
// ══════════════════════════════ RouteTemplate ══════════════════════════
[Fact]
public void RouteTemplate_SaveAndGet()
{
var spec = new RouteTemplate { Id = "test-route", Name = "Test Route" };
_service.SaveRoute(spec);
var result = _service.GetRoute("test-route");
Assert.Equal("Test Route", result.Name);
}
}
}

Binary file not shown.