Tasmota/lib/lib_basic/IRremoteESP8266/test/ir_EliteScreens_test.cpp

141 lines
5.0 KiB
C++

// Copyright 2017 David Conran
#include "IRac.h"
#include "IRsend.h"
#include "IRsend_test.h"
#include "gtest/gtest.h"
// Housekeeping tests
TEST(TestUtils, Housekeeping) {
ASSERT_EQ("ELITESCREENS", typeToString(decode_type_t::ELITESCREENS));
ASSERT_EQ(decode_type_t::ELITESCREENS, strToDecodeType("ELITESCREENS"));
ASSERT_FALSE(hasACState(decode_type_t::ELITESCREENS));
ASSERT_FALSE(IRac::isProtocolSupported(decode_type_t::ELITESCREENS));
ASSERT_EQ(kEliteScreensBits,
IRsendTest::defaultBits(decode_type_t::ELITESCREENS));
ASSERT_EQ(kEliteScreensDefaultRepeat,
IRsendTest::minRepeats(decode_type_t::ELITESCREENS));
}
// Tests for sendElitescreens().
// Test sending typical data only.
TEST(TestSendElitescreens, SendDataOnly) {
IRsendTest irsend(kGpioUnused);
irsend.begin();
irsend.reset();
irsend.sendElitescreens(0xFEA3387); // STOP command
EXPECT_EQ(
"f38000d50"
"m1214s470m1214s470m1214s470m1214s470"
"m470s1214m470s1214m470s1214m470s1214"
"m470s1214m470s1214m470s1214m1214s470"
"m470s1214m1214s470m470s1214m1214s470"
"m1214s470m1214s470m470s1214m470s1214"
"m1214s470m1214s470m470s1214m470s1214"
"m470s1214m1214s470m1214s470m1214s470"
"m1214s470m470s1214m470s1214m470"
"s30414"
"m1214s470m1214s470m1214s470m1214s470"
"m470s1214m470s1214m470s1214m470s1214"
"m470s1214m470s1214m470s1214m1214s470"
"m470s1214m1214s470m470s1214m1214s470"
"m1214s470m1214s470m470s1214m470s1214"
"m1214s470m1214s470m470s1214m470s1214"
"m470s1214m1214s470m1214s470m1214s470"
"m1214s470m470s1214m470s1214m470"
"s30414",
irsend.outputStr());
}
// Tests for decodeElitescreens().
// Decode a 'real' example
TEST(TestDecodeElitescreens, RealExample) {
IRsendTest irsend(kGpioUnused);
IRrecv irrecv(kGpioUnused);
irsend.begin();
// From https://github.com/crankyoldgit/IRremoteESP8266/issues/1306#issuecomment-715913084
// STOP (111100000010 0xF02)
const uint16_t rawData[127] = {
1278, 456, 1248, 486, 1226, 452, 1252, 454, // 0 0 0 0 0x0
474, 1220, 474, 1222, 480, 1214, 476, 1222, // 1 1 1 1 0xF
472, 1224, 478, 1216, 476, 1220, 1256, 480, // 1 1 1 0 0xE
450, 1216, 1248, 488, 442, 1222, 1252, 486, // 1 0 1 0 0xA
1226, 478, 1224, 482, 448, 1220, 472, 1222, // 0 0 1 1 0x3
1254, 482, 1220, 486, 444, 1222, 480, 1218, // 0 0 1 1 0x3
474, 1220, 1254, 482, 1222, 484, 1218, 488, // 1 0 0 0 0x8
1224, 482, 450, 1218, 474, 1220, 470, // 0 1 1 1 0x7
30482,
1246, 460, 1274, 460, 1220, 456, 1246, 488,
452, 1214, 478, 1218, 474, 1220, 470, 1228,
476, 1220, 472, 1222, 480, 1214, 1248, 486,
476, 1190, 1274, 460, 480, 1186, 1278, 460,
1252, 426, 1276, 456, 474, 1194, 478, 1216,
1280, 456, 1246, 460, 482, 1186, 474, 1224,
478, 1216, 1282, 454, 1248, 458, 1244, 462,
1252, 456, 474, 1192, 480, 1216, 476}; // UNKNOWN 148A4DFF
irsend.reset();
irsend.sendRaw(rawData, 127, 38000);
irsend.makeDecodeResult();
ASSERT_TRUE(irrecv.decode(&irsend.capture));
EXPECT_EQ(ELITESCREENS, irsend.capture.decode_type);
EXPECT_EQ(kEliteScreensBits, irsend.capture.bits);
EXPECT_EQ(0xFEA3387, irsend.capture.value);
EXPECT_EQ(0x0, irsend.capture.address);
EXPECT_EQ(0x0, irsend.capture.command);
EXPECT_FALSE(irsend.capture.repeat);
}
// Decode a Synthetic example
TEST(TestDecodeElitescreens, SyntheticExample) {
IRsendTest irsend(kGpioUnused);
IRrecv irrecv(kGpioUnused);
irsend.begin();
irsend.reset();
irsend.sendElitescreens(0xFEA3387);
irsend.makeDecodeResult();
ASSERT_TRUE(irrecv.decode(&irsend.capture));
EXPECT_EQ(ELITESCREENS, irsend.capture.decode_type);
EXPECT_EQ(kEliteScreensBits, irsend.capture.bits);
EXPECT_EQ(0xFEA3387, irsend.capture.value);
EXPECT_EQ(0x0, irsend.capture.address);
EXPECT_EQ(0x0, irsend.capture.command);
EXPECT_FALSE(irsend.capture.repeat);
}
// Decode a 'real' example with no repeat.
TEST(TestDecodeElitescreens, RealExampleNoRepeat) {
IRsendTest irsend(kGpioUnused);
IRrecv irrecv(kGpioUnused);
irsend.begin();
// From https://github.com/crankyoldgit/IRremoteESP8266/issues/1306#issuecomment-715901468
// UP
const uint16_t rawData[63] = {
1250, 450, 1250, 450, 1250, 500, 1200, 500, 450, 1250, 450, 1200, 500, 1200,
500, 1200, 500, 1200, 500, 1200, 1250, 450, 500, 1200, 450, 1250, 1250, 450,
450, 1250, 1250, 450, 1250, 450, 1250, 450, 500, 1200, 1250, 450, 1250, 450,
1250, 450, 500, 1200, 1250, 450, 1250, 450, 500, 1200, 1250, 450, 500, 1200,
1250, 450, 500, 1200, 500, 1200, 1250}; // Protocol=UNKNOWN Data=0x2D8CB141
irsend.reset();
irsend.sendRaw(rawData, 63, 38000);
irsend.makeDecodeResult();
ASSERT_TRUE(irrecv.decode(&irsend.capture));
EXPECT_EQ(ELITESCREENS, irsend.capture.decode_type);
EXPECT_EQ(kEliteScreensBits, irsend.capture.bits);
EXPECT_EQ(0xFDA2256, irsend.capture.value);
EXPECT_EQ(0x0, irsend.capture.address);
EXPECT_EQ(0x0, irsend.capture.command);
EXPECT_FALSE(irsend.capture.repeat);
}