using LobbyRelaySample; using NUnit.Framework; using System; using System.Text.RegularExpressions; using UnityEngine.TestTools; namespace Test { public class MessengerTests { /// Trivial message recipient that will run some action on any message. private class Subscriber : IReceiveMessages { private Action m_thingToDo; public Subscriber(Action thingToDo) { m_thingToDo = thingToDo; } public void OnReceiveMessage(MessageType type, object msg) { m_thingToDo?.Invoke(); } } /// /// If a message recipient takes a long time to process a message, we want to be made aware. /// [Test] public void WhatIfAMessageIsVerySlow() { Messenger messenger = new Messenger(); int msgCount = 0; string inefficientString = ""; Subscriber sub = new Subscriber(() => { for (int n = 0; n < 12345; n++) inefficientString += n.ToString(); msgCount++; }); messenger.Subscribe(sub); LogAssert.Expect(UnityEngine.LogType.Warning, new Regex(".*took too long.*")); messenger.OnReceiveMessage(MessageType.None, ""); Assert.AreEqual(1, msgCount, "Should have acted on the message."); } } }