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

4 years ago
  1. using NUnit.Framework;
  2. using System.Collections.Generic;
  3. namespace UnityEngine.XR.ARSubsystems.Tests
  4. {
  5. public class XRTestSubsystemDescriptor : SubsystemDescriptor<XRTestSubsystem>
  6. { }
  7. public class XRTestSubsystem : XRSubsystem<XRTestSubsystemDescriptor>
  8. {
  9. public int startCount { get; private set; }
  10. public int stopCount { get; private set; }
  11. public int destroyCount { get; private set; }
  12. protected override void OnStart() => ++startCount;
  13. protected override void OnStop() => ++stopCount;
  14. protected override void OnDestroyed() => ++destroyCount;
  15. }
  16. [TestFixture]
  17. public class XRSubsystemTestFixture
  18. {
  19. static XRTestSubsystem RegisterAndCreate()
  20. {
  21. SubsystemRegistration.CreateDescriptor(new XRTestSubsystemDescriptor
  22. {
  23. id = "Test Subsystem",
  24. subsystemImplementationType = typeof(XRTestSubsystem),
  25. });
  26. var descriptors = new List<XRTestSubsystemDescriptor>();
  27. SubsystemManager.GetSubsystemDescriptors<XRTestSubsystemDescriptor>(descriptors);
  28. return descriptors[0].Create();
  29. }
  30. [Test]
  31. public void IsRunningAfterStartCalled()
  32. {
  33. var subsystem = RegisterAndCreate();
  34. subsystem.Start();
  35. Assert.IsTrue(subsystem.running);
  36. subsystem.Destroy();
  37. }
  38. [Test]
  39. public void IsNotRunningAfterStopCalled()
  40. {
  41. var subsystem = RegisterAndCreate();
  42. subsystem.Start();
  43. subsystem.Stop();
  44. Assert.IsFalse(subsystem.running);
  45. subsystem.Destroy();
  46. }
  47. [Test]
  48. public void DestroyCallsStopWhenRunning()
  49. {
  50. var subsystem = RegisterAndCreate();
  51. subsystem.Start();
  52. Assert.AreEqual(0, subsystem.stopCount);
  53. subsystem.Destroy();
  54. Assert.IsFalse(subsystem.running);
  55. Assert.AreEqual(1, subsystem.stopCount);
  56. }
  57. [Test]
  58. public void DestroyDoesNotCallStopWhenNotRunning()
  59. {
  60. var subsystem = RegisterAndCreate();
  61. subsystem.Start();
  62. subsystem.Stop();
  63. Assert.IsFalse(subsystem.running);
  64. Assert.AreEqual(1, subsystem.stopCount);
  65. subsystem.Destroy();
  66. Assert.AreEqual(1, subsystem.stopCount);
  67. }
  68. [Test]
  69. public void DestroyOnlyCalledOnce()
  70. {
  71. var subsystem = RegisterAndCreate();
  72. Assert.AreEqual(0, subsystem.destroyCount);
  73. subsystem.Destroy();
  74. Assert.AreEqual(1, subsystem.destroyCount);
  75. subsystem.Destroy();
  76. subsystem.Destroy();
  77. subsystem.Destroy();
  78. subsystem.Destroy();
  79. Assert.AreEqual(1, subsystem.destroyCount);
  80. }
  81. [Test]
  82. public void StartOnlyCalledWhenNotRunning()
  83. {
  84. var subsystem = RegisterAndCreate();
  85. Assert.AreEqual(0, subsystem.startCount);
  86. subsystem.Start();
  87. Assert.IsTrue(subsystem.running);
  88. Assert.AreEqual(1, subsystem.startCount);
  89. subsystem.Start();
  90. Assert.IsTrue(subsystem.running);
  91. Assert.AreEqual(1, subsystem.startCount);
  92. subsystem.Stop();
  93. Assert.IsFalse(subsystem.running);
  94. subsystem.Start();
  95. Assert.IsTrue(subsystem.running);
  96. Assert.AreEqual(2, subsystem.startCount);
  97. subsystem.Destroy();
  98. }
  99. [Test]
  100. public void StopOnlyCalledWhenRunning()
  101. {
  102. var subsystem = RegisterAndCreate();
  103. subsystem.Stop();
  104. Assert.AreEqual(0, subsystem.stopCount);
  105. subsystem.Start();
  106. Assert.IsTrue(subsystem.running);
  107. Assert.AreEqual(0, subsystem.stopCount);
  108. subsystem.Stop();
  109. Assert.IsFalse(subsystem.running);
  110. Assert.AreEqual(1, subsystem.stopCount);
  111. subsystem.Stop();
  112. Assert.AreEqual(1, subsystem.startCount);
  113. subsystem.Start();
  114. Assert.IsTrue(subsystem.running);
  115. subsystem.Stop();
  116. Assert.IsFalse(subsystem.running);
  117. Assert.AreEqual(2, subsystem.stopCount);
  118. subsystem.Destroy();
  119. }
  120. }
  121. }