diff --git a/testproject/Assets/Tests/Runtime/RpcINetworkSerializable.cs b/testproject/Assets/Tests/Runtime/RpcINetworkSerializable.cs
index 3fcb0e88d1..d860fb3207 100644
--- a/testproject/Assets/Tests/Runtime/RpcINetworkSerializable.cs
+++ b/testproject/Assets/Tests/Runtime/RpcINetworkSerializable.cs
@@ -22,6 +22,9 @@ public class RpcINetworkSerializable
private bool m_FinishedTest;
+ private bool m_IsSendingNull;
+ private bool m_IsArrayEmpty;
+
[SetUp]
public void SetUp()
{
@@ -149,7 +152,48 @@ private void OnClientReceivedUserSerializableClassUpdated(UserSerializableClass
[UnityTest]
public IEnumerator NetworkSerializableArrayTest()
{
+ return NetworkSerializableArrayTestHandler(32);
+ }
+
+ ///
+ /// Tests that an array of the same type of class that implements the
+ /// INetworkSerializable interface can send an empty array
+ ///
+ ///
+ [UnityTest]
+ public IEnumerator NetworkSerializableEmptyArrayTest()
+ {
+ return NetworkSerializableArrayTestHandler(0);
+ }
+
+ ///
+ /// Tests that an array of the same type of class that implements the
+ /// INetworkSerializable interface can send a null value for the array
+ ///
+ ///
+ [UnityTest]
+ public IEnumerator NetworkSerializableNULLArrayTest()
+ {
+ return NetworkSerializableArrayTestHandler(0,true);
+ }
+
+ ///
+ /// Handles the various tests for INetworkSerializable arrays
+ ///
+ /// how many elements
+ /// force to send a null as the array value
+ ///
+ public IEnumerator NetworkSerializableArrayTestHandler(int arraySize, bool sendNullArray = false)
+ {
+ m_IsSendingNull = sendNullArray;
m_FinishedTest = false;
+ m_IsArrayEmpty = false;
+
+ if (arraySize == 0)
+ {
+ m_IsArrayEmpty = true;
+ }
+
var numClients = 1;
var startTime = Time.realtimeSinceStartup;
@@ -199,16 +243,23 @@ public IEnumerator NetworkSerializableArrayTest()
m_UserSerializableClassArray = new List();
- // Create an array of userSerializableClass instances
- for (int i = 0; i < 32; i++)
+ if (!m_IsSendingNull)
{
- var userSerializableClass = new UserSerializableClass();
- //Used for testing order of the array
- userSerializableClass.MyintValue = i;
- m_UserSerializableClassArray.Add(userSerializableClass);
- }
+ // Create an array of userSerializableClass instances
+ for (int i = 0; i < arraySize; i++)
+ {
+ var userSerializableClass = new UserSerializableClass();
+ //Used for testing order of the array
+ userSerializableClass.MyintValue = i;
+ m_UserSerializableClassArray.Add(userSerializableClass);
+ }
- clientSideNetworkBehaviourClass.ClientStartTest(m_UserSerializableClassArray.ToArray());
+ clientSideNetworkBehaviourClass.ClientStartTest(m_UserSerializableClassArray.ToArray());
+ }
+ else
+ {
+ clientSideNetworkBehaviourClass.ClientStartTest(null);
+ }
// Wait until the test has finished or we time out
var timeOutPeriod = Time.realtimeSinceStartup + 5;
@@ -240,12 +291,23 @@ public IEnumerator NetworkSerializableArrayTest()
///
private void ValidateUserSerializableClasses(UserSerializableClass[] userSerializableClass)
{
- var indexCount = 0;
- // Check the order of the array
- foreach (var customTypeEntry in userSerializableClass)
+ if (m_IsSendingNull)
+ {
+ Assert.IsNull(userSerializableClass);
+ }
+ else if (m_IsArrayEmpty)
{
- Assert.AreEqual(customTypeEntry.MyintValue, indexCount);
- indexCount++;
+ Assert.AreEqual(userSerializableClass.Length,0);
+ }
+ else
+ {
+ var indexCount = 0;
+ // Check the order of the array
+ foreach (var customTypeEntry in userSerializableClass)
+ {
+ Assert.AreEqual(customTypeEntry.MyintValue, indexCount);
+ indexCount++;
+ }
}
}