浏览代码

All tests pass

/solo_support
Steve Borkman 3 年前
当前提交
e7cb126c
共有 6 个文件被更改,包括 105 次插入30 次删除
  1. 3
      com.unity.perception/Runtime/GroundTruth/DatasetCapture.cs
  2. 16
      com.unity.perception/Tests/Runtime/GroundTruthTests/BoundingBox3dTests.cs
  3. 22
      com.unity.perception/Tests/Runtime/GroundTruthTests/DatasetCaptureSensorSchedulingTests.cs
  4. 60
      com.unity.perception/Tests/Runtime/GroundTruthTests/PerceptionCameraIntegrationTests.cs
  5. 24
      com.unity.perception/Tests/Runtime/GroundTruthTests/SegmentationGroundTruthTests.cs
  6. 10
      com.unity.perception/Tests/Runtime/GroundTruthTests/VisualizationTests.cs

3
com.unity.perception/Runtime/GroundTruth/DatasetCapture.cs


var old = m_ActiveSimulation;
m_ShuttingDownSimulations.Add(old);
old.End();
m_ReadyToShutdown = true;
m_ReadyToShutdown = true;
m_ActiveSimulation = CreateSimulationData();
}

16
com.unity.perception/Tests/Runtime/GroundTruthTests/BoundingBox3dTests.cs


