feat: refactor to proper app + write tests

This commit is contained in:
Stevan Freeborn
2025-02-13 17:24:38 -06:00
parent baf4035616
commit 42435ad915
38 changed files with 1462 additions and 253 deletions
+94
View File
@@ -0,0 +1,94 @@
namespace BGR.Console.Tests.Unit;
public class ModelTests
{
internal sealed class TestModel(byte[] modelBytes) : Model(modelBytes)
{
public override int InputWidth => 100;
public override int InputHeight => 100;
public override float RedNormalizationMean => 0.5f;
public override float GreenNormalizationMean => 0.5f;
public override float BlueNormalizationMean => 0.5f;
public override float RedNormalizationStd => 0.25f;
public override float GreenNormalizationStd => 0.25f;
public override float BlueNormalizationStd => 0.25f;
}
private readonly byte[] _sampleBytes = [0x01, 0x02, 0x03];
private readonly TestModel _sut;
private const float Delta = 0.00001f;
public ModelTests()
{
_sut = new TestModel(_sampleBytes);
}
[Theory]
[InlineData(0f)]
[InlineData(127.5f)]
[InlineData(255f)]
public void NormalizeRed_WhenCalled_ItShouldNormalizeCorrectly(float value)
{
var result = _sut.NormalizeRed(value);
var expected = ((value / 255f) - _sut.RedNormalizationMean) / _sut.RedNormalizationStd;
result.ShouldBe(expected, Delta);
}
[Theory]
[InlineData(0f)]
[InlineData(127.5f)]
[InlineData(255f)]
public void NormalizeGreen_WhenCalled_ItShouldNormalizeCorrectly(float value)
{
var result = _sut.NormalizeGreen(value);
var expected = ((value / 255f) - _sut.GreenNormalizationMean) / _sut.GreenNormalizationStd;
result.ShouldBe(expected, Delta);
}
[Theory]
[InlineData(0f)]
[InlineData(127.5f)]
[InlineData(255f)]
public void NormalizeBlue_WhenCalled_ItShouldNormalizeCorrectly(float value)
{
var result = _sut.NormalizeBlue(value);
var expected = ((value / 255f) - _sut.BlueNormalizationMean) / _sut.BlueNormalizationStd;
result.ShouldBe(expected, Delta);
}
[Theory]
[InlineData(-1f)]
[InlineData(256f)]
public void NormalizeRed_WhenCalledWithOutOfRangeValues_ItShouldStillNormalize(float value)
{
var result = _sut.NormalizeRed(value);
var expected = ((value / 255f) - _sut.RedNormalizationMean) / _sut.RedNormalizationStd;
result.ShouldBe(expected, Delta);
}
[Theory]
[InlineData(-1f)]
[InlineData(256f)]
public void NormalizeGreen_WhenCalledWithOutOfRangeValues_ItShouldStillNormalize(float value)
{
var result = _sut.NormalizeGreen(value);
var expected = ((value / 255f) - _sut.GreenNormalizationMean) / _sut.GreenNormalizationStd;
result.ShouldBe(expected, Delta);
}
[Theory]
[InlineData(-1f)]
[InlineData(256f)]
public void NormalizeBlue_WhenCalledWithOutOfRangeValues_ItShouldStillNormalize(float value)
{
var result = _sut.NormalizeBlue(value);
var expected = ((value / 255f) - _sut.BlueNormalizationMean) / _sut.BlueNormalizationStd;
result.ShouldBe(expected, Delta);
}
}