using Junction.App.Converters; using Xunit; namespace Junction.Tests.Unit { /// /// Data-level tests for the protocol → glyph mapping. Targets the pure /// so no Avalonia platform is required /// (the geometry parse in Convert needs a render backend). Mirrors the intent of the /// StatusKind converter: known ids → distinct non-empty data, unknown → fallback, never throws. /// public class ProtocolIdToIconConverterTests { [Theory] [InlineData("mtconnect")] [InlineData("opcua")] [InlineData("fanuc")] public void KnownProtocol_ReturnsNonEmptyData(string protocolId) { var data = ProtocolIdToIconConverter.PathDataFor(protocolId); Assert.False(string.IsNullOrWhiteSpace(data)); } [Fact] public void KnownProtocols_AreMutuallyDistinct() { var mtc = ProtocolIdToIconConverter.PathDataFor("mtconnect"); var opc = ProtocolIdToIconConverter.PathDataFor("opcua"); var fan = ProtocolIdToIconConverter.PathDataFor("fanuc"); Assert.NotEqual(mtc, opc); Assert.NotEqual(mtc, fan); Assert.NotEqual(opc, fan); } [Fact] public void Lookup_IsCaseAndWhitespaceInsensitive() { var canonical = ProtocolIdToIconConverter.PathDataFor("mtconnect"); Assert.Equal(canonical, ProtocolIdToIconConverter.PathDataFor(" MtConnect ")); } [Theory] [InlineData("unknown")] [InlineData("modbus")] [InlineData("")] public void UnknownOrEmpty_ReturnsFallback(string protocolId) { var fallback = ProtocolIdToIconConverter.PathDataFor("definitely-not-a-protocol"); var data = ProtocolIdToIconConverter.PathDataFor(protocolId); Assert.False(string.IsNullOrWhiteSpace(data)); Assert.Equal(fallback, data); } [Fact] public void Null_ReturnsFallback_DoesNotThrow() { var fallback = ProtocolIdToIconConverter.PathDataFor("definitely-not-a-protocol"); var data = ProtocolIdToIconConverter.PathDataFor(null); Assert.False(string.IsNullOrWhiteSpace(data)); Assert.Equal(fallback, data); } [Fact] public void Fallback_DiffersFromEveryKnownProtocol() { var fallback = ProtocolIdToIconConverter.PathDataFor("unknown"); Assert.NotEqual(fallback, ProtocolIdToIconConverter.PathDataFor("mtconnect")); Assert.NotEqual(fallback, ProtocolIdToIconConverter.PathDataFor("opcua")); Assert.NotEqual(fallback, ProtocolIdToIconConverter.PathDataFor("fanuc")); } } }