Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 75 additions & 13 deletions testproject/Assets/Tests/Runtime/RpcINetworkSerializable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ public class RpcINetworkSerializable

private bool m_FinishedTest;

private bool m_IsSendingNull;
private bool m_IsArrayEmpty;

[SetUp]
public void SetUp()
{
Expand Down Expand Up @@ -149,7 +152,48 @@ private void OnClientReceivedUserSerializableClassUpdated(UserSerializableClass
[UnityTest]
public IEnumerator NetworkSerializableArrayTest()
{
return NetworkSerializableArrayTestHandler(32);
}

/// <summary>
/// Tests that an array of the same type of class that implements the
/// INetworkSerializable interface can send an empty array
/// </summary>
/// <returns></returns>
[UnityTest]
public IEnumerator NetworkSerializableEmptyArrayTest()
{
return NetworkSerializableArrayTestHandler(0);
}

/// <summary>
/// Tests that an array of the same type of class that implements the
/// INetworkSerializable interface can send a null value for the array
/// </summary>
/// <returns></returns>
[UnityTest]
public IEnumerator NetworkSerializableNULLArrayTest()
{
return NetworkSerializableArrayTestHandler(0,true);
}

/// <summary>
/// Handles the various tests for INetworkSerializable arrays
/// </summary>
/// <param name="arraySize">how many elements</param>
/// <param name="sendNullArray">force to send a null as the array value</param>
/// <returns></returns>
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;

Expand Down Expand Up @@ -199,16 +243,23 @@ public IEnumerator NetworkSerializableArrayTest()

m_UserSerializableClassArray = new List<UserSerializableClass>();

// 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;
Expand Down Expand Up @@ -240,12 +291,23 @@ public IEnumerator NetworkSerializableArrayTest()
/// <param name="userSerializableClass"></param>
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++;
}
}
}

Expand Down