Skip to content

Commit c6a21ad

Browse files
authored
Low hanging fruit tests for coverage. (#5170)
1 parent b2d0956 commit c6a21ad

File tree

3 files changed

+142
-4
lines changed

3 files changed

+142
-4
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/Tests/Editor/Communicator/GrpcExtensionsTests.cs

Lines changed: 100 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,32 @@
710

811
using Unity.MLAgents.Analytics;
912
using Unity.MLAgents.CommunicatorObjects;
13+
using UnityEngine;
14+
using UnityEngine.TestTools;
1015

1116
namespace Unity.MLAgents.Tests
1217
{
1318
[TestFixture]
1419
public class GrpcExtensionsTests
1520
{
21+
[SetUp]
22+
public void SetUp()
23+
{
24+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities();
25+
}
26+
1627
[Test]
1728
public void TestDefaultBrainParametersToProto()
1829
{
1930
// Should be able to convert a default instance to proto.
2031
var brain = new BrainParameters();
2132
brain.ToProto("foo", false);
33+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities
34+
{
35+
BaseRLCapabilities = true,
36+
HybridActions = false
37+
};
38+
brain.ToProto("foo", false);
2239
}
2340

2441
[Test]
@@ -27,22 +44,104 @@ public void TestDefaultActionSpecToProto()
2744
// Should be able to convert a default instance to proto.
2845
var actionSpec = new ActionSpec();
2946
actionSpec.ToBrainParametersProto("foo", false);
47+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities
48+
{
49+
BaseRLCapabilities = true,
50+
HybridActions = false
51+
};
52+
actionSpec.ToBrainParametersProto("foo", false);
3053

54+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities();
3155
// Continuous
3256
actionSpec = ActionSpec.MakeContinuous(3);
3357
actionSpec.ToBrainParametersProto("foo", false);
58+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities
59+
{
60+
BaseRLCapabilities = true,
61+
HybridActions = false
62+
};
63+
actionSpec.ToBrainParametersProto("foo", false);
64+
65+
Academy.Instance.TrainerCapabilities = new UnityRLCapabilities();
3466

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

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

@@ -151,8 +250,6 @@ public void TestGetObservationProtoCapabilities()
151250
Assert.AreEqual(obsProto.CompressedData.Length, 0);
152251
}
153252
}
154-
155-
156253
}
157254

158255
[Test]

com.unity.ml-agents/Tests/Editor/MLAgentsEditModeTest.cs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
using System;
2+
using System.Collections;
3+
using System.Collections.Generic;
24
using UnityEngine;
35
using NUnit.Framework;
46
using System.Reflection;
@@ -11,6 +13,7 @@
1113

1214
namespace Unity.MLAgents.Tests
1315
{
16+
1417
[TestFixture]
1518
public class EditModeTestGeneration
1619
{
@@ -536,6 +539,44 @@ public void TestHeuristicPolicyStepsSensors()
536539
agent1.GetStoredActionBuffers().ContinuousActions[0]
537540
);
538541
}
542+
543+
[Test]
544+
public void TestNullList()
545+
{
546+
var nullList = new HeuristicPolicy.NullList();
547+
Assert.Throws<NotImplementedException>(() =>
548+
{
549+
_ = ((IEnumerable<float>)nullList).GetEnumerator();
550+
});
551+
552+
Assert.Throws<NotImplementedException>(() =>
553+
{
554+
_ = ((IEnumerable)nullList).GetEnumerator();
555+
});
556+
557+
Assert.Throws<NotImplementedException>(() =>
558+
{
559+
nullList.CopyTo(new[] { 0f }, 0);
560+
});
561+
562+
nullList.Add(0);
563+
Assert.IsTrue(nullList.Count == 0);
564+
565+
nullList.Clear();
566+
Assert.IsTrue(nullList.Count == 0);
567+
568+
nullList.Add(0);
569+
Assert.IsFalse(nullList.Contains(0));
570+
Assert.IsFalse(nullList.Remove(0));
571+
Assert.IsFalse(nullList.IsReadOnly);
572+
Assert.IsTrue(nullList.IndexOf(0) == -1);
573+
nullList.Insert(0, 0);
574+
Assert.IsFalse(nullList.Count > 0);
575+
nullList.RemoveAt(0);
576+
Assert.IsTrue(nullList.Count == 0);
577+
Assert.IsTrue(Mathf.Approximately(0f, nullList[0]));
578+
Assert.IsTrue(Mathf.Approximately(0f, nullList[1]));
579+
}
539580
}
540581

541582
[TestFixture]

0 commit comments

Comments
 (0)