Skip to content

Commit

Permalink
Added tests for TimeInRangeCalculatorHandler.cs
Browse files Browse the repository at this point in the history
  • Loading branch information
Breno RdV committed Jun 6, 2024
1 parent 0c371ec commit 9346c75
Show file tree
Hide file tree
Showing 2 changed files with 130 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
using Raccoon.Ninja.Domain.Core.Calculators;
using Raccoon.Ninja.Domain.Core.Calculators.Handlers;

namespace Raccoon.Ninja.Domain.Core.Tests.Calculators.Handlers;

public class TimeInRangeCalculatorHandlerTests
{
private readonly TimeInRangeCalculatorHandler _sut = new();

[Fact]
public void RunCalculation_ShouldReturnCorrectPercentages_WithValidData()
{
// Arrange
var data = new CalculationData
{
GlucoseValues = new List<float> { 70, 90, 150, 200, 260 }
};

// Act
var result = _sut.Handle(data);

// Assert
result.TimeInRange.Low.Should().Be(20);
result.TimeInRange.Normal.Should().Be(40);
result.TimeInRange.High.Should().Be(20);
result.TimeInRange.VeryHigh.Should().Be(20);
}

[Fact]
public void RunCalculation_ShouldHandleSingleValue()
{
// Arrange
var data = new CalculationData
{
GlucoseValues = new List<float> { 150 }
};

// Act
var result = _sut.Handle(data);

// Assert
result.TimeInRange.Low.Should().Be(0);
result.TimeInRange.Normal.Should().Be(100);
result.TimeInRange.High.Should().Be(0);
result.TimeInRange.VeryHigh.Should().Be(0);
}

[Fact]
public void RunCalculation_ShouldHandleAllLowValues()
{
// Arrange
var data = new CalculationData
{
GlucoseValues = new List<float> { 70, 75, 80, 60, 85 }
};

// Act
var result = _sut.Handle(data);

// Assert
result.TimeInRange.Low.Should().Be(80);
result.TimeInRange.Normal.Should().Be(20);
result.TimeInRange.High.Should().Be(0);
result.TimeInRange.VeryHigh.Should().Be(0);
}

[Fact]
public void RunCalculation_ShouldHandleAllNormalValues()
{
// Arrange
var data = new CalculationData
{
GlucoseValues = new List<float> { 90, 100, 150, 160, 170 }
};

// Act
var result = _sut.Handle(data);

// Assert
result.TimeInRange.Low.Should().Be(0);
result.TimeInRange.Normal.Should().Be(100);
result.TimeInRange.High.Should().Be(0);
result.TimeInRange.VeryHigh.Should().Be(0);
}

[Fact]
public void RunCalculation_ShouldHandleAllHighValues()
{
// Arrange
var data = new CalculationData
{
GlucoseValues = new List<float> { 180, 185, 200, 240, 250 }
};

// Act
var result = _sut.Handle(data);

// Assert
result.TimeInRange.Low.Should().Be(0);
result.TimeInRange.Normal.Should().Be(0);
result.TimeInRange.High.Should().Be(100);
result.TimeInRange.VeryHigh.Should().Be(0);
}

[Fact]
public void RunCalculation_ShouldHandleAllVeryHighValues()
{
// Arrange
var data = new CalculationData
{
GlucoseValues = new List<float> { 260, 270, 280, 290, 300 }
};

// Act
var result = _sut.Handle(data);

// Assert
result.TimeInRange.Low.Should().Be(0);
result.TimeInRange.Normal.Should().Be(0);
result.TimeInRange.High.Should().Be(0);
result.TimeInRange.VeryHigh.Should().Be(100);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,23 @@ public class TimeInRangeCalculatorHandler: BaseCalculatorHandler
protected override CalculationData RunCalculation(CalculationData data)
{
var low = data.GlucoseValues.Count(v => v < GlucoseConstants.LowGlucoseThreshold);
var normal = data.GlucoseValues.Count(v => v >= GlucoseConstants.LowGlucoseThreshold && v <= GlucoseConstants.HighGlucoseThreshold);
var normal = data.GlucoseValues.Count(v => v >= GlucoseConstants.LowGlucoseThreshold && v < GlucoseConstants.HighGlucoseThreshold);
var high = data.GlucoseValues.Count(v => v >= GlucoseConstants.HighGlucoseThreshold && v <= GlucoseConstants.VeryHighGlucoseThreshold);
var veryHigh = data.GlucoseValues.Count(v => v > GlucoseConstants.VeryHighGlucoseThreshold);

return data with
{
TimeInRange = new CalculationDataTimeInRange
{
Low = ToPercents(low, data.Count),
Normal = ToPercents(normal, data.Count),
High = ToPercents(high, data.Count),
VeryHigh = ToPercents(veryHigh, data.Count)
Low = ToPercent(low, data.Count),
Normal = ToPercent(normal, data.Count),
High = ToPercent(high, data.Count),
VeryHigh = ToPercent(veryHigh, data.Count)
}
};
}

private static float ToPercents(float value, float total)
private static float ToPercent(float value, float total)
{
return value / total * 100;
}
Expand Down

0 comments on commit 9346c75

Please sign in to comment.