tst_adapter.cpp 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. #include <gtest/gtest.h>
  2. #include "mocks/usbdevicemock.h"
  3. #include "src/noolite.h"
  4. using namespace testing;
  5. TEST(noolite, createAndDeleteAdapter)
  6. {
  7. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  8. EXPECT_CALL(*usbDevice, openDevice(0x16c0, 0x05df)).
  9. Times(1);
  10. EXPECT_CALL(*usbDevice, close()).
  11. Times(1);
  12. noolitelib::Noolite *adapter = new noolitelib::Noolite(usbDevice);
  13. delete adapter;
  14. }
  15. TEST(noolite, sendCommand_Off)
  16. {
  17. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  18. noolitelib::Noolite adapter(usbDevice);
  19. noolitelib::Data expectedData{ 0x30, 0x0, 0x0, 0x0, 3, 0x0, 0x0, 0x0 };
  20. EXPECT_CALL(*usbDevice, sendDataToDevice(expectedData, std::chrono::milliseconds())).
  21. WillOnce(Return(true));
  22. EXPECT_TRUE(adapter.sendCommand(3, noolitelib::Off));
  23. }
  24. TEST(noolite, sendCommand_DecreaseBrightnes)
  25. {
  26. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  27. noolitelib::Noolite adapter(usbDevice);
  28. noolitelib::Data expectedData{ 0x30, 0x01, 0x0, 0x0, 3, 0x0, 0x0, 0x0 };
  29. EXPECT_CALL(*usbDevice, sendDataToDevice(expectedData, std::chrono::milliseconds())).
  30. WillOnce(Return(true));
  31. EXPECT_TRUE(adapter.sendCommand(3, noolitelib::DecraseBrightnes));
  32. }
  33. TEST(noolite, sendCommand_On)
  34. {
  35. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  36. noolitelib::Noolite adapter(usbDevice);
  37. noolitelib::Data expectedData{ 0x30, 0x02, 0x0, 0x0, 3, 0x0, 0x0, 0x0 };
  38. EXPECT_CALL(*usbDevice, sendDataToDevice(expectedData, std::chrono::milliseconds())).
  39. WillOnce(Return(true));
  40. EXPECT_TRUE(adapter.sendCommand(3, noolitelib::On));
  41. }
  42. TEST(noolite, sendCommand_IncreaseBrightnes)
  43. {
  44. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  45. noolitelib::Noolite adapter(usbDevice);
  46. noolitelib::Data expectedData{ 0x30, 0x03, 0x0, 0x0, 3, 0x0, 0x0, 0x0 };
  47. EXPECT_CALL(*usbDevice, sendDataToDevice(expectedData, std::chrono::milliseconds())).
  48. WillOnce(Return(true));
  49. EXPECT_TRUE(adapter.sendCommand(3, noolitelib::IncreaseBrightnes));
  50. }
  51. TEST(noolite, sendCommand_Switch)
  52. {
  53. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  54. noolitelib::Noolite adapter(usbDevice);
  55. noolitelib::Data expectedData{ 0x30, 0x04, 0x0, 0x0, 3, 0x0, 0x0, 0x0 };
  56. EXPECT_CALL(*usbDevice, sendDataToDevice(expectedData, std::chrono::milliseconds())).
  57. WillOnce(Return(true));
  58. EXPECT_TRUE(adapter.sendCommand(3, noolitelib::Switch));
  59. }
  60. TEST(noolite, sendCommand_InvertBrightnes)
  61. {
  62. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  63. noolitelib::Noolite adapter(usbDevice);
  64. noolitelib::Data expectedData{ 0x30, 0x05, 0x0, 0x0, 3, 0x0, 0x0, 0x0 };
  65. EXPECT_CALL(*usbDevice, sendDataToDevice(expectedData, std::chrono::milliseconds())).
  66. WillOnce(Return(true));
  67. EXPECT_TRUE(adapter.sendCommand(3, noolitelib::InvertBrightnes));
  68. }
  69. TEST(noolite, sendCommand_Set_OneChannel)
  70. {
  71. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  72. noolitelib::Noolite adapter(usbDevice);
  73. noolitelib::Data expectedData{ 0x30, 0x06, 0x01, 0x0, 3, 0x2A, 0x0, 0x0 };
  74. EXPECT_CALL(*usbDevice, sendDataToDevice(expectedData, std::chrono::milliseconds())).
  75. WillOnce(Return(true));
  76. EXPECT_TRUE(adapter.sendCommand(3, noolitelib::Set, noolitelib::Params{ 42 }));
  77. }
  78. TEST(noolite, sendCommand_Set_ThreeChannels)
  79. {
  80. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  81. noolitelib::Noolite adapter(usbDevice);
  82. noolitelib::Data expectedData{ 0x30, 0x06, 0x03, 0x0, 3, 0x28, 0x29, 0x2A };
  83. EXPECT_CALL(*usbDevice, sendDataToDevice(expectedData, std::chrono::milliseconds())).
  84. WillOnce(Return(true));
  85. EXPECT_TRUE(adapter.sendCommand(3, noolitelib::Set, noolitelib::Params{ 40, 41, 42 }));
  86. }
  87. TEST(noolite, sendCommand_Set_BadArguments)
  88. {
  89. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  90. noolitelib::Noolite adapter(usbDevice);
  91. EXPECT_CALL(*usbDevice, sendDataToDevice(_, _)).
  92. Times(0);
  93. EXPECT_FALSE(adapter.sendCommand(3, noolitelib::Set));
  94. EXPECT_FALSE(adapter.sendCommand(3, noolitelib::Set, noolitelib::Params{ 40, 41 }));
  95. EXPECT_FALSE(adapter.sendCommand(3, noolitelib::Set, noolitelib::Params{ 40, 41, 42, 43 }));
  96. }
  97. TEST(noolite, sendCommand_CallScenario)
  98. {
  99. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  100. noolitelib::Noolite adapter(usbDevice);
  101. noolitelib::Data expectedData{ 0x30, 0x07, 0x0, 0x0, 3, 0x0, 0x0, 0x0 };
  102. EXPECT_CALL(*usbDevice, sendDataToDevice(expectedData, std::chrono::milliseconds())).
  103. WillOnce(Return(true));
  104. EXPECT_TRUE(adapter.sendCommand(3, noolitelib::CallScenario));
  105. }
  106. TEST(noolite, sendCommand_SaveScenario)
  107. {
  108. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  109. noolitelib::Noolite adapter(usbDevice);
  110. noolitelib::Data expectedData{ 0x30, 0x08, 0x0, 0x0, 3, 0x0, 0x0, 0x0 };
  111. EXPECT_CALL(*usbDevice, sendDataToDevice(expectedData, std::chrono::milliseconds())).
  112. WillOnce(Return(true));
  113. EXPECT_TRUE(adapter.sendCommand(3, noolitelib::SaveScenario));
  114. }
  115. TEST(noolite, sendCommand_Unbind)
  116. {
  117. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  118. noolitelib::Noolite adapter(usbDevice);
  119. noolitelib::Data expectedData{ 0x30, 0x09, 0x0, 0x0, 3, 0x0, 0x0, 0x0 };
  120. EXPECT_CALL(*usbDevice, sendDataToDevice(expectedData, std::chrono::milliseconds())).
  121. WillOnce(Return(true));
  122. EXPECT_TRUE(adapter.sendCommand(3, noolitelib::Unbind));
  123. }
  124. TEST(noolite, sendCommand_StopColorSelection)
  125. {
  126. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  127. noolitelib::Noolite adapter(usbDevice);
  128. noolitelib::Data expectedData{ 0x30, 0x0A, 0x0, 0x0, 3, 0x0, 0x0, 0x0 };
  129. EXPECT_CALL(*usbDevice, sendDataToDevice(expectedData, std::chrono::milliseconds())).
  130. WillOnce(Return(true));
  131. EXPECT_TRUE(adapter.sendCommand(3, noolitelib::StopColorSelection));
  132. }
  133. TEST(noolite, sendCommand_Bind)
  134. {
  135. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  136. noolitelib::Noolite adapter(usbDevice);
  137. noolitelib::Data expectedData{ 0x30, 0x0B, 0x0, 0x0, 3, 0x0, 0x0, 0x0 };
  138. EXPECT_CALL(*usbDevice, sendDataToDevice(expectedData, std::chrono::milliseconds())).
  139. WillOnce(Return(true));
  140. EXPECT_TRUE(adapter.sendCommand(3, noolitelib::Bind));
  141. }
  142. TEST(noolite, sendCommand_ColorSelection)
  143. {
  144. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  145. noolitelib::Noolite adapter(usbDevice);
  146. noolitelib::Data expectedData{ 0x30, 0x0C, 0x04, 0x0, 3, 0x0, 0x0, 0x0 };
  147. EXPECT_CALL(*usbDevice, sendDataToDevice(expectedData, std::chrono::milliseconds())).
  148. WillOnce(Return(true));
  149. EXPECT_TRUE(adapter.sendCommand(3, noolitelib::ColorSelection));
  150. }
  151. TEST(noolite, sendCommand_ColorSwitch)
  152. {
  153. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  154. noolitelib::Noolite adapter(usbDevice);
  155. noolitelib::Data expectedData{ 0x30, 0x0D, 0x04, 0x0, 3, 0x0, 0x0, 0x0 };
  156. EXPECT_CALL(*usbDevice, sendDataToDevice(expectedData, std::chrono::milliseconds())).
  157. WillOnce(Return(true));
  158. EXPECT_TRUE(adapter.sendCommand(3, noolitelib::ColorSwitch));
  159. }
  160. TEST(noolite, sendCommand_ModeSwitch)
  161. {
  162. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  163. noolitelib::Noolite adapter(usbDevice);
  164. noolitelib::Data expectedData{ 0x30, 0x0E, 0x04, 0x0, 3, 0x0, 0x0, 0x0 };
  165. EXPECT_CALL(*usbDevice, sendDataToDevice(expectedData, std::chrono::milliseconds())).
  166. WillOnce(Return(true));
  167. EXPECT_TRUE(adapter.sendCommand(3, noolitelib::ModeSwitch));
  168. }
  169. TEST(noolite, sendCommand_EffectSpeed)
  170. {
  171. UsbDeviceMock *usbDevice = new UsbDeviceMock();
  172. noolitelib::Noolite adapter(usbDevice);
  173. noolitelib::Data expectedData{ 0x30, 0x0F, 0x04, 0x0, 3, 0x0, 0x0, 0x0 };
  174. EXPECT_CALL(*usbDevice, sendDataToDevice(expectedData, std::chrono::milliseconds())).
  175. WillOnce(Return(true));
  176. EXPECT_TRUE(adapter.sendCommand(3, noolitelib::EffectSpeed));
  177. }