Skip to content

Commit 1845bad

Browse files
committed
Low hanging fruit tests for coverage.
1 parent 38dffbc commit 1845bad

File tree

4 files changed

+310
-10
lines changed

4 files changed

+310
-10
lines changed

com.unity.ml-agents/Runtime/Policies/HeuristicPolicy.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public void Dispose()
6060
/// Trivial implementation of the IList interface that does nothing.
6161
/// This is only used for "writing" observations that we will discard.
6262
/// </summary>
63-
class NullList : IList<float>
63+
internal class NullList : IList<float>
6464
{
6565
public IEnumerator<float> GetEnumerator()
6666
{

com.unity.ml-agents/Runtime/Policies/RemotePolicy.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
21
using System.Collections.Generic;
2+
using System.Diagnostics;
33
using Unity.MLAgents.Actuators;
44
using Unity.MLAgents.Sensors;
55
using Unity.MLAgents.Analytics;
@@ -17,7 +17,9 @@ internal class RemotePolicy : IPolicy
1717
string m_FullyQualifiedBehaviorName;
1818
ActionSpec m_ActionSpec;
1919
ActionBuffers m_LastActionBuffer;
20+
#if MLA_UNITY_ANALYTICS_MODULE
2021
private bool m_AnalyticsSent = false;
22+
#endif
2123

2224
internal ICommunicator m_Communicator;
2325

@@ -41,6 +43,14 @@ public RemotePolicy(
4143

4244
/// <inheritdoc />
4345
public void RequestDecision(AgentInfo info, List<ISensor> sensors)
46+
{
47+
SendAnalytics(sensors);
48+
m_AgentId = info.episodeId;
49+
m_Communicator?.PutObservations(m_FullyQualifiedBehaviorName, info, sensors);
50+
}
51+
52+
[Conditional("MLA_UNITY_ANALYTICS_MODULE")]
53+
void SendAnalytics(IList<ISensor> sensors)
4454
{
4555
if (!m_AnalyticsSent)
4656
{
@@ -52,8 +62,6 @@ public void RequestDecision(AgentInfo info, List<ISensor> sensors)
5262
m_Actuators
5363
);
5464
}
55-
m_AgentId = info.episodeId;
56-
m_Communicator?.PutObservations(m_FullyQualifiedBehaviorName, info, sensors);
5765
}
5866

5967
/// <inheritdoc />

com.unity.ml-agents/Tests/Editor/Communicator/GrpcExtensionsTests.cs

Lines changed: 102 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
using System;
2+
using System.Text.RegularExpressions;
3+
using Google.Protobuf;
4+
using Google.Protobuf.Collections;
25
using NUnit.Framework;
36
using Unity.MLAgents.Actuators;
47
using Unity.MLAgents.Demonstrations;
@@ -7,18 +10,33 @@
710

811
using Unity.MLAgents.Analytics;
912
using Unity.MLAgents.CommunicatorObjects;
13+
using UnityEditor.VersionControl;
14+
using UnityEngine;
15+
using UnityEngine.TestTools;
1016

1117
namespace Unity.MLAgents.Tests
1218
{
1319
[TestFixture]
1420
public class GrpcExtensionsTests
1521
{
22+
[SetUp]
23+
public void SetUp()
24+
{
25+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities();
26+
}
27+
1628
[Test]
1729
public void TestDefaultBrainParametersToProto()
1830
{
1931
// Should be able to convert a default instance to proto.
2032
var brain = new BrainParameters();
2133
brain.ToProto("foo", false);
34+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities
35+
{
36+
BaseRLCapabilities = true,
37+
HybridActions = false
38+
};
39+
brain.ToProto("foo", false);
2240
}
2341

2442
[Test]
@@ -27,22 +45,104 @@ public void TestDefaultActionSpecToProto()
2745
// Should be able to convert a default instance to proto.
2846
var actionSpec = new ActionSpec();
2947
actionSpec.ToBrainParametersProto("foo", false);
48+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities
49+
{
50+
BaseRLCapabilities = true,
51+
HybridActions = false
52+
};
53+
actionSpec.ToBrainParametersProto("foo", false);
3054

55+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities();
3156
// Continuous
3257
actionSpec = ActionSpec.MakeContinuous(3);
3358
actionSpec.ToBrainParametersProto("foo", false);
59+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities
60+
{
61+
BaseRLCapabilities = true,
62+
HybridActions = false
63+
};
64+
actionSpec.ToBrainParametersProto("foo", false);
65+
66+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities();
3467

3568
// Discrete
3669
actionSpec = ActionSpec.MakeDiscrete(1, 2, 3);
3770
actionSpec.ToBrainParametersProto("foo", false);
71+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities
72+
{
73+
BaseRLCapabilities = true,
74+
HybridActions = false
75+
};
76+
actionSpec.ToBrainParametersProto("foo", false);
77+
}
78+
79+
[Test]
80+
public void ToBrainParameters()
81+
{
82+
// Should be able to convert a default instance to proto.
83+
var actionSpec = new ActionSpec();
84+
actionSpec.ToBrainParametersProto("foo", false).ToBrainParameters();
85+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities
86+
{
87+
BaseRLCapabilities = true,
88+
HybridActions = false
89+
};
90+
actionSpec.ToBrainParametersProto("foo", false).ToBrainParameters();
91+
92+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities();
93+
// Continuous
94+
actionSpec = ActionSpec.MakeContinuous(3);
95+
actionSpec.ToBrainParametersProto("foo", false).ToBrainParameters();
96+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities
97+
{
98+
BaseRLCapabilities = true,
99+
HybridActions = false
100+
};
101+
actionSpec.ToBrainParametersProto("foo", false).ToBrainParameters();
102+
103+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities();
104+
105+
// Discrete
106+
actionSpec = ActionSpec.MakeDiscrete(1, 2, 3);
107+
actionSpec.ToBrainParametersProto("foo", false).ToBrainParameters();
108+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities
109+
{
110+
BaseRLCapabilities = true,
111+
HybridActions = false
112+
};
113+
actionSpec.ToBrainParametersProto("foo", false).ToBrainParameters();
38114
}
39115

40116
[Test]
41117
public void TestDefaultAgentInfoToProto()
42118
{
43119
// Should be able to convert a default instance to proto.
44120
var agentInfo = new AgentInfo();
45-
agentInfo.ToInfoActionPairProto();
121+
var pairProto = agentInfo.ToInfoActionPairProto();
122+
pairProto.AgentInfo.Observations.Add(new ObservationProto
123+
{
124+
CompressedData = ByteString.Empty,
125+
CompressionType = CompressionTypeProto.None,
126+
FloatData = new ObservationProto.Types.FloatData(),
127+
ObservationType = ObservationTypeProto.Default,
128+
Name = "Sensor"
129+
});
130+
pairProto.AgentInfo.Observations[0].Shape.Add(0);
131+
pairProto.GetObservationSummaries();
132+
agentInfo.ToAgentInfoProto();
133+
agentInfo.groupId = 1;
134+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities
135+
{
136+
BaseRLCapabilities = true,
137+
MultiAgentGroups = false
138+
};
139+
agentInfo.ToAgentInfoProto();
140+
LogAssert.Expect(LogType.Warning, new Regex(".+"));
141+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities
142+
{
143+
BaseRLCapabilities = true,
144+
MultiAgentGroups = true
145+
};
46146
agentInfo.ToAgentInfoProto();
47147
}
48148

@@ -164,8 +264,6 @@ public void TestGetObservationProtoCapabilities()
164264
Assert.AreEqual(obsProto.CompressedData.Length, 0);
165265
}
166266
}
167-
168-
169267
}
170268

171269
[Test]
@@ -185,6 +283,7 @@ public void TestIsTrivialMapping()
185283
sparseChannelSensor.Mapping = new[] { 0, 0, 0, 1, 1, 1 };
186284
Assert.AreEqual(GrpcExtensions.IsTrivialMapping(sparseChannelSensor), false);
187285
}
286+
188287
[Test]
189288
public void TestDefaultTrainingEvents()
190289
{

0 commit comments

Comments
 (0)