| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- // Copyright 2017 David Conran
- #include "ir_Magiquest.h"
- #include "IRrecv.h"
- #include "IRsend.h"
- #include "IRsend_test.h"
- #include "gtest/gtest.h"
- // Tests for encodeMagiQuest()
- TEST(TestEncodeMagiQuest, General) {
- IRsendTest irsend(0);
- EXPECT_EQ(0x0, irsend.encodeMagiQuest(0x0, 0x0));
- EXPECT_EQ(0x10001, irsend.encodeMagiQuest(0x1, 0x1));
- EXPECT_EQ(0x20003, irsend.encodeMagiQuest(0x2, 0x3));
- EXPECT_EQ(0x123456781234, irsend.encodeMagiQuest(0x12345678, 0x1234));
- EXPECT_EQ(0xFFFFFFFFFFFF, irsend.encodeMagiQuest(0xFFFFFFFF, 0xFFFF));
- }
- // Tests for sendMagiQuest()
- // Test sending typical data only.
- TEST(TestSendMagiQuest, SendDataOnly) {
- IRsendTest irsend(0);
- irsend.begin();
- irsend.reset();
- irsend.sendMagiQuest(0x0);
- EXPECT_EQ(
- "m280s850m280s850m280s850m280s850m280s850m280s850m280s850m280s850"
- "m280s850m280s850m280s850m280s850m280s850m280s850m280s850m280s850"
- "m280s850m280s850m280s850m280s850m280s850m280s850m280s850m280s850"
- "m280s850m280s850m280s850m280s850m280s850m280s850m280s850m280s850"
- "m280s850m280s850m280s850m280s850m280s850m280s850m280s850m280s850"
- "m280s850m280s850m280s850m280s850m280s850m280s850m280s850m280s850"
- "m280s850m280s850m280s850m280s850m280s850m280s850m280s850m280s100850",
- irsend.outputStr());
- irsend.reset();
- irsend.sendMagiQuest(0x123456789ABC);
- EXPECT_EQ(
- "m280s850m280s850m280s850m280s850m280s850m280s850m280s850m280s850"
- "m280s850m280s850m280s850m580s600m280s850m280s850m580s600m280s850"
- "m280s850m280s850m580s600m580s600m280s850m580s600m280s850m280s850"
- "m280s850m580s600m280s850m580s600m280s850m580s600m580s600m280s850"
- "m280s850m580s600m580s600m580s600m580s600m280s850m280s850m280s850"
- "m580s600m280s850m280s850m580s600m580s600m280s850m580s600m280s850"
- "m580s600m280s850m580s600m580s600m580s600m580s600m280s850m280s100850",
- irsend.outputStr());
- }
- // Test sending typical data only.
- TEST(TestSendMagiQuest, SendWithRepeats) {
- IRsendTest irsend(0);
- irsend.begin();
- irsend.reset();
- irsend.sendMagiQuest(0x12345678ABCD, kMagiquestBits, 2); // two repeats.
- EXPECT_EQ(
- "m280s850m280s850m280s850m280s850m280s850m280s850m280s850m280s850"
- "m280s850m280s850m280s850m580s600m280s850m280s850m580s600m280s850"
- "m280s850m280s850m580s600m580s600m280s850m580s600m280s850m280s850"
- "m280s850m580s600m280s850m580s600m280s850m580s600m580s600m280s850"
- "m280s850m580s600m580s600m580s600m580s600m280s850m280s850m280s850"
- "m580s600m280s850m580s600m280s850m580s600m280s850m580s600m580s600"
- "m580s600m580s600m280s850m280s850m580s600m580s600m280s850m580s100600"
- "m280s850m280s850m280s850m280s850m280s850m280s850m280s850m280s850"
- "m280s850m280s850m280s850m580s600m280s850m280s850m580s600m280s850"
- "m280s850m280s850m580s600m580s600m280s850m580s600m280s850m280s850"
- "m280s850m580s600m280s850m580s600m280s850m580s600m580s600m280s850"
- "m280s850m580s600m580s600m580s600m580s600m280s850m280s850m280s850"
- "m580s600m280s850m580s600m280s850m580s600m280s850m580s600m580s600"
- "m580s600m580s600m280s850m280s850m580s600m580s600m280s850m580s100600"
- "m280s850m280s850m280s850m280s850m280s850m280s850m280s850m280s850"
- "m280s850m280s850m280s850m580s600m280s850m280s850m580s600m280s850"
- "m280s850m280s850m580s600m580s600m280s850m580s600m280s850m280s850"
- "m280s850m580s600m280s850m580s600m280s850m580s600m580s600m280s850"
- "m280s850m580s600m580s600m580s600m580s600m280s850m280s850m280s850"
- "m580s600m280s850m580s600m280s850m580s600m280s850m580s600m580s600"
- "m580s600m580s600m280s850m280s850m580s600m580s600m280s850m580s100600",
- irsend.outputStr());
- }
- // Tests for decodeMagiQuest().
- // Decode normal "synthetic" messages.
- TEST(TestDecodeMagiQuest, NormalDecodeWithStrict) {
- IRsendTest irsend(0);
- IRrecv irrecv(0);
- irsend.begin();
- irsend.reset();
- irsend.sendMagiQuest(0x0);
- irsend.makeDecodeResult();
- ASSERT_TRUE(irrecv.decodeMagiQuest(&irsend.capture, kMagiquestBits, true));
- EXPECT_EQ(MAGIQUEST, irsend.capture.decode_type);
- EXPECT_EQ(kMagiquestBits, irsend.capture.bits);
- EXPECT_EQ(0x0, irsend.capture.value);
- EXPECT_EQ(0x0, irsend.capture.address);
- EXPECT_EQ(0x0, irsend.capture.command);
- EXPECT_FALSE(irsend.capture.repeat);
- irsend.reset();
- irsend.sendMagiQuest(irsend.encodeMagiQuest(0x1, 0x1));
- irsend.makeDecodeResult();
- ASSERT_TRUE(irrecv.decodeMagiQuest(&irsend.capture, kMagiquestBits, true));
- EXPECT_EQ(MAGIQUEST, irsend.capture.decode_type);
- EXPECT_EQ(kMagiquestBits, irsend.capture.bits);
- EXPECT_EQ(0x10001, irsend.capture.value);
- EXPECT_EQ(0x1, irsend.capture.address);
- EXPECT_EQ(0x1, irsend.capture.command);
- EXPECT_FALSE(irsend.capture.repeat);
- irsend.reset();
- irsend.sendMagiQuest(irsend.encodeMagiQuest(0x12345678, 0xABCD));
- irsend.makeDecodeResult();
- ASSERT_TRUE(irrecv.decodeMagiQuest(&irsend.capture, kMagiquestBits, true));
- EXPECT_EQ(MAGIQUEST, irsend.capture.decode_type);
- EXPECT_EQ(kMagiquestBits, irsend.capture.bits);
- EXPECT_EQ(0x12345678ABCD, irsend.capture.value);
- EXPECT_EQ(0x12345678, irsend.capture.address);
- EXPECT_EQ(0xABCD, irsend.capture.command);
- EXPECT_FALSE(irsend.capture.repeat);
- // Do the last one again, & use the full decoder, not just protocol specific.
- irsend.reset();
- irsend.sendMagiQuest(irsend.encodeMagiQuest(0x12345678, 0xABCD));
- irsend.makeDecodeResult();
- ASSERT_TRUE(irrecv.decode(&irsend.capture));
- EXPECT_EQ(MAGIQUEST, irsend.capture.decode_type);
- EXPECT_EQ(kMagiquestBits, irsend.capture.bits);
- EXPECT_EQ(0x12345678ABCD, irsend.capture.value);
- }
- // Decode a "real" example message.
- TEST(TestDecodeMagiQuest, RealExamples) {
- IRsendTest irsend(0);
- IRrecv irrecv(0);
- irsend.begin();
- irsend.reset();
- uint16_t rawData[111] = {262, 842, 298, 858, 238, 866, 240, 890, 238, 866,
- 240, 862, 244, 886, 242, 860, 246, 858, 554, 604,
- 264, 840, 560, 622, 266, 836, 552, 604, 556, 626,
- 262, 866, 240, 864, 264, 838, 268, 862, 244, 886,
- 536, 620, 530, 628, 554, 628, 532, 624, 244, 858,
- 552, 604, 264, 840, 268, 862, 266, 838, 268, 888,
- 240, 864, 242, 860, 268, 862, 244, 860, 236, 868,
- 272, 832, 264, 866, 240, 890, 532, 598, 268, 834,
- 294, 836, 270, 834, 262, 866, 272, 858, 238, 866,
- 534, 622, 268, 836, 270, 860, 268, 862, 526, 604,
- 264, 892, 530, 600, 268, 836, 586, 598, 270, 834,
- 556}; // Data from PR #365 captured by coolacid
- irsend.sendRaw(rawData, 111, 36000);
- irsend.makeDecodeResult();
- ASSERT_TRUE(irrecv.decode(&irsend.capture));
- EXPECT_EQ(MAGIQUEST, irsend.capture.decode_type);
- EXPECT_EQ(kMagiquestBits, irsend.capture.bits);
- EXPECT_EQ(0x560F40020455, irsend.capture.value);
- EXPECT_EQ(0x560F4002, irsend.capture.address); // Wand ID
- EXPECT_EQ(0x0455, irsend.capture.command); // Magnitude
- EXPECT_FALSE(irsend.capture.repeat);
- }
|