You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123 lines
3.3 KiB
C#

using Xunit;
using Moq;
using FluentAssertions;
using Microsoft.Extensions.Logging;
using Haoliang.Core.Services;
using DeviceStatus = Haoliang.Models.Device.DeviceCurrentStatus;
namespace Haoliang.Tests;
public class ProductionCalculatorTests
{
[Fact]
public void CalculateProduction_SameProgram_ReturnsDifference()
{
var current = new DeviceStatus
{
DeviceId = 1,
NCProgram = "PROGRAM001",
CumulativeCount = 150,
RecordTime = DateTime.Now
};
var last = new DeviceStatus
{
DeviceId = 1,
NCProgram = "PROGRAM001",
CumulativeCount = 100,
RecordTime = DateTime.Now.AddMinutes(-1)
};
var result = Haoliang.Models.Production.ProductionCalculator.CalculateProduction(current, last);
result.Should().Be(50);
}
[Fact]
public void CalculateProduction_ProgramSwitch_ReturnsCurrentCount()
{
var current = new DeviceStatus
{
DeviceId = 1,
NCProgram = "PROGRAM002",
CumulativeCount = 50,
RecordTime = DateTime.Now
};
var last = new DeviceStatus
{
DeviceId = 1,
NCProgram = "PROGRAM001",
CumulativeCount = 100,
RecordTime = DateTime.Now.AddMinutes(-1)
};
var result = Haoliang.Models.Production.ProductionCalculator.CalculateProduction(current, last);
result.Should().Be(50);
}
[Fact]
public void CalculateProduction_NegativeValue_ReturnsZero()
{
var current = new DeviceStatus
{
DeviceId = 1,
NCProgram = "PROGRAM001",
CumulativeCount = 50,
RecordTime = DateTime.Now
};
var last = new DeviceStatus
{
DeviceId = 1,
NCProgram = "PROGRAM001",
CumulativeCount = 100,
RecordTime = DateTime.Now.AddMinutes(-1)
};
var result = Haoliang.Models.Production.ProductionCalculator.CalculateProduction(current, last);
result.Should().Be(0);
}
[Fact]
public void CalculateProduction_SameProgramZeroDiff_ReturnsZero()
{
var current = new DeviceStatus
{
DeviceId = 1,
NCProgram = "PROGRAM001",
CumulativeCount = 100,
RecordTime = DateTime.Now
};
var last = new DeviceStatus
{
DeviceId = 1,
NCProgram = "PROGRAM001",
CumulativeCount = 100,
RecordTime = DateTime.Now.AddMinutes(-1)
};
var result = Haoliang.Models.Production.ProductionCalculator.CalculateProduction(current, last);
result.Should().Be(0);
}
[Fact]
public void IsNewProgram_DifferentPrograms_ReturnsTrue()
{
var result = Haoliang.Models.Production.ProductionCalculator.IsNewProgram("PROGRAM001", "PROGRAM002");
result.Should().BeTrue();
}
[Fact]
public void IsNewProgram_SameProgram_ReturnsFalse()
{
var result = Haoliang.Models.Production.ProductionCalculator.IsNewProgram("PROGRAM001", "PROGRAM001");
result.Should().BeFalse();
}
}