using System;
using NUnit.Framework;
using Unity.PerformanceTesting;
using UnityEngine.Events;
public class CSEventTests
{
private event Action<int> _event;
private void Setup () => _event = default;
private void Teardown () => _event = default;
private void SubscribeEvent ()
{
_event += NoOpInt;
_event += IncrementInt;
_event += NoOpAction;
}
private void UnsubscribeEvent ()
{
_event -= NoOpInt;
_event -= IncrementInt;
_event -= NoOpAction;
}
[Test, Performance]
public void Subscribe () => Measure.Method(SubscribeEvent).WarmupCount(5).MeasurementCount(100).SetUp(Setup).CleanUp(Teardown).Run();
[Test, Performance]
public void Unsubscribe ()
{
Measure.Method(UnsubscribeEvent).WarmupCount(5).MeasurementCount(100).SetUp(() => { Setup(); SubscribeEvent(); }).CleanUp(Teardown).Run();
}
[Test, Performance]
public void Invoke ()
{
Measure.Method(() => _event.Invoke(0)).WarmupCount(5).MeasurementCount(100).SetUp(() => { Setup(); SubscribeEvent(); }).CleanUp(Teardown).Run();
}
private Action<int> NoOpAction = _ => NoOp();
private static void NoOp () { }
private void NoOpInt (int i) { }
private void IncrementInt (int i) { i++; }
}