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
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using NUnit.Framework;
Expand Down Expand Up @@ -43,21 +44,38 @@ public void Send(ulong clientId, NetworkDelivery delivery, FastBufferWriter batc
}
}

private class TestMessageProvider : IMessageProvider
private class TestMessageProvider : IMessageProvider, IDisposable
Comment thread
NoelStephensUnity marked this conversation as resolved.
{
// Keep track of what we sent
private List<List<MessagingSystem.MessageWithHandler>> m_CachedMessages = new List<List<MessagingSystem.MessageWithHandler>>();

public void Dispose()
{
foreach (var cachedItem in m_CachedMessages)
{
// Clear out any references to MessagingSystem.MessageWithHandlers
cachedItem.Clear();
}
m_CachedMessages.Clear();
}

public List<MessagingSystem.MessageWithHandler> GetMessages()
{
return new List<MessagingSystem.MessageWithHandler>
var messageList = new List<MessagingSystem.MessageWithHandler>
{
new MessagingSystem.MessageWithHandler
{
MessageType = typeof(TestMessage),
Handler = MessagingSystem.ReceiveMessage<TestMessage>
}
};
// Track messages sent
m_CachedMessages.Add(messageList);
return messageList;
}
}

private TestMessageProvider m_TestMessageProvider;
private TestMessageSender m_MessageSender;
private MessagingSystem m_MessagingSystem;
private ulong[] m_Clients = { 0 };
Expand All @@ -66,15 +84,16 @@ private class TestMessageProvider : IMessageProvider
public void SetUp()
{
TestMessage.Serialized = false;

m_MessageSender = new TestMessageSender();
m_MessagingSystem = new MessagingSystem(m_MessageSender, this, new TestMessageProvider());
m_TestMessageProvider = new TestMessageProvider();
m_MessagingSystem = new MessagingSystem(m_MessageSender, this, m_TestMessageProvider);
m_MessagingSystem.ClientConnected(0);
}

[TearDown]
public void TearDown()
{
m_TestMessageProvider.Dispose();
m_MessagingSystem.Dispose();
}

Expand Down Expand Up @@ -246,7 +265,16 @@ private class TestNoHandlerMessageProvider : IMessageProvider
[Test]
public void WhenReceivingAMessageWithoutAHandler_ExceptionIsLogged()
{
// If a MessagingSystem already exists then dispose of it before creating a new MessagingSystem (otherwise memory leak)
if (m_MessagingSystem != null)
{
m_MessagingSystem.Dispose();
m_MessagingSystem = null;
}

// Since m_MessagingSystem is disposed during teardown we don't need to worry about that here.
m_MessagingSystem = new MessagingSystem(new NopMessageSender(), this, new TestNoHandlerMessageProvider());
m_MessagingSystem.ClientConnected(0);

var messageHeader = new MessageHeader
{
Expand Down