dev/HumanoidRetargeter.Tests/Formats/AntSkeletonJsonTests.cs
using System;
using System.Text;
using HumanoidRetargeter.Formats.Ant;
using Xunit;
namespace HumanoidRetargeter.Tests.Formats;
public sealed class AntSkeletonJsonTests
{
[Fact]
public void ParsesBareOrderedJointArray()
{
var data = Encoding.UTF8.GetBytes(
"""[{"name":"Reference","parent":-1},{"name":"Hips","parent":0}]""");
Assert.True(AntSkeletonJson.Looks(data));
var joints = AntSkeletonJson.Parse(data);
Assert.Equal(2, joints.Count);
Assert.Equal(new AntSkeletonJson.Joint("Reference", -1), joints[0]);
Assert.Equal(new AntSkeletonJson.Joint("Hips", 0), joints[1]);
}
[Fact]
public void ParsesExtractorMetadataWrapper()
{
var data = Encoding.UTF8.GetBytes(
"""{"name":"skeleton_boxer","joints":[{"name":"Reference","parent":-1},{"name":"AITrajectory","parent":0}]}""");
Assert.True(AntSkeletonJson.Looks(data));
var joints = AntSkeletonJson.Parse(data);
Assert.Equal(2, joints.Count);
Assert.Equal("AITrajectory", joints[1].Name);
Assert.Equal(0, joints[1].Parent);
}
[Fact]
public void RejectsInvalidParentIndex()
{
var data = Encoding.UTF8.GetBytes(
"""[{"name":"Reference","parent":2}]""");
Assert.Throws<FormatException>(() => AntSkeletonJson.Parse(data));
}
}