ppo-Pyramids-Training
/
com.unity.ml-agents.extensions
/Tests
/Runtime
/Input
/InputActionActuatorTests.cs
using NUnit.Framework; | |
using Unity.Barracuda; | |
using Unity.MLAgents.Actuators; | |
using Unity.MLAgents.Extensions.Input; | |
using Unity.MLAgents.Policies; | |
using UnityEngine; | |
using UnityEngine.InputSystem; | |
using UnityEngine.InputSystem.LowLevel; | |
namespace Unity.MLAgents.Extensions.Tests.Runtime.Input | |
{ | |
class TestAdaptor : IRLActionInputAdaptor | |
{ | |
public bool eventWritten; | |
public bool writtenToHeuristic; | |
public ActionSpec GetActionSpecForInputAction(InputAction action) | |
{ | |
return ActionSpec.MakeContinuous(1); | |
} | |
public void WriteToInputEventForAction(InputEventPtr eventPtr, InputAction action, InputControl control, ActionSpec actionSpec, in ActionBuffers actionBuffers) | |
{ | |
eventWritten = true; | |
} | |
public void WriteToHeuristic(InputAction action, in ActionBuffers actionBuffers) | |
{ | |
writtenToHeuristic = true; | |
} | |
public void Reset() | |
{ | |
eventWritten = false; | |
writtenToHeuristic = false; | |
} | |
} | |
[ | ]|
public class InputActionActuatorTests | |
{ | |
BehaviorParameters m_BehaviorParameters; | |
InputActionActuator m_Actuator; | |
TestAdaptor m_Adaptor; | |
[ | ]|
public void Setup() | |
{ | |
var go = new GameObject(); | |
m_BehaviorParameters = go.AddComponent<BehaviorParameters>(); | |
var action = new InputAction("action"); | |
m_Adaptor = new TestAdaptor(); | |
m_Actuator = new InputActionActuator(null, m_BehaviorParameters, action, m_Adaptor, new InputActuatorEventContext(1, InputSystem.AddDevice<Gamepad>())); | |
} | |
[ | ]|
public void TestOnActionReceived() | |
{ | |
m_BehaviorParameters.BehaviorType = BehaviorType.HeuristicOnly; | |
m_Actuator.OnActionReceived(new ActionBuffers()); | |
m_Actuator.Heuristic(new ActionBuffers()); | |
Assert.IsFalse(m_Adaptor.eventWritten); | |
Assert.IsTrue(m_Adaptor.writtenToHeuristic); | |
m_Adaptor.Reset(); | |
m_BehaviorParameters.BehaviorType = BehaviorType.Default; | |
m_Actuator.OnActionReceived(new ActionBuffers()); | |
Assert.IsFalse(m_Adaptor.eventWritten); | |
m_Adaptor.Reset(); | |
m_BehaviorParameters.Model = ScriptableObject.CreateInstance<NNModel>(); | |
m_Actuator.OnActionReceived(new ActionBuffers()); | |
Assert.IsTrue(m_Adaptor.eventWritten); | |
m_Adaptor.Reset(); | |
Assert.AreEqual(m_Actuator.Name, "InputActionActuator-action"); | |
m_Actuator.ResetData(); | |
m_Actuator.WriteDiscreteActionMask(null); | |
} | |
} | |
} | |