MMDeviceNotifyClient.cs 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // -----------------------------------------
  2. // SoundScribe (TM) and related software.
  3. //
  4. // Copyright (C) 2007-2011 Vannatech
  5. // http://www.vannatech.com
  6. // All rights reserved.
  7. //
  8. // This source code is subject to the MIT License.
  9. // http://www.opensource.org/licenses/mit-license.php
  10. //
  11. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  12. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  13. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  14. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  15. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  16. // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  17. // THE SOFTWARE.
  18. // -----------------------------------------
  19. using System;
  20. using System.Collections.Generic;
  21. using System.Linq;
  22. using System.Runtime.InteropServices;
  23. using System.Text;
  24. using Microsoft.VisualStudio.TestTools.UnitTesting;
  25. using Vannatech.CoreAudio.Constants;
  26. using Vannatech.CoreAudio.Enumerations;
  27. using Vannatech.CoreAudio.Externals;
  28. using Vannatech.CoreAudio.Interfaces;
  29. namespace CoreAudioTests.Common
  30. {
  31. /// <summary>
  32. /// Used for testing endpoint notification methods.
  33. /// </summary>
  34. public class MMDeviceNotifyClient : IMMNotificationClient
  35. {
  36. public void OnDefaultDeviceChanged(EDataFlow dataFlow, ERole deviceRole, string defaultDeviceId)
  37. {
  38. Assert.AreEqual(_dataFlow, dataFlow);
  39. Assert.AreEqual(_role, deviceRole);
  40. Assert.AreEqual(_deviceId, defaultDeviceId);
  41. }
  42. public void OnDeviceAdded(string deviceId)
  43. {
  44. Assert.AreEqual(_deviceId, deviceId);
  45. }
  46. public void OnDeviceRemoved(string deviceId)
  47. {
  48. Assert.AreEqual(_deviceId, deviceId);
  49. }
  50. public void OnDeviceStateChanged(string deviceId, UInt32 newState)
  51. {
  52. Assert.AreEqual(_deviceId, deviceId);
  53. Assert.AreEqual(_newState, newState);
  54. }
  55. public void OnPropertyValueChanged(string deviceId, PROPERTYKEY propertyKey)
  56. {
  57. Assert.AreEqual(_deviceId, deviceId);
  58. Assert.AreEqual(_propertyKey, propertyKey);
  59. }
  60. // Below members are not part of the interface
  61. // And are only used for verifying correctness.
  62. private EDataFlow _dataFlow;
  63. private ERole _role;
  64. private string _deviceId;
  65. private int _newState;
  66. private PROPERTYKEY _propertyKey;
  67. internal void SetExpected(EDataFlow dataflow, ERole role, string deviceId, int newState, PROPERTYKEY propertyKey)
  68. {
  69. _dataFlow = dataflow;
  70. _role = role;
  71. _deviceId = deviceId;
  72. _newState = newState;
  73. _propertyKey = propertyKey;
  74. }
  75. }
  76. }