Premiere commit - Omika

This commit is contained in:
2026-10-23 18:46:50 +02:00
commit 8ea76c1b24
2155 changed files with 984301 additions and 0 deletions
@@ -0,0 +1,81 @@
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"));
}
}