|
using NUnit.Framework; |
|
using Unity.Barracuda; |
|
using Unity.MLAgents.Actuators; |
|
using UnityEngine; |
|
using Unity.MLAgents.Policies; |
|
using UnityEditor; |
|
using UnityEngine.TestTools; |
|
|
|
namespace Unity.MLAgents.Tests |
|
{ |
|
[TestFixture] |
|
public class BehaviorParameterTests : IHeuristicProvider |
|
{ |
|
const string k_continuousONNXPath = "Packages/com.unity.ml-agents/Tests/Editor/TestModels/continuous2vis8vec2action_v1_0.onnx"; |
|
public void Heuristic(in ActionBuffers actionsOut) |
|
{ |
|
|
|
} |
|
|
|
[Test] |
|
public void TestNoModelInferenceOnlyThrows() |
|
{ |
|
var gameObj = new GameObject(); |
|
var bp = gameObj.AddComponent<BehaviorParameters>(); |
|
bp.BehaviorType = BehaviorType.InferenceOnly; |
|
var actionSpec = new ActionSpec(); |
|
|
|
Assert.Throws<UnityAgentsException>(() => |
|
{ |
|
bp.GeneratePolicy(actionSpec, new ActuatorManager()); |
|
}); |
|
} |
|
|
|
[Test] |
|
public void TestIsInHeuristicMode() |
|
{ |
|
var gameObj = new GameObject(); |
|
var bp = gameObj.AddComponent<BehaviorParameters>(); |
|
bp.Model = null; |
|
gameObj.AddComponent<Agent>(); |
|
bp.BehaviorType = BehaviorType.HeuristicOnly; |
|
Assert.IsTrue(bp.IsInHeuristicMode()); |
|
|
|
bp.BehaviorType = BehaviorType.Default; |
|
Assert.IsTrue(bp.IsInHeuristicMode()); |
|
|
|
bp.Model = ScriptableObject.CreateInstance<NNModel>(); |
|
Assert.IsFalse(bp.IsInHeuristicMode()); |
|
} |
|
|
|
[Test] |
|
public void TestPolicyUpdateEventFired() |
|
{ |
|
var gameObj = new GameObject(); |
|
var bp = gameObj.AddComponent<BehaviorParameters>(); |
|
gameObj.AddComponent<Agent>().LazyInitialize(); |
|
bp.OnPolicyUpdated += delegate (bool isInHeuristicMode) { Debug.Log($"OnPolicyChanged:{isInHeuristicMode}"); }; |
|
bp.BehaviorType = BehaviorType.HeuristicOnly; |
|
LogAssert.Expect(LogType.Log, $"OnPolicyChanged:{true}"); |
|
|
|
bp.BehaviorType = BehaviorType.Default; |
|
LogAssert.Expect(LogType.Log, $"OnPolicyChanged:{true}"); |
|
|
|
Assert.Throws<UnityAgentsException>(() => |
|
{ |
|
bp.BehaviorType = BehaviorType.InferenceOnly; |
|
}); |
|
|
|
bp.Model = AssetDatabase.LoadAssetAtPath<NNModel>(k_continuousONNXPath); |
|
LogAssert.Expect(LogType.Log, $"OnPolicyChanged:{false}"); |
|
|
|
bp.BehaviorType = BehaviorType.HeuristicOnly; |
|
LogAssert.Expect(LogType.Log, $"OnPolicyChanged:{true}"); |
|
} |
|
} |
|
} |
|
|