SW 중심대학 OSS GIT 서버 박건태, 이승준, 고기완, 이준호 새로운 배포
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

139 lines
4.3 KiB

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();
}
}
}