feat: bootstrap suitelink tag client codecs

This commit is contained in:
Joseph Doherty
2026-03-16 14:43:31 -04:00
commit 731bfe2237
30 changed files with 3429 additions and 0 deletions

View File

@@ -0,0 +1,76 @@
using SuiteLink.Client;
namespace SuiteLink.Client.Tests;
public sealed class SuiteLinkValueTests
{
[Fact]
public void Default_ValueIsNone_AndTryGetMethodsReturnFalse()
{
var value = default(SuiteLinkValue);
Assert.Equal(SuiteLinkValueKind.None, value.Kind);
Assert.False(value.TryGetBoolean(out _));
Assert.False(value.TryGetInt32(out _));
Assert.False(value.TryGetFloat32(out _));
Assert.False(value.TryGetString(out _));
}
[Fact]
public void FromBoolean_CreatesBooleanValue_AndTryGetBooleanSucceeds()
{
var value = SuiteLinkValue.FromBoolean(true);
Assert.Equal(SuiteLinkValueKind.Boolean, value.Kind);
Assert.True(value.TryGetBoolean(out var boolValue));
Assert.True(boolValue);
Assert.False(value.TryGetInt32(out _));
Assert.False(value.TryGetFloat32(out _));
Assert.False(value.TryGetString(out _));
}
[Fact]
public void FromInt32_CreatesInt32Value_AndTryGetInt32Succeeds()
{
var value = SuiteLinkValue.FromInt32(42);
Assert.Equal(SuiteLinkValueKind.Int32, value.Kind);
Assert.True(value.TryGetInt32(out var intValue));
Assert.Equal(42, intValue);
Assert.False(value.TryGetBoolean(out _));
Assert.False(value.TryGetFloat32(out _));
Assert.False(value.TryGetString(out _));
}
[Fact]
public void FromFloat32_CreatesFloat32Value_AndTryGetFloat32Succeeds()
{
var value = SuiteLinkValue.FromFloat32(12.5f);
Assert.Equal(SuiteLinkValueKind.Float32, value.Kind);
Assert.True(value.TryGetFloat32(out var floatValue));
Assert.Equal(12.5f, floatValue);
Assert.False(value.TryGetBoolean(out _));
Assert.False(value.TryGetInt32(out _));
Assert.False(value.TryGetString(out _));
}
[Fact]
public void FromString_CreatesStringValue_AndTryGetStringSucceeds()
{
var value = SuiteLinkValue.FromString("tag-value");
Assert.Equal(SuiteLinkValueKind.String, value.Kind);
Assert.True(value.TryGetString(out var stringValue));
Assert.Equal("tag-value", stringValue);
Assert.False(value.TryGetBoolean(out _));
Assert.False(value.TryGetInt32(out _));
Assert.False(value.TryGetFloat32(out _));
}
[Fact]
public void FromString_NullValue_ThrowsArgumentNullException()
{
Assert.Throws<ArgumentNullException>(() => SuiteLinkValue.FromString(null!));
}
}