ir_Whirlpool_test.cpp 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. // Copyright 2018 David Conran
  2. #include "IRrecv.h"
  3. #include "IRrecv_test.h"
  4. #include "IRsend.h"
  5. #include "IRsend_test.h"
  6. #include "gtest/gtest.h"
  7. // Tests for sendWhirlpoolAC().
  8. // Test sending typical data only.
  9. TEST(TestSendWhirlpoolAC, SendDataOnly) {
  10. IRsendTest irsend(0);
  11. irsend.begin();
  12. uint8_t data[kWhirlpoolAcStateLength] = {
  13. 0x83, 0x06, 0x10, 0x71, 0x00, 0x00, 0x91, 0x1F, 0x00, 0x00, 0x00,
  14. 0x00, 0x00, 0xEF, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02};
  15. irsend.sendWhirlpoolAC(data);
  16. EXPECT_EQ(
  17. "m8950s4484"
  18. "m597s1649m597s1649m597s533m597s533m597s533m597s533m597s533m597s1649"
  19. "m597s533m597s1649m597s1649m597s533m597s533m597s533m597s533m597s533"
  20. "m597s533m597s533m597s533m597s533m597s1649m597s533m597s533m597s533"
  21. "m597s1649m597s533m597s533m597s533m597s1649m597s1649m597s1649m597s533"
  22. "m597s533m597s533m597s533m597s533m597s533m597s533m597s533m597s533"
  23. "m597s533m597s533m597s533m597s533m597s533m597s533m597s533m597s533"
  24. "m597s7920"
  25. "m597s1649m597s533m597s533m597s533m597s1649m597s533m597s533m597s1649"
  26. "m597s1649m597s1649m597s1649m597s1649m597s1649m597s533m597s533m597s533"
  27. "m597s533m597s533m597s533m597s533m597s533m597s533m597s533m597s533"
  28. "m597s533m597s533m597s533m597s533m597s533m597s533m597s533m597s533"
  29. "m597s533m597s533m597s533m597s533m597s533m597s533m597s533m597s533"
  30. "m597s533m597s533m597s533m597s533m597s533m597s533m597s533m597s533"
  31. "m597s533m597s533m597s533m597s533m597s533m597s533m597s533m597s533"
  32. "m597s1649m597s1649m597s1649m597s1649m597s533m597s1649m597s1649m597s1649"
  33. "m597s7920"
  34. "m597s533m597s533m597s533m597s533m597s533m597s533m597s533m597s533"
  35. "m597s533m597s1649m597s533m597s533m597s533m597s533m597s533m597s533"
  36. "m597s533m597s533m597s533m597s533m597s533m597s533m597s533m597s533"
  37. "m597s533m597s533m597s533m597s533m597s533m597s533m597s533m597s533"
  38. "m597s533m597s533m597s533m597s533m597s533m597s533m597s533m597s533"
  39. "m597s533m597s533m597s533m597s533m597s533m597s533m597s533m597s533"
  40. "m597s533m597s1649m597s533m597s533m597s533m597s533m597s533m597s533"
  41. "m597s100000",
  42. irsend.outputStr());
  43. }
  44. // Tests for decodeWhirlpoolAC().
  45. // Decode normal WhirlpoolAC messages.
  46. TEST(TestDecodeWhirlpoolAC, SyntheticDecode) {
  47. IRsendTest irsend(0);
  48. IRrecv irrecv(0);
  49. irsend.begin();
  50. // Synthesised Normal WhirlpoolAC message.
  51. irsend.reset();
  52. uint8_t expectedState[kWhirlpoolAcStateLength] = {
  53. 0x83, 0x06, 0x10, 0x71, 0x00, 0x00, 0x91, 0x1F, 0x00, 0x00, 0x00,
  54. 0x00, 0x00, 0xEF, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02};
  55. irsend.sendWhirlpoolAC(expectedState);
  56. irsend.makeDecodeResult();
  57. EXPECT_TRUE(irrecv.decode(&irsend.capture));
  58. EXPECT_EQ(WHIRLPOOL_AC, irsend.capture.decode_type);
  59. EXPECT_EQ(kWhirlpoolAcBits, irsend.capture.bits);
  60. EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits);
  61. }
  62. // Decode a recorded example
  63. TEST(TestDecodeWhirlpoolAC, RealExampleDecode) {
  64. IRsendTest irsend(0);
  65. IRrecv irrecv(0);
  66. irsend.begin();
  67. // Real WhirlpoolAC message.
  68. // Ref: https://github.com/markszabo/IRremoteESP8266/issues/509
  69. uint16_t rawData[343] = {
  70. 8950, 4484, 598, 1642, 598, 1646, 594, 534, 594, 538, 602, 532,
  71. 598, 540, 600, 542, 598, 1650, 600, 522, 598, 1644, 596, 1650,
  72. 600, 532, 598, 538, 602, 536, 594, 548, 592, 538, 602, 518,
  73. 600, 524, 596, 532, 598, 532, 598, 1654, 596, 544, 596, 544,
  74. 596, 536, 594, 1644, 596, 528, 600, 528, 592, 538, 602, 1648,
  75. 602, 1654, 596, 1664, 598, 534, 594, 526, 594, 530, 598, 528,
  76. 602, 530, 600, 534, 596, 542, 598, 542, 598, 534, 596, 526,
  77. 594, 530, 600, 528, 602, 530, 600, 534, 596, 542, 598, 544,
  78. 596, 518, 602, 7916, 598, 1642, 598, 528, 600, 528, 602, 530,
  79. 600, 1652, 598, 542, 598, 544, 596, 1654, 596, 1644, 596, 1648,
  80. 602, 1644, 596, 1654, 596, 1656, 604, 536, 594, 548, 602, 528,
  81. 600, 520, 600, 524, 596, 532, 598, 532, 596, 538, 602, 536,
  82. 594, 546, 594, 538, 602, 518, 600, 524, 596, 532, 598, 532,
  83. 598, 536, 594, 544, 596, 544, 596, 536, 594, 526, 592, 530,
  84. 600, 528, 600, 530, 602, 532, 596, 542, 598, 542, 598, 534,
  85. 596, 524, 596, 528, 600, 526, 592, 538, 592, 542, 598, 540,
  86. 600, 540, 600, 530, 598, 522, 598, 526, 594, 534, 596, 534,
  87. 594, 540, 602, 536, 592, 548, 592, 538, 600, 1636, 594, 1648,
  88. 602, 1642, 598, 1652, 598, 538, 602, 1680, 570, 1662, 598, 1634,
  89. 596, 7924, 600, 520, 598, 526, 592, 534, 596, 534, 596, 540,
  90. 600, 536, 604, 538, 602, 530, 600, 520, 598, 1640, 600, 528,
  91. 600, 530, 600, 534, 594, 544, 596, 544, 596, 534, 596, 526,
  92. 594, 528, 600, 526, 594, 536, 592, 542, 598, 538, 602, 538,
  93. 602, 528, 600, 520, 600, 524, 596, 530, 600, 532, 598, 534,
  94. 596, 542, 598, 542, 598, 532, 598, 524, 596, 528, 602, 526,
  95. 594, 536, 594, 540, 600, 536, 594, 548, 592, 538, 602, 518,
  96. 602, 522, 596, 530, 600, 530, 600, 534, 596, 542, 598, 544,
  97. 596, 534, 596, 524, 594, 1644, 596, 532, 596, 534, 596, 538,
  98. 602, 536, 594, 546, 594, 520, 600};
  99. uint8_t expectedState[kWhirlpoolAcStateLength] = {
  100. 0x83, 0x06, 0x10, 0x71, 0x00, 0x00, 0x91, 0x1F, 0x00, 0x00, 0x00,
  101. 0x00, 0x00, 0xEF, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x02};
  102. irsend.reset();
  103. irsend.sendRaw(rawData, 343, 38000);
  104. irsend.makeDecodeResult();
  105. EXPECT_TRUE(irrecv.decode(&irsend.capture));
  106. EXPECT_EQ(WHIRLPOOL_AC, irsend.capture.decode_type);
  107. EXPECT_EQ(kWhirlpoolAcBits, irsend.capture.bits);
  108. EXPECT_STATE_EQ(expectedState, irsend.capture.state, irsend.capture.bits);
  109. }