BehaviourContextTests.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. using NUnit.Framework;
  2. using Ryujinx.Audio.Renderer.Server;
  3. namespace Ryujinx.Tests.Audio.Renderer.Server
  4. {
  5. public class BehaviourContextTests
  6. {
  7. [Test]
  8. public void TestCheckFeature()
  9. {
  10. int latestRevision = BehaviourContext.BaseRevisionMagic + BehaviourContext.LastRevision;
  11. int previousRevision = BehaviourContext.BaseRevisionMagic + (BehaviourContext.LastRevision - 1);
  12. int invalidRevision = BehaviourContext.BaseRevisionMagic + (BehaviourContext.LastRevision + 1);
  13. Assert.IsTrue(BehaviourContext.CheckFeatureSupported(latestRevision, latestRevision));
  14. Assert.IsFalse(BehaviourContext.CheckFeatureSupported(previousRevision, latestRevision));
  15. Assert.IsTrue(BehaviourContext.CheckFeatureSupported(latestRevision, previousRevision));
  16. // In case we get an invalid revision, this is supposed to auto default to REV1 internally.. idk what the hell Nintendo was thinking here..
  17. Assert.IsTrue(BehaviourContext.CheckFeatureSupported(invalidRevision, latestRevision));
  18. }
  19. [Test]
  20. public void TestsMemoryPoolForceMappingEnabled()
  21. {
  22. BehaviourContext behaviourContext = new BehaviourContext();
  23. behaviourContext.SetUserRevision(BehaviourContext.BaseRevisionMagic + BehaviourContext.Revision1);
  24. Assert.IsFalse(behaviourContext.IsMemoryPoolForceMappingEnabled());
  25. behaviourContext.UpdateFlags(0x1);
  26. Assert.IsTrue(behaviourContext.IsMemoryPoolForceMappingEnabled());
  27. }
  28. [Test]
  29. public void TestRevision1()
  30. {
  31. BehaviourContext behaviourContext = new BehaviourContext();
  32. behaviourContext.SetUserRevision(BehaviourContext.BaseRevisionMagic + BehaviourContext.Revision1);
  33. Assert.IsFalse(behaviourContext.IsAdpcmLoopContextBugFixed());
  34. Assert.IsFalse(behaviourContext.IsSplitterSupported());
  35. Assert.IsFalse(behaviourContext.IsLongSizePreDelaySupported());
  36. Assert.IsFalse(behaviourContext.IsAudioUsbDeviceOutputSupported());
  37. Assert.IsFalse(behaviourContext.IsFlushVoiceWaveBuffersSupported());
  38. Assert.IsFalse(behaviourContext.IsSplitterBugFixed());
  39. Assert.IsFalse(behaviourContext.IsElapsedFrameCountSupported());
  40. Assert.IsFalse(behaviourContext.IsDecodingBehaviourFlagSupported());
  41. Assert.IsFalse(behaviourContext.IsBiquadFilterEffectStateClearBugFixed());
  42. Assert.IsFalse(behaviourContext.IsMixInParameterDirtyOnlyUpdateSupported());
  43. Assert.IsFalse(behaviourContext.IsWaveBufferVersion2Supported());
  44. Assert.AreEqual(0.70f, behaviourContext.GetAudioRendererProcessingTimeLimit());
  45. Assert.AreEqual(1, behaviourContext.GetCommandProcessingTimeEstimatorVersion());
  46. Assert.AreEqual(1, behaviourContext.GetPerformanceMetricsDataFormat());
  47. }
  48. [Test]
  49. public void TestRevision2()
  50. {
  51. BehaviourContext behaviourContext = new BehaviourContext();
  52. behaviourContext.SetUserRevision(BehaviourContext.BaseRevisionMagic + BehaviourContext.Revision2);
  53. Assert.IsTrue(behaviourContext.IsAdpcmLoopContextBugFixed());
  54. Assert.IsTrue(behaviourContext.IsSplitterSupported());
  55. Assert.IsFalse(behaviourContext.IsLongSizePreDelaySupported());
  56. Assert.IsFalse(behaviourContext.IsAudioUsbDeviceOutputSupported());
  57. Assert.IsFalse(behaviourContext.IsFlushVoiceWaveBuffersSupported());
  58. Assert.IsFalse(behaviourContext.IsSplitterBugFixed());
  59. Assert.IsFalse(behaviourContext.IsElapsedFrameCountSupported());
  60. Assert.IsFalse(behaviourContext.IsDecodingBehaviourFlagSupported());
  61. Assert.IsFalse(behaviourContext.IsBiquadFilterEffectStateClearBugFixed());
  62. Assert.IsFalse(behaviourContext.IsMixInParameterDirtyOnlyUpdateSupported());
  63. Assert.IsFalse(behaviourContext.IsWaveBufferVersion2Supported());
  64. Assert.AreEqual(0.70f, behaviourContext.GetAudioRendererProcessingTimeLimit());
  65. Assert.AreEqual(1, behaviourContext.GetCommandProcessingTimeEstimatorVersion());
  66. Assert.AreEqual(1, behaviourContext.GetPerformanceMetricsDataFormat());
  67. }
  68. [Test]
  69. public void TestRevision3()
  70. {
  71. BehaviourContext behaviourContext = new BehaviourContext();
  72. behaviourContext.SetUserRevision(BehaviourContext.BaseRevisionMagic + BehaviourContext.Revision3);
  73. Assert.IsTrue(behaviourContext.IsAdpcmLoopContextBugFixed());
  74. Assert.IsTrue(behaviourContext.IsSplitterSupported());
  75. Assert.IsTrue(behaviourContext.IsLongSizePreDelaySupported());
  76. Assert.IsFalse(behaviourContext.IsAudioUsbDeviceOutputSupported());
  77. Assert.IsFalse(behaviourContext.IsFlushVoiceWaveBuffersSupported());
  78. Assert.IsFalse(behaviourContext.IsSplitterBugFixed());
  79. Assert.IsFalse(behaviourContext.IsElapsedFrameCountSupported());
  80. Assert.IsFalse(behaviourContext.IsDecodingBehaviourFlagSupported());
  81. Assert.IsFalse(behaviourContext.IsBiquadFilterEffectStateClearBugFixed());
  82. Assert.IsFalse(behaviourContext.IsMixInParameterDirtyOnlyUpdateSupported());
  83. Assert.IsFalse(behaviourContext.IsWaveBufferVersion2Supported());
  84. Assert.AreEqual(0.70f, behaviourContext.GetAudioRendererProcessingTimeLimit());
  85. Assert.AreEqual(1, behaviourContext.GetCommandProcessingTimeEstimatorVersion());
  86. Assert.AreEqual(1, behaviourContext.GetPerformanceMetricsDataFormat());
  87. }
  88. [Test]
  89. public void TestRevision4()
  90. {
  91. BehaviourContext behaviourContext = new BehaviourContext();
  92. behaviourContext.SetUserRevision(BehaviourContext.BaseRevisionMagic + BehaviourContext.Revision4);
  93. Assert.IsTrue(behaviourContext.IsAdpcmLoopContextBugFixed());
  94. Assert.IsTrue(behaviourContext.IsSplitterSupported());
  95. Assert.IsTrue(behaviourContext.IsLongSizePreDelaySupported());
  96. Assert.IsTrue(behaviourContext.IsAudioUsbDeviceOutputSupported());
  97. Assert.IsFalse(behaviourContext.IsFlushVoiceWaveBuffersSupported());
  98. Assert.IsFalse(behaviourContext.IsSplitterBugFixed());
  99. Assert.IsFalse(behaviourContext.IsElapsedFrameCountSupported());
  100. Assert.IsFalse(behaviourContext.IsDecodingBehaviourFlagSupported());
  101. Assert.IsFalse(behaviourContext.IsBiquadFilterEffectStateClearBugFixed());
  102. Assert.IsFalse(behaviourContext.IsMixInParameterDirtyOnlyUpdateSupported());
  103. Assert.IsFalse(behaviourContext.IsWaveBufferVersion2Supported());
  104. Assert.AreEqual(0.75f, behaviourContext.GetAudioRendererProcessingTimeLimit());
  105. Assert.AreEqual(1, behaviourContext.GetCommandProcessingTimeEstimatorVersion());
  106. Assert.AreEqual(1, behaviourContext.GetPerformanceMetricsDataFormat());
  107. }
  108. [Test]
  109. public void TestRevision5()
  110. {
  111. BehaviourContext behaviourContext = new BehaviourContext();
  112. behaviourContext.SetUserRevision(BehaviourContext.BaseRevisionMagic + BehaviourContext.Revision5);
  113. Assert.IsTrue(behaviourContext.IsAdpcmLoopContextBugFixed());
  114. Assert.IsTrue(behaviourContext.IsSplitterSupported());
  115. Assert.IsTrue(behaviourContext.IsLongSizePreDelaySupported());
  116. Assert.IsTrue(behaviourContext.IsAudioUsbDeviceOutputSupported());
  117. Assert.IsTrue(behaviourContext.IsFlushVoiceWaveBuffersSupported());
  118. Assert.IsTrue(behaviourContext.IsSplitterBugFixed());
  119. Assert.IsTrue(behaviourContext.IsElapsedFrameCountSupported());
  120. Assert.IsTrue(behaviourContext.IsDecodingBehaviourFlagSupported());
  121. Assert.IsFalse(behaviourContext.IsBiquadFilterEffectStateClearBugFixed());
  122. Assert.IsFalse(behaviourContext.IsMixInParameterDirtyOnlyUpdateSupported());
  123. Assert.IsFalse(behaviourContext.IsWaveBufferVersion2Supported());
  124. Assert.AreEqual(0.80f, behaviourContext.GetAudioRendererProcessingTimeLimit());
  125. Assert.AreEqual(2, behaviourContext.GetCommandProcessingTimeEstimatorVersion());
  126. Assert.AreEqual(2, behaviourContext.GetPerformanceMetricsDataFormat());
  127. }
  128. [Test]
  129. public void TestRevision6()
  130. {
  131. BehaviourContext behaviourContext = new BehaviourContext();
  132. behaviourContext.SetUserRevision(BehaviourContext.BaseRevisionMagic + BehaviourContext.Revision6);
  133. Assert.IsTrue(behaviourContext.IsAdpcmLoopContextBugFixed());
  134. Assert.IsTrue(behaviourContext.IsSplitterSupported());
  135. Assert.IsTrue(behaviourContext.IsLongSizePreDelaySupported());
  136. Assert.IsTrue(behaviourContext.IsAudioUsbDeviceOutputSupported());
  137. Assert.IsTrue(behaviourContext.IsFlushVoiceWaveBuffersSupported());
  138. Assert.IsTrue(behaviourContext.IsSplitterBugFixed());
  139. Assert.IsTrue(behaviourContext.IsElapsedFrameCountSupported());
  140. Assert.IsTrue(behaviourContext.IsDecodingBehaviourFlagSupported());
  141. Assert.IsTrue(behaviourContext.IsBiquadFilterEffectStateClearBugFixed());
  142. Assert.IsFalse(behaviourContext.IsMixInParameterDirtyOnlyUpdateSupported());
  143. Assert.IsFalse(behaviourContext.IsWaveBufferVersion2Supported());
  144. Assert.AreEqual(0.80f, behaviourContext.GetAudioRendererProcessingTimeLimit());
  145. Assert.AreEqual(2, behaviourContext.GetCommandProcessingTimeEstimatorVersion());
  146. Assert.AreEqual(2, behaviourContext.GetPerformanceMetricsDataFormat());
  147. }
  148. [Test]
  149. public void TestRevision7()
  150. {
  151. BehaviourContext behaviourContext = new BehaviourContext();
  152. behaviourContext.SetUserRevision(BehaviourContext.BaseRevisionMagic + BehaviourContext.Revision7);
  153. Assert.IsTrue(behaviourContext.IsAdpcmLoopContextBugFixed());
  154. Assert.IsTrue(behaviourContext.IsSplitterSupported());
  155. Assert.IsTrue(behaviourContext.IsLongSizePreDelaySupported());
  156. Assert.IsTrue(behaviourContext.IsAudioUsbDeviceOutputSupported());
  157. Assert.IsTrue(behaviourContext.IsFlushVoiceWaveBuffersSupported());
  158. Assert.IsTrue(behaviourContext.IsSplitterBugFixed());
  159. Assert.IsTrue(behaviourContext.IsElapsedFrameCountSupported());
  160. Assert.IsTrue(behaviourContext.IsDecodingBehaviourFlagSupported());
  161. Assert.IsTrue(behaviourContext.IsBiquadFilterEffectStateClearBugFixed());
  162. Assert.IsTrue(behaviourContext.IsMixInParameterDirtyOnlyUpdateSupported());
  163. Assert.IsFalse(behaviourContext.IsWaveBufferVersion2Supported());
  164. Assert.AreEqual(0.80f, behaviourContext.GetAudioRendererProcessingTimeLimit());
  165. Assert.AreEqual(2, behaviourContext.GetCommandProcessingTimeEstimatorVersion());
  166. Assert.AreEqual(2, behaviourContext.GetPerformanceMetricsDataFormat());
  167. }
  168. [Test]
  169. public void TestRevision8()
  170. {
  171. BehaviourContext behaviourContext = new BehaviourContext();
  172. behaviourContext.SetUserRevision(BehaviourContext.BaseRevisionMagic + BehaviourContext.Revision8);
  173. Assert.IsTrue(behaviourContext.IsAdpcmLoopContextBugFixed());
  174. Assert.IsTrue(behaviourContext.IsSplitterSupported());
  175. Assert.IsTrue(behaviourContext.IsLongSizePreDelaySupported());
  176. Assert.IsTrue(behaviourContext.IsAudioUsbDeviceOutputSupported());
  177. Assert.IsTrue(behaviourContext.IsFlushVoiceWaveBuffersSupported());
  178. Assert.IsTrue(behaviourContext.IsSplitterBugFixed());
  179. Assert.IsTrue(behaviourContext.IsElapsedFrameCountSupported());
  180. Assert.IsTrue(behaviourContext.IsDecodingBehaviourFlagSupported());
  181. Assert.IsTrue(behaviourContext.IsBiquadFilterEffectStateClearBugFixed());
  182. Assert.IsTrue(behaviourContext.IsMixInParameterDirtyOnlyUpdateSupported());
  183. Assert.IsTrue(behaviourContext.IsWaveBufferVersion2Supported());
  184. Assert.AreEqual(0.80f, behaviourContext.GetAudioRendererProcessingTimeLimit());
  185. Assert.AreEqual(3, behaviourContext.GetCommandProcessingTimeEstimatorVersion());
  186. Assert.AreEqual(2, behaviourContext.GetPerformanceMetricsDataFormat());
  187. }
  188. }
  189. }