ir_Coolix_test.cpp 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445
  1. // Copyright 2017-2018 David Conran
  2. #include "ir_Coolix.h"
  3. #include "IRsend.h"
  4. #include "IRsend_test.h"
  5. #include "gtest/gtest.h"
  6. // Tests for sendCOOLIX().
  7. // Test sending typical data only.
  8. TEST(TestSendCoolix, SendDataOnly) {
  9. IRsendTest irsend(4);
  10. irsend.begin();
  11. irsend.reset();
  12. irsend.sendCOOLIX(0x0);
  13. EXPECT_EQ(
  14. "m4480s4480"
  15. "m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
  16. "m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680"
  17. "m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
  18. "m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680"
  19. "m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
  20. "m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680"
  21. "m560s5040",
  22. irsend.outputStr());
  23. irsend.reset();
  24. irsend.sendCOOLIX(0xAA55AA);
  25. EXPECT_EQ(
  26. "m4480s4480"
  27. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  28. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  29. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  30. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  31. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  32. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  33. "m560s5040",
  34. irsend.outputStr());
  35. irsend.reset();
  36. irsend.sendCOOLIX(0xFFFFFF);
  37. EXPECT_EQ(
  38. "m4480s4480"
  39. "m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680"
  40. "m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
  41. "m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680"
  42. "m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
  43. "m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680"
  44. "m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
  45. "m560s5040",
  46. irsend.outputStr());
  47. }
  48. // Test sending with different repeats.
  49. TEST(TestSendCoolix, SendWithRepeats) {
  50. IRsendTest irsend(4);
  51. irsend.begin();
  52. irsend.reset();
  53. irsend.sendCOOLIX(0xAA55AA, kCoolixBits, 1); // 1 repeat.
  54. EXPECT_EQ(
  55. "m4480s4480"
  56. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  57. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  58. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  59. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  60. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  61. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  62. "m560s5040"
  63. "m4480s4480"
  64. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  65. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  66. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  67. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  68. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  69. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  70. "m560s5040",
  71. irsend.outputStr());
  72. irsend.sendCOOLIX(0xAA55AA, kCoolixBits, 2); // 2 repeats.
  73. EXPECT_EQ(
  74. "m4480s4480"
  75. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  76. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  77. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  78. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  79. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  80. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  81. "m560s5040"
  82. "m4480s4480"
  83. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  84. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  85. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  86. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  87. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  88. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  89. "m560s5040"
  90. "m4480s4480"
  91. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  92. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  93. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  94. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  95. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560"
  96. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680"
  97. "m560s5040",
  98. irsend.outputStr());
  99. }
  100. // Test sending an atypical data size.
  101. TEST(TestSendCoolix, SendUnusualSize) {
  102. IRsendTest irsend(4);
  103. irsend.begin();
  104. irsend.reset();
  105. irsend.sendCOOLIX(0x0, 8);
  106. EXPECT_EQ(
  107. "m4480s4480"
  108. "m560s560m560s560m560s560m560s560m560s560m560s560m560s560m560s560"
  109. "m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680m560s1680"
  110. "m560s5040",
  111. irsend.outputStr());
  112. irsend.reset();
  113. irsend.sendCOOLIX(0x1234567890ABCDEF, 64);
  114. EXPECT_EQ(
  115. "m4480s4480"
  116. "m560s560m560s560m560s560m560s1680m560s560m560s560m560s1680m560s560"
  117. "m560s1680m560s1680m560s1680m560s560m560s1680m560s1680m560s560m560s1680"
  118. "m560s560m560s560m560s1680m560s1680m560s560m560s1680m560s560m560s560"
  119. "m560s1680m560s1680m560s560m560s560m560s1680m560s560m560s1680m560s1680"
  120. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s1680m560s560"
  121. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s560m560s1680"
  122. "m560s560m560s1680m560s1680m560s1680m560s1680m560s560m560s560m560s560"
  123. "m560s1680m560s560m560s560m560s560m560s560m560s1680m560s1680m560s1680"
  124. "m560s1680m560s560m560s560m560s1680m560s560m560s560m560s560m560s560"
  125. "m560s560m560s1680m560s1680m560s560m560s1680m560s1680m560s1680m560s1680"
  126. "m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s1680"
  127. "m560s560m560s1680m560s560m560s1680m560s560m560s1680m560s560m560s560"
  128. "m560s1680m560s1680m560s560m560s560m560s1680m560s1680m560s560m560s1680"
  129. "m560s560m560s560m560s1680m560s1680m560s560m560s560m560s1680m560s560"
  130. "m560s1680m560s1680m560s1680m560s560m560s1680m560s1680m560s1680m560s1680"
  131. "m560s560m560s560m560s560m560s1680m560s560m560s560m560s560m560s560"
  132. "m560s5040",
  133. irsend.outputStr());
  134. // Bit sizes must be a multiple of 8.
  135. irsend.reset();
  136. irsend.sendCOOLIX(0x0, 17);
  137. EXPECT_EQ("", irsend.outputStr());
  138. }
  139. // Tests for decodeCOOLIX().
  140. // Decode normal Coolix messages.
  141. TEST(TestDecodeCoolix, NormalDecodeWithStrict) {
  142. IRsendTest irsend(4);
  143. IRrecv irrecv(4);
  144. irsend.begin();
  145. // Normal Coolix 24-bit message.
  146. irsend.reset();
  147. irsend.sendCOOLIX(0x123456);
  148. irsend.makeDecodeResult();
  149. ASSERT_TRUE(irrecv.decodeCOOLIX(&irsend.capture, kCoolixBits, true));
  150. EXPECT_EQ(COOLIX, irsend.capture.decode_type);
  151. EXPECT_EQ(kCoolixBits, irsend.capture.bits);
  152. EXPECT_EQ(0x123456, irsend.capture.value);
  153. EXPECT_EQ(0x0, irsend.capture.address);
  154. EXPECT_EQ(0x0, irsend.capture.command);
  155. EXPECT_FALSE(irsend.capture.repeat);
  156. // Normal Coolix 24-bit message.
  157. irsend.reset();
  158. irsend.sendCOOLIX(0x0);
  159. irsend.makeDecodeResult();
  160. ASSERT_TRUE(irrecv.decodeCOOLIX(&irsend.capture, kCoolixBits, true));
  161. EXPECT_EQ(COOLIX, irsend.capture.decode_type);
  162. EXPECT_EQ(kCoolixBits, irsend.capture.bits);
  163. EXPECT_EQ(0x0, irsend.capture.value);
  164. EXPECT_EQ(0x0, irsend.capture.address);
  165. EXPECT_EQ(0x0, irsend.capture.command);
  166. EXPECT_FALSE(irsend.capture.repeat);
  167. // Normal Coolix 24-bit message.
  168. irsend.reset();
  169. irsend.sendCOOLIX(0xFFFFFF);
  170. irsend.makeDecodeResult();
  171. ASSERT_TRUE(irrecv.decodeCOOLIX(&irsend.capture, kCoolixBits, true));
  172. EXPECT_EQ(COOLIX, irsend.capture.decode_type);
  173. EXPECT_EQ(kCoolixBits, irsend.capture.bits);
  174. EXPECT_EQ(0xFFFFFF, irsend.capture.value);
  175. EXPECT_EQ(0x0, irsend.capture.address);
  176. EXPECT_EQ(0x0, irsend.capture.command);
  177. EXPECT_FALSE(irsend.capture.repeat);
  178. }
  179. // Decode normal repeated Coolix messages.
  180. TEST(TestDecodeCoolix, NormalDecodeWithRepeatAndStrict) {
  181. IRsendTest irsend(4);
  182. IRrecv irrecv(4);
  183. irsend.begin();
  184. // Normal Coolix 16-bit message with 2 repeats.
  185. irsend.reset();
  186. irsend.sendCOOLIX(0x123456, kCoolixBits, 2);
  187. irsend.makeDecodeResult();
  188. ASSERT_TRUE(irrecv.decodeCOOLIX(&irsend.capture, kCoolixBits, true));
  189. EXPECT_EQ(COOLIX, irsend.capture.decode_type);
  190. EXPECT_EQ(kCoolixBits, irsend.capture.bits);
  191. EXPECT_EQ(0x123456, irsend.capture.value);
  192. EXPECT_FALSE(irsend.capture.repeat);
  193. irsend.makeDecodeResult(4 * kCoolixBits + 4);
  194. ASSERT_TRUE(irrecv.decodeCOOLIX(&irsend.capture, kCoolixBits, true));
  195. EXPECT_EQ(COOLIX, irsend.capture.decode_type);
  196. EXPECT_EQ(kCoolixBits, irsend.capture.bits);
  197. EXPECT_EQ(0x123456, irsend.capture.value);
  198. irsend.makeDecodeResult(2 * (4 * kCoolixBits + 4));
  199. ASSERT_TRUE(irrecv.decodeCOOLIX(&irsend.capture, kCoolixBits, true));
  200. EXPECT_EQ(COOLIX, irsend.capture.decode_type);
  201. EXPECT_EQ(kCoolixBits, irsend.capture.bits);
  202. EXPECT_EQ(0x123456, irsend.capture.value);
  203. }
  204. // Decode unsupported Coolix messages.
  205. TEST(TestDecodeCoolix, DecodeWithNonStrictSizes) {
  206. IRsendTest irsend(4);
  207. IRrecv irrecv(4);
  208. irsend.begin();
  209. irsend.reset();
  210. irsend.sendCOOLIX(0x12, 8); // Illegal value Coolix 8-bit message.
  211. irsend.makeDecodeResult();
  212. // Should fail with strict on.
  213. ASSERT_FALSE(irrecv.decodeCOOLIX(&irsend.capture, kCoolixBits, true));
  214. // Should pass if strict off.
  215. ASSERT_TRUE(irrecv.decodeCOOLIX(&irsend.capture, 8, false));
  216. EXPECT_EQ(COOLIX, irsend.capture.decode_type);
  217. EXPECT_EQ(8, irsend.capture.bits);
  218. EXPECT_EQ(0x12, irsend.capture.value);
  219. irsend.reset();
  220. irsend.sendCOOLIX(0x12345678, 32); // Illegal value Coolix 32-bit message.
  221. irsend.makeDecodeResult();
  222. // Shouldn't pass with strict when we ask for less bits than we got.
  223. ASSERT_FALSE(irrecv.decodeCOOLIX(&irsend.capture, kCoolixBits, true));
  224. irsend.makeDecodeResult();
  225. // Should fail with strict when we ask for the wrong bit size.
  226. ASSERT_FALSE(irrecv.decodeCOOLIX(&irsend.capture, 32, true));
  227. // Should pass if strict off.
  228. ASSERT_TRUE(irrecv.decodeCOOLIX(&irsend.capture, 32, false));
  229. EXPECT_EQ(COOLIX, irsend.capture.decode_type);
  230. EXPECT_EQ(32, irsend.capture.bits);
  231. EXPECT_EQ(0x12345678, irsend.capture.value);
  232. // Decode should fail if asked to decode non-multiples of 8 bits.
  233. irsend.reset();
  234. irsend.sendCOOLIX(0x123456, kCoolixBits, 2);
  235. irsend.makeDecodeResult();
  236. ASSERT_FALSE(irrecv.decodeCOOLIX(&irsend.capture, 9, false));
  237. }
  238. // Decode (non-standard) 64-bit messages.
  239. TEST(TestDecodeCoolix, Decode64BitMessages) {
  240. IRsendTest irsend(4);
  241. IRrecv irrecv(4);
  242. irsend.begin();
  243. irsend.reset();
  244. // Illegal size Coolix 64-bit message.
  245. irsend.sendCOOLIX(0xFFFFFFFFFFFFFFFF, 64);
  246. irsend.makeDecodeResult();
  247. // Should work with a 'normal' match (not strict)
  248. ASSERT_TRUE(irrecv.decodeCOOLIX(&irsend.capture, 64, false));
  249. EXPECT_EQ(COOLIX, irsend.capture.decode_type);
  250. EXPECT_EQ(64, irsend.capture.bits);
  251. EXPECT_EQ(0xFFFFFFFFFFFFFFFF, irsend.capture.value);
  252. }
  253. // Fail to decode a non-Coolix example via GlobalCache
  254. TEST(TestDecodeCoolix, FailToDecodeNonCoolixExample) {
  255. IRsendTest irsend(4);
  256. IRrecv irrecv(4);
  257. irsend.begin();
  258. irsend.reset();
  259. // Modified a few entries to unexpected values, based on previous test case.
  260. uint16_t gc_test[39] = {38000, 1, 1, 322, 162, 20, 61, 20, 61, 20,
  261. 20, 20, 20, 20, 20, 20, 127, 20, 61, 9,
  262. 20, 20, 61, 20, 20, 20, 61, 20, 61, 20,
  263. 61, 20, 20, 20, 20, 20, 20, 20, 884};
  264. irsend.sendGC(gc_test, 39);
  265. irsend.makeDecodeResult();
  266. ASSERT_FALSE(irrecv.decodeCOOLIX(&irsend.capture));
  267. ASSERT_FALSE(irrecv.decodeCOOLIX(&irsend.capture, kCoolixBits, false));
  268. }
  269. // Tests for the IRCoolixAC class.
  270. TEST(TestCoolixACClass, SetAndGetRaw) {
  271. IRCoolixAC ircoolix(0);
  272. ircoolix.setRaw(kCoolixOff);
  273. EXPECT_EQ(kCoolixOff, ircoolix.getRaw());
  274. ircoolix.setRaw(kCoolixDefaultState);
  275. EXPECT_EQ(kCoolixDefaultState, ircoolix.getRaw());
  276. }
  277. TEST(TestCoolixACClass, SetAndGetTemp) {
  278. IRCoolixAC ircoolix(0);
  279. ircoolix.setTemp(25);
  280. EXPECT_EQ(25, ircoolix.getTemp());
  281. ircoolix.setTemp(kCoolixTempMin);
  282. EXPECT_EQ(kCoolixTempMin, ircoolix.getTemp());
  283. ircoolix.setTemp(kCoolixTempMax);
  284. EXPECT_EQ(kCoolixTempMax, ircoolix.getTemp());
  285. ircoolix.setTemp(kCoolixTempMin - 1);
  286. EXPECT_EQ(kCoolixTempMin, ircoolix.getTemp());
  287. ircoolix.setTemp(kCoolixTempMax + 1);
  288. EXPECT_EQ(kCoolixTempMax, ircoolix.getTemp());
  289. }
  290. TEST(TestCoolixACClass, SetAndGetMode) {
  291. IRCoolixAC ircoolix(0);
  292. ircoolix.setMode(kCoolixHeat);
  293. EXPECT_EQ(kCoolixHeat, ircoolix.getMode());
  294. ircoolix.setMode(kCoolixCool);
  295. EXPECT_EQ(kCoolixCool, ircoolix.getMode());
  296. ircoolix.setMode(kCoolixDry);
  297. EXPECT_EQ(kCoolixDry, ircoolix.getMode());
  298. ircoolix.setMode(kCoolixAuto);
  299. EXPECT_EQ(kCoolixAuto, ircoolix.getMode());
  300. ircoolix.setMode(kCoolixFan);
  301. EXPECT_EQ(kCoolixFan, ircoolix.getMode());
  302. }
  303. TEST(TestCoolixACClass, SetAndGetFan) {
  304. IRCoolixAC ircoolix(0);
  305. ircoolix.setFan(kCoolixFanMax);
  306. EXPECT_EQ(kCoolixFanMax, ircoolix.getFan());
  307. ircoolix.setFan(kCoolixFanMin);
  308. EXPECT_EQ(kCoolixFanMin, ircoolix.getFan());
  309. ircoolix.setFan(kCoolixFanZoneFollow);
  310. EXPECT_EQ(kCoolixFanZoneFollow, ircoolix.getFan());
  311. ircoolix.setFan(kCoolixFanAuto);
  312. EXPECT_EQ(kCoolixFanAuto, ircoolix.getFan());
  313. ircoolix.setFan(kCoolixFanMax);
  314. EXPECT_EQ(kCoolixFanMax, ircoolix.getFan());
  315. ASSERT_NE(3, kCoolixFanAuto);
  316. // Now try some unexpected value.
  317. ircoolix.setFan(3);
  318. EXPECT_EQ(kCoolixFanAuto, ircoolix.getFan());
  319. }
  320. TEST(TestCoolixACClass, SetGetClearSensorTempAndZoneFollow) {
  321. IRCoolixAC ircoolix(0);
  322. ircoolix.setRaw(kCoolixDefaultState);
  323. EXPECT_FALSE(ircoolix.getZoneFollow());
  324. EXPECT_LT(kCoolixSensorTempMax, ircoolix.getSensorTemp());
  325. ircoolix.setSensorTemp(25);
  326. EXPECT_TRUE(ircoolix.getZoneFollow());
  327. EXPECT_EQ(25, ircoolix.getSensorTemp());
  328. // Lower bounds
  329. ircoolix.setSensorTemp(kCoolixSensorTempMin);
  330. EXPECT_TRUE(ircoolix.getZoneFollow());
  331. EXPECT_EQ(kCoolixSensorTempMin, ircoolix.getSensorTemp());
  332. ircoolix.setSensorTemp(kCoolixSensorTempMin - 1);
  333. EXPECT_TRUE(ircoolix.getZoneFollow());
  334. EXPECT_EQ(kCoolixSensorTempMin, ircoolix.getSensorTemp());
  335. // Upper bounds
  336. ircoolix.setSensorTemp(kCoolixSensorTempMax);
  337. EXPECT_TRUE(ircoolix.getZoneFollow());
  338. EXPECT_EQ(kCoolixSensorTempMax, ircoolix.getSensorTemp());
  339. ircoolix.setSensorTemp(kCoolixSensorTempMax + 1);
  340. EXPECT_TRUE(ircoolix.getZoneFollow());
  341. EXPECT_EQ(kCoolixSensorTempMax, ircoolix.getSensorTemp());
  342. // Clearing
  343. ircoolix.clearSensorTemp();
  344. EXPECT_FALSE(ircoolix.getZoneFollow());
  345. EXPECT_LT(kCoolixSensorTempMax, ircoolix.getSensorTemp());
  346. }
  347. TEST(TestCoolixACClass, SpecialModesAndReset) {
  348. IRCoolixAC ircoolix(0);
  349. ASSERT_NE(kCoolixSwing, ircoolix.getRaw());
  350. ircoolix.setSwing();
  351. ASSERT_EQ(kCoolixSwing, ircoolix.getRaw());
  352. ircoolix.setTurbo();
  353. ASSERT_EQ(kCoolixTurbo, ircoolix.getRaw());
  354. ircoolix.setSleep();
  355. ASSERT_EQ(kCoolixSleep, ircoolix.getRaw());
  356. ircoolix.setLed();
  357. ASSERT_EQ(kCoolixLed, ircoolix.getRaw());
  358. ircoolix.setClean();
  359. ASSERT_EQ(kCoolixClean, ircoolix.getRaw());
  360. ircoolix.stateReset();
  361. ASSERT_NE(kCoolixClean, ircoolix.getRaw());
  362. }
  363. TEST(TestCoolixACClass, HumanReadable) {
  364. IRCoolixAC ircoolix(0);
  365. // Initial starting point.
  366. EXPECT_EQ(
  367. "Power: On, Fan: 5 (AUTO), Mode: 2 (AUTO), Temp: 25C, "
  368. "Zone Follow: Off, Sensor Temp: Ignored",
  369. ircoolix.toString());
  370. ircoolix.setSensorTemp(24);
  371. ircoolix.setTemp(22);
  372. ircoolix.setMode(kCoolixCool);
  373. ircoolix.setFan(kCoolixFanMin);
  374. EXPECT_EQ(
  375. "Power: On, Fan: 4 (MIN), Mode: 0 (COOL), Temp: 22C, "
  376. "Zone Follow: On, Sensor Temp: 24C",
  377. ircoolix.toString());
  378. ircoolix.setSwing();
  379. EXPECT_EQ("Power: On, Fan: 3 (UNKNOWN), Swing: Toggle", ircoolix.toString());
  380. ircoolix.setPower(false);
  381. EXPECT_EQ("Power: Off", ircoolix.toString());
  382. }
  383. TEST(TestCoolixACClass, KnownExamples) {
  384. IRCoolixAC ircoolix(0);
  385. ircoolix.setRaw(0b101100101011111111100100);
  386. EXPECT_EQ(
  387. "Power: On, Fan: 5 (AUTO), Mode: 4 (FAN), Zone Follow: Off, "
  388. "Sensor Temp: Ignored",
  389. ircoolix.toString());
  390. ircoolix.setRaw(0b101100101001111100000000);
  391. EXPECT_EQ(
  392. "Power: On, Fan: 4 (MIN), Mode: 0 (COOL), Temp: 17C, "
  393. "Zone Follow: Off, Sensor Temp: Ignored",
  394. ircoolix.toString());
  395. }