| | using System; |
| | using System.Reflection; |
| | using NUnit.Framework; |
| | using UnityEngine; |
| | using Unity.MLAgents.Sensors; |
| |
|
| | namespace Unity.MLAgents.Tests |
| | { |
| | [TestFixture] |
| | public class CameraSensorComponentTest |
| | { |
| | [Test] |
| | public void TestCameraSensorComponent() |
| | { |
| | foreach (var grayscale in new[] { true, false }) |
| | { |
| | foreach (SensorCompressionType compression in Enum.GetValues(typeof(SensorCompressionType))) |
| | { |
| | var width = 24; |
| | var height = 16; |
| | var camera = Camera.main; |
| |
|
| | var agentGameObj = new GameObject("agent"); |
| |
|
| | var cameraComponent = agentGameObj.AddComponent<CameraSensorComponent>(); |
| | cameraComponent.Camera = camera; |
| | cameraComponent.Height = height; |
| | cameraComponent.Width = width; |
| | cameraComponent.Grayscale = grayscale; |
| | cameraComponent.CompressionType = compression; |
| | cameraComponent.RuntimeCameraEnable = true; |
| |
|
| | var sensor = cameraComponent.CreateSensors()[0]; |
| | var expectedShape = new InplaceArray<int>(height, width, grayscale ? 1 : 3); |
| | Assert.AreEqual(expectedShape, sensor.GetObservationSpec().Shape); |
| | Assert.AreEqual(typeof(CameraSensor), sensor.GetType()); |
| |
|
| | var flags = BindingFlags.Instance | BindingFlags.NonPublic; |
| | var runtimeCameraEnabled = (bool)typeof(CameraSensorComponent).GetField("m_RuntimeCameraEnable", flags).GetValue(cameraComponent); |
| | Assert.True(runtimeCameraEnabled); |
| |
|
| | |
| | cameraComponent.Dispose(); |
| | var cameraComponentSensor = (CameraSensor)typeof(CameraSensorComponent).GetField("m_Sensor", flags).GetValue(cameraComponent); |
| | Assert.IsNull(cameraComponentSensor); |
| | var cameraTexture = (Texture2D)typeof(CameraSensor).GetField("m_Texture", flags).GetValue(sensor); |
| | Assert.IsNull(cameraTexture); |
| | } |
| | } |
| | } |
| | } |
| | } |
| |
|