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#
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();
|
|
}
|
|
} |