| File: Model\Serialization\OtlpJsonProtobufConverterTests.cs | Web Access |
| Project: src\tests\Aspire.Dashboard.Tests\Aspire.Dashboard.Tests.csproj (Aspire.Dashboard.Tests) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Aspire.Dashboard.Otlp.Model.Serialization; using Google.Protobuf; using Xunit; namespace Aspire.Dashboard.Tests.Model.Serialization; public class OtlpJsonProtobufConverterTests { [Fact] public void HexToByteString_EmptyString_ReturnsEmptyByteString() { var result = OtlpJsonToProtobufConverter.HexToByteString(string.Empty); Assert.Equal(ByteString.Empty, result); } [Fact] public void HexToByteString_NullString_ReturnsEmptyByteString() { var result = OtlpJsonToProtobufConverter.HexToByteString(null!); Assert.Equal(ByteString.Empty, result); } [Theory] [InlineData("00", new byte[] { 0x00 })] [InlineData("ff", new byte[] { 0xff })] [InlineData("FF", new byte[] { 0xff })] [InlineData("0123456789abcdef", new byte[] { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef })] [InlineData("ABCDEF", new byte[] { 0xab, 0xcd, 0xef })] public void HexToByteString_ValidHex_ReturnsExpectedBytes(string hex, byte[] expected) { var result = OtlpJsonToProtobufConverter.HexToByteString(hex); Assert.Equal(expected, result.ToByteArray()); } [Fact] public void HexToByteString_TraceId_ReturnsCorrectBytes() { // 16-byte trace ID (32 hex chars) var traceIdHex = "0af7651916cd43dd8448eb211c80319c"; var result = OtlpJsonToProtobufConverter.HexToByteString(traceIdHex); Assert.Equal(16, result.Length); Assert.Equal(0x0a, result[0]); Assert.Equal(0xf7, result[1]); Assert.Equal(0x9c, result[15]); } [Fact] public void HexToByteString_SpanId_ReturnsCorrectBytes() { // 8-byte span ID (16 hex chars) var spanIdHex = "00f067aa0ba902b7"; var result = OtlpJsonToProtobufConverter.HexToByteString(spanIdHex); Assert.Equal(8, result.Length); Assert.Equal(0x00, result[0]); Assert.Equal(0xf0, result[1]); Assert.Equal(0xb7, result[7]); } [Theory] [InlineData("0")] [InlineData("abc")] [InlineData("12345")] public void HexToByteString_OddLengthString_ThrowsArgumentException(string hex) { var exception = Assert.Throws<ArgumentException>(() => OtlpJsonToProtobufConverter.HexToByteString(hex)); Assert.Equal("hex", exception.ParamName); Assert.Contains("even length", exception.Message); } [Theory] [InlineData("gg")] [InlineData("zz")] [InlineData("0x12")] public void HexToByteString_InvalidHexCharacters_ThrowsFormatException(string hex) { Assert.Throws<FormatException>(() => OtlpJsonToProtobufConverter.HexToByteString(hex)); } }