51 lines
1.6 KiB
C#
51 lines
1.6 KiB
C#
using System;
|
|
using System.Collections;
|
|
using UnityEngine;
|
|
using UnityEngine.TestTools;
|
|
using NUnit.Framework;
|
|
|
|
namespace MLAPI.RuntimeTests
|
|
{
|
|
public class TickSystemTests: IDisposable
|
|
{
|
|
private NetworkTickSystem m_TickSystem = null;
|
|
private float m_TestDuration = 3.0f;
|
|
private float m_SleepInterval = 0.001f;
|
|
private float m_TickInterval = 0.010f;
|
|
|
|
public void Dispose()
|
|
{
|
|
m_TickSystem.Dispose();
|
|
m_TickSystem = null;
|
|
NetworkUpdateLoop.UnregisterLoopSystems();
|
|
}
|
|
|
|
[UnityTest]
|
|
public IEnumerator VerifyTickSystem()
|
|
{
|
|
m_TickSystem = new NetworkTickSystem(m_TickInterval);
|
|
|
|
var startTick = m_TickSystem.GetTick();
|
|
var startTime = Time.unscaledTime;
|
|
|
|
var lastTick = startTick;
|
|
do
|
|
{
|
|
var currentTick = m_TickSystem.GetTick();
|
|
Assert.IsTrue(currentTick >= lastTick); // check monotonicity of ticks
|
|
lastTick = currentTick;
|
|
|
|
yield return new WaitForSeconds(m_SleepInterval);
|
|
} while (Time.unscaledTime - startTime <= m_TestDuration);
|
|
|
|
var endTick = m_TickSystem.GetTick();
|
|
var endTime = Time.unscaledTime;
|
|
|
|
var elapsedTicks = endTick - startTick;
|
|
var elapsedTime = endTime - startTime;
|
|
|
|
var elapsedTicksExpected = (int)(elapsedTime / m_TickInterval);
|
|
Assert.Less(Math.Abs(elapsedTicksExpected - elapsedTicks), 2); // +/- 1 is OK
|
|
}
|
|
}
|
|
}
|