[UnityTest]
public IEnumerator CameraOffset_ProduceProperTranslationTest()
{
DatasetCapture.Instance.automaticShutdown = false;
var expected = new[]
{
new ExpectedResult

[UnityTest]
public IEnumerator CameraOffsetAndRotated_ProduceProperTranslationTest()
{
DatasetCapture.Instance.automaticShutdown = false;
var expected = new[]
{
new ExpectedResult

[UnityTest]
public IEnumerator SimpleMultiMesh_ProduceProperTranslationTest()
{
DatasetCapture.Instance.automaticShutdown = false;
var expected = new[]
{
new ExpectedResult

[UnityTest]
public IEnumerator ParentedObject_ProduceProperResults([ValueSource(nameof(ParentedObject_ProduceProperResults_Values))] ParentedTestData parentedTestData)
{
DatasetCapture.Instance.automaticShutdown = false;
var expected = new[]
{
new ExpectedResult

[UnityTest]
public IEnumerator MultiInheritedMesh_ProduceProperTranslationTest()
{
DatasetCapture.Instance.automaticShutdown = false;
var expected = new[]
{
new ExpectedResult

[UnityTest]
public IEnumerator MultiInheritedMeshDifferentLabels_ProduceProperTranslationTest()
{
DatasetCapture.Instance.automaticShutdown = false;
var wheelScale = new Vector3(0.7f, 2.0f, 0.7f);
var wheelRot = Quaternion.Euler(0, 0, 90);

[UnityTest]
public IEnumerator TestOcclusion_Seen()
{
DatasetCapture.Instance.automaticShutdown = false;
var target = TestHelper.CreateLabeledCube(scale: 15f, z: 50f);
return ExecuteSeenUnseenTest(target, Vector3.zero, quaternion.identity, 1);
}

{
DatasetCapture.Instance.automaticShutdown = false;
var target = TestHelper.CreateLabeledCube(scale: 15f, z: -50f);
return ExecuteSeenUnseenTest(target, Vector3.zero, quaternion.identity, 0);
}

22
com.unity.perception/Tests/Runtime/GroundTruthTests/DatasetCaptureSensorSchedulingTests.cs


internal SimulationStateTestHelper()
{
DatasetCapture.Instance.automaticShutdown = false;
m_State = DatasetCapture.Instance.currentSimulation;
var bindingFlags = BindingFlags.NonPublic | BindingFlags.Instance;
m_SequenceTimeOfNextCaptureMethod = m_State.GetType().GetMethod("GetSequenceTimeOfNextCapture", bindingFlags);

[UnityTest]
public IEnumerator SequenceTimeOfNextCapture_ReportsCorrectTime()
{
DatasetCapture.Instance.automaticShutdown = false;
var firstCaptureFrame = 2;
var simulationDeltaTime = .4f;

[UnityTest]
public IEnumerator SequenceTimeOfNextCapture_WithInBetweenFrames_ReportsCorrectTime()
{
DatasetCapture.Instance.automaticShutdown = false;
var firstCaptureFrame = 2;
var simulationDeltaTime = .4f;
var framesBetweenCaptures = 2;

[UnityTest]
public IEnumerator FramesScheduledBySensorConfig()
{
DatasetCapture.Instance.automaticShutdown = false;
var firstCaptureFrame = 2;
var simulationDeltaTime = .4f;

[UnityTest]
public IEnumerator FramesScheduled_WithTimeScale_ResultsInProperDeltaTime()
{
DatasetCapture.Instance.automaticShutdown = false;
var firstCaptureFrame = 2;
var simulationDeltaTime = 1f;
var timeScale = 2;

[UnityTest]
public IEnumerator ChangingTimeScale_CausesDebugError()
{
DatasetCapture.Instance.automaticShutdown = false;
DatasetCapture.Instance.RegisterSensor(CreateSensorDefinition("cam", "", "", 2, CaptureTriggerMode.Scheduled, 1, 0));
yield return null;

[UnityTest]
public IEnumerator ChangingTimeScale_DuringStartNewSequence_Succeeds()
{
DatasetCapture.Instance.automaticShutdown = false;
DatasetCapture.Instance.RegisterSensor(CreateSensorDefinition("cam", "", "", 2, CaptureTriggerMode.Scheduled, 1, 0));
yield return null;

[UnityTest]
public IEnumerator FramesScheduled_WithChangingTimeScale_ResultsInProperDeltaTime()
{
DatasetCapture.Instance.automaticShutdown = false;
var firstCaptureFrame = 2;
var simulationDeltaTime = 1f;
float[] newTimeScalesPerFrame =

[UnityTest]
public IEnumerator ResetSimulation_ResetsCaptureDeltaTime()
{
DatasetCapture.Instance.automaticShutdown = false;
DatasetCapture.Instance.RegisterSensor(CreateSensorDefinition("cam", "", "", 0, CaptureTriggerMode.Scheduled, 5, 0));
yield return null;
Assert.AreEqual(5, Time.captureDeltaTime);

[UnityTest]
public IEnumerator ShouldCaptureFlagsAndRenderTimesAreCorrectWithMultipleSensors()
{
DatasetCapture.Instance.automaticShutdown = false;
var firstCaptureFrame1 = 2;
var simDeltaTime1 = 4;
var framesBetweenCaptures1 = 2;

[TestCase(235, 10, 2350, 2585, 2820, 3055, ExpectedResult = (IEnumerator)null)]
public IEnumerator SequenceTimeOfNextCapture_ReportsCorrectTime_VariedDeltaTimesAndStartFrames(float simulationDeltaTime, int firstCaptureFrame, float firstCaptureTime, float secondCaptureTime, float thirdCaptureTime, float fourthCaptureTime)
{
DatasetCapture.Instance.automaticShutdown = false;
var sensorHandle = DatasetCapture.Instance.RegisterSensor(CreateSensorDefinition("cam", "", "", firstCaptureFrame, CaptureTriggerMode.Scheduled, simulationDeltaTime, 0));

[UnityTest]
public IEnumerator SequenceTimeOfManualCapture_ReportsCorrectTime_ManualSensorDoesNotAffectTimings()
{
DatasetCapture.Instance.automaticShutdown = false;
var sensorHandle = DatasetCapture.Instance.RegisterSensor(CreateSensorDefinition("cam", "", "", 0, CaptureTriggerMode.Manual, 0, 0, false));
var framesToCaptureOn = new List<int>();

[UnityTest]
public IEnumerator SequenceTimeOfManualCapture_ReportsCorrectTime_ManualSensorAffectsTimings()
{
DatasetCapture.Instance.automaticShutdown = false;
var simulationDeltaTime = 0.05f;
var sensorHandle = DatasetCapture.Instance.RegisterSensor(CreateSensorDefinition("cam", "", "", 0, CaptureTriggerMode.Manual, simulationDeltaTime, 0, true));

60
com.unity.perception/Tests/Runtime/GroundTruthTests/PerceptionCameraIntegrationTests.cs


using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEngine.Perception.GroundTruth.DataModel;
using UnityEngine.TestTools;
#if MOQ_PRESENT

[UnityTest]
public IEnumerator EnableSemanticSegmentation_GeneratesCorrectDataset([Values(true, false)] bool enabled)
{
SimulationState.TimeOutFrameCount = 50;
var collector = new CollectEndpoint();
DatasetCapture.SetEndpoint(collector);
DatasetCapture.Instance.automaticShutdown = false;

pc.AddLabeler(semanticSegmentationLabeler);
}, enabled);
string expectedImageFilename = $"segmentation_{Time.frameCount}.png";
this.AddTestObjectForCleanup(TestHelper.CreateLabeledPlane());
AddTestObjectForCleanup(TestHelper.CreateLabeledPlane());
yield return null;
DatasetCapture.Instance.ResetSimulation();

// What should I test for here...
Assert.NotZero(0);
// if (enabled)
// {
// var capturesPath = Path.Combine(DatasetCapture.OutputDirectory, "captures_000.json");
// var capturesJson = File.ReadAllText(capturesPath);
// var imagePath = $"{semanticSegmentationLabeler.semanticSegmentationDirectory}/{expectedImageFilename}";
// StringAssert.Contains(imagePath, capturesJson);
// }
// else
// {
// DirectoryAssert.DoesNotExist(DatasetCapture.OutputDirectory);
// }
if (enabled)
{
Assert.NotNull(collector.currentRun);
Assert.AreEqual(1, collector.currentRun.frames.Count);
Assert.AreEqual(1, collector.currentRun.frames[0].sensors.Count());
var rgb = collector.currentRun.frames[0].sensors.First() as RgbSensor;
Assert.NotNull(rgb);
Assert.AreEqual(1, rgb.annotations.Count());
var ann = rgb.annotations.First() as SemanticSegmentationLabeler.SemanticSegmentation;
Assert.NotNull(ann);
Assert.NotZero(ann.buffer.Length);
}
else
{
Assert.Null(collector.currentRun.frames);
}
}
[UnityTest]

pc.AddLabeler(semanticSegmentationLabeler);
});
string expectedImageFilename = $"segmentation_{Time.frameCount}.png";
this.AddTestObjectForCleanup(TestHelper.CreateLabeledPlane());
AddTestObjectForCleanup(TestHelper.CreateLabeledPlane());
yield return null;
DatasetCapture.Instance.ResetSimulation();

// What should I test for here...
Assert.NotZero(0);
// var capturesPath = Path.Combine(DatasetCapture.OutputDirectory, "captures_000.json");
// var capturesJson = File.ReadAllText(capturesPath);
// var imagePath = $"{semanticSegmentationLabeler.semanticSegmentationDirectory}/{expectedImageFilename}";
// StringAssert.Contains(imagePath, capturesJson);
Assert.NotNull(collector.currentRun);
Assert.AreEqual(1, collector.currentRun.frames.Count);
Assert.AreEqual(1, collector.currentRun.frames[0].sensors.Count());
var rgb = collector.currentRun.frames[0].sensors.First() as RgbSensor;
Assert.NotNull(rgb);
Assert.AreEqual(1, rgb.annotations.Count());
var ann = rgb.annotations.First() as SemanticSegmentationLabeler.SemanticSegmentation;
Assert.NotNull(ann);
Assert.NotZero(ann.buffer.Length);
}
static IdLabelConfig CreateLabelingConfiguration()

24
com.unity.perception/Tests/Runtime/GroundTruthTests/SegmentationGroundTruthTests.cs


[Values(RendererType.MeshRenderer, RendererType.SkinnedMeshRenderer, RendererType.Terrain)] RendererType rendererType,
[Values(SegmentationKind.Instance, SegmentationKind.Semantic)] SegmentationKind segmentationKind)
{
DatasetCapture.Instance.automaticShutdown = false;
int timesSegmentationImageReceived = 0;
int? frameStart = null;
GameObject cameraObject = null;

[UnityTest]
public IEnumerator SemanticSegmentationPass_WithLensDistortion()
{
DatasetCapture.Instance.automaticShutdown = false;
GameObject cameraObject = null;
PerceptionCamera perceptionCamera;
var fLensDistortionEnabled = false;

[UnityTest]
public IEnumerator SemanticSegmentationPass_WithLabeledButNotMatchingObject_ProducesBlack()
{
DatasetCapture.Instance.automaticShutdown = false;
int timesSegmentationImageReceived = 0;
var expectedPixelValue = new Color32(0, 0, 0, 255);
void OnSegmentationImageReceived(NativeArray<Color32> data)

[UnityTest]
public IEnumerator SemanticSegmentationPass_WithMatchingButDisabledLabel_ProducesBlack()
{
DatasetCapture.Instance.automaticShutdown = false;
int timesSegmentationImageReceived = 0;
var expectedPixelValue = new Color32(0, 0, 0, 255);
void OnSegmentationImageReceived(NativeArray<Color32> data)

[UnityTest]
public IEnumerator InstanceSegmentationPass_WithMatchingButDisabledLabel_ProducesBlack()
{
DatasetCapture.Instance.automaticShutdown = false;
int timesSegmentationImageReceived = 0;
var expectedPixelValue = new Color32(0, 0, 0, 255);
void OnSegmentationImageReceived(NativeArray<Color32> data)

[UnityTest]
public IEnumerator SemanticSegmentationPass_WithEmptyFrame_ProducesSky([Values(false, true)] bool showVisualizations)
{
DatasetCapture.Instance.automaticShutdown = false;
int timesSegmentationImageReceived = 0;
var expectedPixelValue = k_SkyValue;
void OnSegmentationImageReceived(NativeArray<Color32> data)

[UnityTest]
public IEnumerator SemanticSegmentationPass_WithNoObjects_ProducesSky()
{
DatasetCapture.Instance.automaticShutdown = false;
int timesSegmentationImageReceived = 0;
var expectedPixelValue = k_SkyValue;
void OnSegmentationImageReceived(NativeArray<Color32> data)

[UnityTest]
public IEnumerator SemanticSegmentationPass_WithTextureOverride_RendersToOverride([Values(true, false)] bool showVisualizations)
{
DatasetCapture.Instance.automaticShutdown = false;
var expectedPixelValue = new Color32(0, 0, 255, 255);
var targetTextureOverride = new RenderTexture(2, 2, 1, RenderTextureFormat.R8);

[UnityTest]
public IEnumerator SemanticSegmentationPass_WithMultiMaterial_ProducesCorrectValues([Values(true, false)] bool showVisualizations)
{
DatasetCapture.Instance.automaticShutdown = false;
int timesSegmentationImageReceived = 0;
var expectedPixelValue = k_SemanticPixelValue;
void OnSegmentationImageReceived(NativeArray<Color32> data)

[UnityTest]
public IEnumerator SemanticSegmentationPass_WithChangingLabeling_ProducesCorrectValues([Values(true, false)] bool showVisualizations)
{
DatasetCapture.Instance.automaticShutdown = false;
int timesSegmentationImageReceived = 0;
var expectedPixelValue = k_SemanticPixelValue;
void OnSegmentationImageReceived(NativeArray<Color32> data)

[UnityTest]
public IEnumerator InstanceSegmentationPass_WithSeparateDisabledPerceptionCamera_ProducesCorrectValues()
{
DatasetCapture.Instance.automaticShutdown = false;
int timesSegmentationImageReceived = 0;
void OnSegmentationImageReceived(NativeArray<Color32> data)
{

public IEnumerator SegmentationPassProducesCorrectValuesEachFrame(
[Values(SegmentationKind.Instance, SegmentationKind.Semantic)] SegmentationKind segmentationKind)
{
DatasetCapture.Instance.automaticShutdown = false;
int timesSegmentationImageReceived = 0;
Dictionary<int, object> expectedLabelAtFrame = null;

10
com.unity.perception/Tests/Runtime/GroundTruthTests/VisualizationTests.cs


[UnityTest]
public IEnumerator VisualizedCamera_SetsUpCanvas()
{
DatasetCapture.Instance.automaticShutdown = false;
var object1 = SetupCameraSemanticSegmentation(nameof(VisualizedCamera_SetsUpCanvas));
object1.SetActive(true);
AddTestObjectForCleanup(object1);

[UnityTest]
public IEnumerator TwoCamerasVisualizing_CausesWarningAndDisablesVisualization()
{
DatasetCapture.Instance.automaticShutdown = false;
var object1 = new GameObject();
object1.name = nameof(TwoCamerasVisualizing_CausesWarningAndDisablesVisualization);
object1.SetActive(false);

[UnityTest]
public IEnumerator DestroyCamera_RemovesVisualization()
{
DatasetCapture.Instance.automaticShutdown = false;
var object1 = SetupCameraSemanticSegmentation(nameof(DestroyCamera_RemovesVisualization));
object1.SetActive(true);
AddTestObjectForCleanup(object1);

[UnityTest]
public IEnumerator DestroyAndRecreateCamera_ProperlyVisualizes()
{
DatasetCapture.Instance.automaticShutdown = false;
var object1 = SetupCameraSemanticSegmentation(nameof(DestroyAndRecreateCamera_ProperlyVisualizes));
object1.SetActive(true);
AddTestObjectForCleanup(object1);

[UnityTest]
public IEnumerator TwoLabelersOfSameType_ProperlyStoredInHud()
{
DatasetCapture.Instance.automaticShutdown = false;
var label = "label";
var planeObject = TestHelper.CreateLabeledPlane(.1f, label);
AddTestObjectForCleanup(planeObject);

正在加载...
取消
保存