This repository has been archived on 2025-04-28. You can view files and clone it, but cannot push or open issues or pull requests.
ARPlusSystem/ARPlusSystem-250418/Library/PackageCache/com.unity.xr.arsubsystems@4.../Tests/Runtime/XRSubsystemTests.cs

140 lines
4.3 KiB
C#
Raw Normal View History

using NUnit.Framework;
using System.Collections.Generic;
namespace UnityEngine.XR.ARSubsystems.Tests
{
public class XRTestSubsystemDescriptor : SubsystemDescriptor<XRTestSubsystem>
{ }
public class XRTestSubsystem : XRSubsystem<XRTestSubsystemDescriptor>
{
public int startCount { get; private set; }
public int stopCount { get; private set; }
public int destroyCount { get; private set; }
protected override void OnStart() => ++startCount;
protected override void OnStop() => ++stopCount;
protected override void OnDestroyed() => ++destroyCount;
}
[TestFixture]
public class XRSubsystemTestFixture
{
static XRTestSubsystem RegisterAndCreate()
{
SubsystemRegistration.CreateDescriptor(new XRTestSubsystemDescriptor
{
id = "Test Subsystem",
subsystemImplementationType = typeof(XRTestSubsystem),
});
var descriptors = new List<XRTestSubsystemDescriptor>();
SubsystemManager.GetSubsystemDescriptors<XRTestSubsystemDescriptor>(descriptors);
return descriptors[0].Create();
}
[Test]
public void IsRunningAfterStartCalled()
{
var subsystem = RegisterAndCreate();
subsystem.Start();
Assert.IsTrue(subsystem.running);
subsystem.Destroy();
}
[Test]
public void IsNotRunningAfterStopCalled()
{
var subsystem = RegisterAndCreate();
subsystem.Start();
subsystem.Stop();
Assert.IsFalse(subsystem.running);
subsystem.Destroy();
}
[Test]
public void DestroyCallsStopWhenRunning()
{
var subsystem = RegisterAndCreate();
subsystem.Start();
Assert.AreEqual(0, subsystem.stopCount);
subsystem.Destroy();
Assert.IsFalse(subsystem.running);
Assert.AreEqual(1, subsystem.stopCount);
}
[Test]
public void DestroyDoesNotCallStopWhenNotRunning()
{
var subsystem = RegisterAndCreate();
subsystem.Start();
subsystem.Stop();
Assert.IsFalse(subsystem.running);
Assert.AreEqual(1, subsystem.stopCount);
subsystem.Destroy();
Assert.AreEqual(1, subsystem.stopCount);
}
[Test]
public void DestroyOnlyCalledOnce()
{
var subsystem = RegisterAndCreate();
Assert.AreEqual(0, subsystem.destroyCount);
subsystem.Destroy();
Assert.AreEqual(1, subsystem.destroyCount);
subsystem.Destroy();
subsystem.Destroy();
subsystem.Destroy();
subsystem.Destroy();
Assert.AreEqual(1, subsystem.destroyCount);
}
[Test]
public void StartOnlyCalledWhenNotRunning()
{
var subsystem = RegisterAndCreate();
Assert.AreEqual(0, subsystem.startCount);
subsystem.Start();
Assert.IsTrue(subsystem.running);
Assert.AreEqual(1, subsystem.startCount);
subsystem.Start();
Assert.IsTrue(subsystem.running);
Assert.AreEqual(1, subsystem.startCount);
subsystem.Stop();
Assert.IsFalse(subsystem.running);
subsystem.Start();
Assert.IsTrue(subsystem.running);
Assert.AreEqual(2, subsystem.startCount);
subsystem.Destroy();
}
[Test]
public void StopOnlyCalledWhenRunning()
{
var subsystem = RegisterAndCreate();
subsystem.Stop();
Assert.AreEqual(0, subsystem.stopCount);
subsystem.Start();
Assert.IsTrue(subsystem.running);
Assert.AreEqual(0, subsystem.stopCount);
subsystem.Stop();
Assert.IsFalse(subsystem.running);
Assert.AreEqual(1, subsystem.stopCount);
subsystem.Stop();
Assert.AreEqual(1, subsystem.startCount);
subsystem.Start();
Assert.IsTrue(subsystem.running);
subsystem.Stop();
Assert.IsFalse(subsystem.running);
Assert.AreEqual(2, subsystem.stopCount);
subsystem.Destroy();
}
}
}