您最多选择25个主题 主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

140 行
4.3 KiB

using System.IO;
using System.Text;
using Newtonsoft.Json;
using NUnit.Framework;
using Unity.Mathematics;
using UnityEngine;
using UnityEngine.Perception.GroundTruth;
namespace GroundTruthTests
{
public class DatasetJsonUtilityTests
{
[Test]
[TestCase(-2f, 0f, 3f, @"[
-2.0,
0.0,
3.0
]")]
[TestCase(.01f, .02f, .03f, @"[
0.01,
0.02,
0.03
]")]
[TestCase(float.NegativeInfinity, float.NaN, float.PositiveInfinity, @"[
""-Infinity"",
""NaN"",
""Infinity""
]")]
public void Vector3ToJToken_ReturnsArrayFormat(float x, float y, float z, string jsonExpected)
{
var jsonActual = DatasetJsonUtility.ToJToken(new Vector3(x, y, z));
Assert.AreEqual(TestHelper.NormalizeJson(jsonExpected), TestHelper.NormalizeJson(jsonActual.ToString()));
}
[Test]
[TestCase(-2f, 0f, 3f, 4f, @"[
-2.0,
0.0,
3.0,
4.0
]")]
[TestCase(.01f, .02f, .03f, 0.04f, @"[
0.01,
0.02,
0.03,
0.04
]")]
[TestCase(float.NegativeInfinity, float.NaN, float.PositiveInfinity, float.NaN, @"[
""-Infinity"",
""NaN"",
""Infinity"",
""NaN""
]")]
public void QuaternionToJToken_ReturnsArrayFormat(float x, float y, float z, float w, string jsonExpected)
{
var jsonActual = DatasetJsonUtility.ToJToken(new Quaternion(x, y, z, w)).ToString();
Assert.AreEqual(TestHelper.NormalizeJson(jsonExpected), TestHelper.NormalizeJson(jsonActual));
}
[Test]
[TestCase(0.1f, 0.2f, 0.3f, 4f, 5f, 6f, 70f, 80f, 90f, @"[
[
0.1,
4.0,
70.0
],
[
0.2,
5.0,
80.0
],
[
0.3,
6.0,
90.0
]
]")]
public void Float3x3ToJToken_ReturnsArrayFormat(float m00, float m01, float m02, float m10, float m11, float m12, float m20, float m21, float m22, string jsonExpected)
{
var jsonActual = DatasetJsonUtility.ToJToken(new float3x3(m00, m01, m02, m10, m11, m12, m20, m21, m22)).ToString();
Assert.AreEqual(TestHelper.NormalizeJson(jsonExpected), TestHelper.NormalizeJson(jsonActual));
}
[TestCase(1, "1")]
[TestCase(1u, "1")]
[TestCase(1.0, "1")]
[TestCase(1.0f, "1")]
[TestCase("string", "\"string\"")]
public void Primitive_ReturnsValue(object o, string jsonExpected)
{
var jsonActual = DatasetJsonUtility.ToJToken(o).ToString();
Assert.AreEqual(TestHelper.NormalizeJson(jsonExpected), TestHelper.NormalizeJson(jsonActual));
}
[Test]
[TestCase(1,2,3)]
[TestCase(0,0,0)]
[TestCase(1000, 13000,700)]
[TestCase(1.23f, 4.56f, 7.89f)]
[TestCase(-100, 27.33f, -501.78f)]
public void Vector3Converter_ConvertsProperly(float x, float y, float z)
{
var converter = new SimulationState.Vector3Converter();
var testCase = new Vector3(x,y,z);
var sb = new StringBuilder();
var sw = new StringWriter(sb);
var serializer = JsonSerializer.CreateDefault();
converter.WriteJson(new JsonTextWriter(sw), testCase, serializer);
var str = sb.ToString();
var sr = new StringReader(str);
var converted = converter.ReadJson(new JsonTextReader(sr), typeof(Vector3), Vector3.zero, false, serializer);
Assert.AreEqual(testCase, converted);
}
[Test]
[TestCase(1,2,3, 4)]
[TestCase(0,0,0, 1)]
[TestCase(0, 0.6502878f, 0, -0.7596879f)]
[TestCase(-0.3670137f, -0.1835069f, 0.1223379f, -0.9036922f)]
public void QuaternionConverter_ConvertsProperly(float x, float y, float z, float w)
{
var converter = new SimulationState.QuaternionConverter();
var testCase = new Quaternion(x, y, z, w);
var sb = new StringBuilder();
var sw = new StringWriter(sb);
var serializer = JsonSerializer.CreateDefault();
converter.WriteJson(new JsonTextWriter(sw), testCase, serializer);
var str = sb.ToString();
var sr = new StringReader(str);
var converted = converter.ReadJson(new JsonTextReader(sr), typeof(Quaternion), Quaternion.identity, false, serializer);
Assert.AreEqual(testCase, converted);
}
}
}