82 lines
2.2 KiB
C#
82 lines
2.2 KiB
C#
using Omika.Core.Observability;
|
|
|
|
namespace Omika.Tests.Observability;
|
|
|
|
public class EventCodeTests
|
|
{
|
|
[Fact]
|
|
public void Create_Valid_ProducesCanonicalValue()
|
|
{
|
|
EventCode code = EventCode.Create("mob", "sync", 1);
|
|
|
|
Assert.True(code.IsValid);
|
|
Assert.Equal("OMK-MOB-SYNC-001", code.Value);
|
|
Assert.Equal("MOB", code.Zone);
|
|
Assert.Equal("SYNC", code.Domain);
|
|
Assert.Equal(1, code.Number);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("M", "SYNC", 1)]
|
|
[InlineData("MOBILE", "SYNC", 1)]
|
|
[InlineData("MOB", "S", 1)]
|
|
public void Create_InvalidZoneOrDomain_Throws(string zone, string domain, int number)
|
|
{
|
|
Assert.Throws<ArgumentException>(() => EventCode.Create(zone, domain, number));
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("MOB", "SYNC", 0)]
|
|
[InlineData("MOB", "SYNC", 1000)]
|
|
[InlineData("MOB", "SYNC", -1)]
|
|
public void Create_InvalidNumber_Throws(string zone, string domain, int number)
|
|
{
|
|
Assert.ThrowsAny<ArgumentException>(() => EventCode.Create(zone, domain, number));
|
|
}
|
|
|
|
[Fact]
|
|
public void Parse_ValidValue_ReturnsValid()
|
|
{
|
|
EventCode code = EventCode.Parse("OMK-MOB-SYNC-001");
|
|
|
|
Assert.True(code.IsValid);
|
|
Assert.Equal("OMK-MOB-SYNC-001", code.Value);
|
|
}
|
|
|
|
[Fact]
|
|
public void Parse_Lowercase_Canonicalizes()
|
|
{
|
|
EventCode code = EventCode.Parse("omk-mob-sync-001");
|
|
|
|
Assert.True(code.IsValid);
|
|
Assert.Equal("OMK-MOB-SYNC-001", code.Value);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(null)]
|
|
[InlineData("")]
|
|
[InlineData(" ")]
|
|
[InlineData("BAD")]
|
|
[InlineData("OMK-MOB-SYNC")]
|
|
[InlineData("OMK-MOB-SYNC-0000")]
|
|
[InlineData("OMK-MOB-SYNC-ABC")]
|
|
[InlineData("XX-MOB-SYNC-001")]
|
|
public void Parse_Invalid_ReturnsInvalid(string? value)
|
|
{
|
|
Assert.False(EventCode.Parse(value).IsValid);
|
|
}
|
|
|
|
[Fact]
|
|
public void Default_IsInvalid()
|
|
{
|
|
Assert.False(default(EventCode).IsValid);
|
|
Assert.Null(default(EventCode).Value);
|
|
}
|
|
|
|
[Fact]
|
|
public void Equality_IsCaseSensitiveCanonical()
|
|
{
|
|
Assert.Equal(EventCode.Create("MOB", "SYNC", 1), EventCode.Parse("omk-mob-sync-001"));
|
|
}
|
|
}
|