56 lines
1.8 KiB
C#
56 lines
1.8 KiB
C#
using Microsoft.Extensions.Logging.Abstractions;
|
|
using Microsoft.Extensions.Options;
|
|
using SSPCTester.Devices.Config;
|
|
using SSPCTester.Devices.Drivers.Mock;
|
|
using SSPCTester.Logic.Models;
|
|
using SSPCTester.Logic.Storage;
|
|
|
|
namespace SSPCTester.Tests;
|
|
|
|
public sealed class ChannelNumberingTests
|
|
{
|
|
[Fact]
|
|
public async Task MockSspc_Accepts1To24AndRejectsZero()
|
|
{
|
|
var sspc = new MockSspc(Options.Create(new DeviceOptions()), NullLogger<MockSspc>.Instance);
|
|
|
|
await sspc.TurnOnAsync(1);
|
|
await sspc.TurnOnAsync(24);
|
|
|
|
Assert.True(await sspc.GetChannelStateAsync(1));
|
|
Assert.True(await sspc.GetChannelStateAsync(24));
|
|
await Assert.ThrowsAsync<ArgumentOutOfRangeException>(() => sspc.TurnOnAsync(0));
|
|
}
|
|
|
|
[Fact]
|
|
public async Task LoadingLegacyZeroBasedProject_ClearsChannelResults()
|
|
{
|
|
string folder = Path.Combine(Path.GetTempPath(), "SSPCTester.Tests", Guid.NewGuid().ToString("N"));
|
|
Directory.CreateDirectory(folder);
|
|
try
|
|
{
|
|
await File.WriteAllTextAsync(Path.Combine(folder, "project.json"),
|
|
"""
|
|
{
|
|
"Name": "legacy",
|
|
"BasicResults": [ { "Channel": 0 } ],
|
|
"CurveResults": [ { "Channel": 0 } ],
|
|
"PowerResults": [ { "Channel": 0 } ]
|
|
}
|
|
""");
|
|
var store = new ProjectStore();
|
|
|
|
Project? project = await store.LoadAsync(folder);
|
|
|
|
Assert.NotNull(project);
|
|
Assert.Empty(project.BasicResults);
|
|
Assert.Empty(project.CurveResults);
|
|
Assert.Empty(project.PowerResults);
|
|
}
|
|
finally
|
|
{
|
|
if (Directory.Exists(folder)) Directory.Delete(folder, true);
|
|
}
|
|
}
|
|
}
|