using Omika.Core.Observability; namespace Omika.Tests.Observability; public class TelemetryValueTests { private enum SampleEnum { A, B } [Fact] public void String_IsValid() { TelemetryValue value = "hello"; Assert.True(value.IsValid); Assert.Equal(TelemetryValueKind.String, value.Kind); Assert.Equal("hello", value.Value); } [Fact] public void NullString_IsInvalid() { TelemetryValue value = (string)null!; Assert.False(value.IsValid); } [Theory] [InlineData(double.NaN)] [InlineData(double.PositiveInfinity)] [InlineData(double.NegativeInfinity)] public void NonFiniteDouble_IsInvalid(double number) { TelemetryValue value = number; Assert.False(value.IsValid); } [Fact] public void SimpleTypes_AreValid() { Assert.True(((TelemetryValue)true).IsValid); Assert.True(((TelemetryValue)42).IsValid); Assert.True(((TelemetryValue)42L).IsValid); Assert.True(((TelemetryValue)1.5).IsValid); Assert.True(((TelemetryValue)Guid.NewGuid()).IsValid); Assert.True(((TelemetryValue)DateTimeOffset.UtcNow).IsValid); } [Fact] public void FromEnum_IsValid_AndStoresName() { TelemetryValue value = TelemetryValue.FromEnum(SampleEnum.B); Assert.True(value.IsValid); Assert.Equal(TelemetryValueKind.String, value.Kind); Assert.Equal("B", value.Value); } [Fact] public void Default_IsInvalid() { Assert.False(default(TelemetryValue).IsValid); } }