using System; using NUnit.Framework; using UnityEngine; using UnityEngine.Experimental.Perception.Randomization.Parameters; using Object = UnityEngine.Object; namespace RandomizationTests.ParameterTests { [TestFixture] public class StructParameterTests { GameObject m_TestObject; BaseStructParameterTest[] m_Tests; [SetUp] public void Setup() { m_TestObject = new GameObject(); m_Tests = new BaseStructParameterTest[] { new NumericParameterTest(new BooleanParameter()), new NumericParameterTest(new IntegerParameter()), new NumericParameterTest(new FloatParameter()), new NumericParameterTest(new Vector2Parameter()), new NumericParameterTest(new Vector3Parameter()), new NumericParameterTest(new Vector4Parameter()), new NumericParameterTest(new ColorHsvaParameter()), }; } [TearDown] public void TearDown() { Object.DestroyImmediate(m_TestObject); } [Test] public void EquivalentManagedAndNativeSamples() { foreach (var test in m_Tests) test.GeneratesNativeSamples(); } } public abstract class BaseStructParameterTest { public abstract void GeneratesNativeSamples(); } public class NumericParameterTest : BaseStructParameterTest where T : struct { NumericParameter m_Parameter; public NumericParameterTest(NumericParameter parameter) { m_Parameter = parameter; } public override void GeneratesNativeSamples() { var nativeSamples = m_Parameter.Samples(TestValues.TestSampleCount, out var handle); handle.Complete(); Assert.AreEqual(nativeSamples.Length, TestValues.TestSampleCount); nativeSamples.Dispose(); } } }