ThreatSourceLibaray/ThreatSource.Tests/src/Utils/LaserCodeTests.cs

155 lines
3.8 KiB
C#

using Xunit;
using ThreatSource.Utils;
namespace ThreatSource.Tests.Utils
{
public class LaserCodeTests
{
[Fact]
public void Constructor_InitializesPropertiesCorrectly()
{
// Arrange & Act
var laserCode = new LaserCode
{
CodeType = LaserCodeType.PRF,
CodeValue = 1234
};
// Assert
Assert.Equal(LaserCodeType.PRF, laserCode.CodeType);
Assert.Equal(1234, laserCode.CodeValue);
Assert.Empty(laserCode.Parameters);
}
[Fact]
public void Parameters_CanAddAndRetrieveValues()
{
// Arrange
var laserCode = new LaserCode
{
CodeType = LaserCodeType.PPM,
CodeValue = 5678
};
// Act
laserCode.Parameters["PulseWidth"] = 0.001;
laserCode.Parameters["PulseCount"] = 10;
// Assert
Assert.Equal(0.001, laserCode.Parameters["PulseWidth"]);
Assert.Equal(10, laserCode.Parameters["PulseCount"]);
Assert.Equal(2, laserCode.Parameters.Count);
}
[Fact]
public void Matches_ReturnsTrueForMatchingCodes()
{
// Arrange
var code1 = new LaserCode
{
CodeType = LaserCodeType.PRF,
CodeValue = 1234
};
var code2 = new LaserCode
{
CodeType = LaserCodeType.PRF,
CodeValue = 1234
};
// Act
bool result = code1.Matches(code2);
// Assert
Assert.True(result);
}
[Fact]
public void Matches_ReturnsFalseForDifferentCodeTypes()
{
// Arrange
var code1 = new LaserCode
{
CodeType = LaserCodeType.PRF,
CodeValue = 1234
};
var code2 = new LaserCode
{
CodeType = LaserCodeType.PPM,
CodeValue = 1234
};
// Act
bool result = code1.Matches(code2);
// Assert
Assert.False(result);
}
[Fact]
public void Matches_ReturnsFalseForDifferentCodeValues()
{
// Arrange
var code1 = new LaserCode
{
CodeType = LaserCodeType.PRF,
CodeValue = 1234
};
var code2 = new LaserCode
{
CodeType = LaserCodeType.PRF,
CodeValue = 5678
};
// Act
bool result = code1.Matches(code2);
// Assert
Assert.False(result);
}
[Fact]
public void Matches_ReturnsFalseForNullCode()
{
// Arrange
var code = new LaserCode
{
CodeType = LaserCodeType.PRF,
CodeValue = 1234
};
// Act
bool result = code.Matches(null);
// Assert
Assert.False(result);
}
[Fact]
public void Matches_IgnoresParameters()
{
// Arrange
var code1 = new LaserCode
{
CodeType = LaserCodeType.PRF,
CodeValue = 1234
};
code1.Parameters["PulseWidth"] = 0.001;
var code2 = new LaserCode
{
CodeType = LaserCodeType.PRF,
CodeValue = 1234
};
code2.Parameters["PulseWidth"] = 0.002; // Different parameter value
// Act
bool result = code1.Matches(code2);
// Assert
Assert.True(result); // Should still match because parameters are ignored
}
}
}