Bez popisu
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.

FallbackLoaderTests.cs 6.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using NUnit.Framework;
  5. using UnityEngine;
  6. using UnityEngine.AdaptivePerformance;
  7. using UnityEngine.AdaptivePerformance.Provider;
  8. using UnityEngine.AdaptivePerformance.Tests.Standalone;
  9. using UnityEngine.TestTools;
  10. namespace UnityEditor.AdaptivePerformance.Editor.Tests
  11. {
  12. public class FallbackLoaderTests
  13. {
  14. [OneTimeSetUp]
  15. public void OneTimeSetUp()
  16. {
  17. FailToLoadSubsystem.RegisterDescriptor();
  18. AdaptivePerformanceSubsystemDescriptor.RegisterDescriptor(new AdaptivePerformanceSubsystemDescriptor.Cinfo
  19. {
  20. id = "Standalone Subsystem",
  21. providerType = typeof(StandaloneSubsystem.StandaloneProvider),
  22. subsystemTypeOverride = typeof(StandaloneSubsystem)
  23. });
  24. }
  25. AdaptivePerformanceManagerSettings m_TestManager;
  26. FailToLoadLoader m_FailToLoadLoader;
  27. StandaloneLoader m_StandaloneLoader;
  28. [SetUp]
  29. public void SetUp()
  30. {
  31. m_TestManager = ScriptableObject.CreateInstance<AdaptivePerformanceManagerSettings>();
  32. m_FailToLoadLoader = ScriptableObject.CreateInstance<FailToLoadLoader>();
  33. m_TestManager.loaders.Add(m_FailToLoadLoader);
  34. m_StandaloneLoader = ScriptableObject.CreateInstance<StandaloneLoader>();
  35. m_TestManager.loaders.Add(m_StandaloneLoader);
  36. }
  37. [TearDown]
  38. public void TearDown()
  39. {
  40. UnityEngine.Object.DestroyImmediate(m_StandaloneLoader);
  41. m_StandaloneLoader = null;
  42. }
  43. [Test]
  44. public void FallbackToStandaloneTest()
  45. {
  46. m_TestManager.InitializeLoaderSync();
  47. Assert.AreEqual(2, m_TestManager.loaders.Count);
  48. Assert.IsTrue(m_TestManager.loaders[0] is FailToLoadLoader);
  49. Assert.IsNotNull(m_TestManager.activeLoader);
  50. Assert.IsTrue(m_TestManager.activeLoader is StandaloneLoader);
  51. }
  52. [UnityTest]
  53. public IEnumerator FallbackToStandaloneAsyncTest()
  54. {
  55. yield return m_TestManager.InitializeLoader();
  56. Assert.AreEqual(2, m_TestManager.loaders.Count);
  57. Assert.IsTrue(m_TestManager.loaders[0] is FailToLoadLoader);
  58. Assert.IsNotNull(m_TestManager.activeLoader);
  59. Assert.IsTrue(m_TestManager.activeLoader is StandaloneLoader);
  60. }
  61. }
  62. [Serializable]
  63. public class FailToLoadSettings : IAdaptivePerformanceSettings
  64. {
  65. static FailToLoadSettings s_Settings = null;
  66. public static FailToLoadSettings GetSettings()
  67. {
  68. if (s_Settings != null)
  69. return s_Settings;
  70. s_Settings = CreateInstance<FailToLoadSettings>();
  71. return s_Settings;
  72. }
  73. }
  74. public class FailToLoadLoader : AdaptivePerformanceLoaderHelper
  75. {
  76. static List<AdaptivePerformanceSubsystemDescriptor> s_FailToLoadSubsystemDescriptors =
  77. new List<AdaptivePerformanceSubsystemDescriptor>();
  78. public override bool Initialized => false;
  79. public override bool Running => false;
  80. public FailToLoadSubsystem failToLoadSubsystem
  81. {
  82. get { return GetLoadedSubsystem<FailToLoadSubsystem>(); }
  83. }
  84. void OnEnable()
  85. {
  86. name = "Bug Fix Loader";
  87. }
  88. public override ISubsystem GetDefaultSubsystem()
  89. {
  90. return failToLoadSubsystem;
  91. }
  92. public override IAdaptivePerformanceSettings GetSettings()
  93. {
  94. return FailToLoadSettings.GetSettings();
  95. }
  96. public override bool Initialize()
  97. {
  98. CreateSubsystem<AdaptivePerformanceSubsystemDescriptor, FailToLoadSubsystem>(s_FailToLoadSubsystemDescriptors, "FailToLoad");
  99. // when the TryInitialize method on the Provider returns false, no subsystem is created
  100. // and the subsystem will be null, resulting a false value returned here
  101. return failToLoadSubsystem != null;
  102. }
  103. public override bool Start()
  104. {
  105. StartSubsystem<FailToLoadSubsystem>();
  106. return true;
  107. }
  108. public override bool Stop()
  109. {
  110. StopSubsystem<FailToLoadSubsystem>();
  111. return true;
  112. }
  113. public override bool Deinitialize()
  114. {
  115. DestroySubsystem<FailToLoadSubsystem>();
  116. return true;
  117. }
  118. }
  119. public class FailToLoadSubsystem : AdaptivePerformanceSubsystem
  120. {
  121. public class FailToLoadProvider : APProvider, IApplicationLifecycle, IDevicePerformanceLevelControl
  122. {
  123. PerformanceDataRecord m_Data = new PerformanceDataRecord();
  124. public override Feature Capabilities { get; set; }
  125. public override IApplicationLifecycle ApplicationLifecycle => this;
  126. public override IDevicePerformanceLevelControl PerformanceLevelControl => this;
  127. public override Version Version => new Version(0, 0, 0);
  128. public override bool Initialized { get; set; }
  129. public int MaxCpuPerformanceLevel { get; set; }
  130. public int MaxGpuPerformanceLevel { get; set; }
  131. protected override bool TryInitialize()
  132. {
  133. // return false to cause this loader to fail initialization and a fallback to the next loader should occur
  134. return false;
  135. }
  136. public override void Start() { }
  137. public override void Stop() { }
  138. public override void Destroy() { }
  139. public override PerformanceDataRecord Update()
  140. {
  141. return m_Data;
  142. }
  143. public void ApplicationPause() { }
  144. public void ApplicationResume() { }
  145. public bool SetPerformanceLevel(ref int cpu, ref int gpu)
  146. {
  147. return false;
  148. }
  149. public bool EnableCpuBoost()
  150. {
  151. return false;
  152. }
  153. public bool EnableGpuBoost()
  154. {
  155. return false;
  156. }
  157. }
  158. public static AdaptivePerformanceSubsystemDescriptor RegisterDescriptor()
  159. {
  160. return AdaptivePerformanceSubsystemDescriptor.RegisterDescriptor(new AdaptivePerformanceSubsystemDescriptor.Cinfo
  161. {
  162. id = "FailToLoad",
  163. providerType = typeof(FailToLoadProvider),
  164. subsystemTypeOverride = typeof(FailToLoadSubsystem)
  165. });
  166. }
  167. }
  168. }