Files
ESPEasy/lib/IRremoteESP8266/test/ir_York_test.cpp
T
Ton Huisman 4e8109fc08 [Lib] IRremoteESP8266 update to v2.8.6, with ESPEasy patches applied
- Disable some (more) IR protocols to make 1M build fit
- Add IDF 5.x compatibility
2023-11-03 20:47:05 +01:00

97 lines
3.5 KiB
C++

// Copyright 2023 Daniele Gobbetti
#include "ir_York.h"
#include "IRac.h"
#include "IRrecv.h"
#include "IRrecv_test.h"
#include "IRsend.h"
#include "IRsend_test.h"
#include "gtest/gtest.h"
// General housekeeping
TEST(TestYork, Housekeeping) {
ASSERT_EQ("YORK", typeToString(decode_type_t::YORK));
ASSERT_EQ(typeToString(decode_type_t::YORK), "YORK");
ASSERT_TRUE(hasACState(YORK));
ASSERT_TRUE(IRac::isProtocolSupported(decode_type_t::YORK));
ASSERT_EQ(kYorkBits, IRsend::defaultBits(decode_type_t::YORK));
}
// Tests for sendYork().
// Test sending typical data only.
TEST(TestSendYork, SendDataOnly) {
IRsendTest irsend(0);
irsend.begin();
uint8_t data[kYorkStateLength] = {
0x08, 0x10, 0x07, 0x02, 0x40, 0x08,
0x03, 0x18, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00,
0xEC, 0xF5, 0xF2};
irsend.reset();
irsend.sendYork(data);
EXPECT_EQ(
"f38000d50"
"m4887s2267m612s579m612s579m612s579m612s1778m612s579m612s579m612s579"
"m612s579m612s579m612s579m612s579m612s579m612s1778m612s579m612s579"
"m612s579m612s1778m612s1778m612s1778m612s579m612s579m612s579m612s579"
"m612s579m612s579m612s1778m612s579m612s579m612s579m612s579m612s579m612s579"
"m612s579m612s579m612s579m612s579m612s579m612s579m612s1778m612s579m612s579"
"m612s579m612s579m612s1778m612s579m612s579m612s579m612s579m612s1778"
"m612s1778m612s579m612s579m612s579m612s579m612s579m612s579m612s579m612s579"
"m612s579m612s1778m612s1778m612s579m612s579m612s579m612s1778m612s579"
"m612s579m612s579m612s579m612s579m612s579m612s579m612s579m612s579m612s579"
"m612s579m612s579m612s1778m612s1778m612s579m612s579m612s579m612s579"
"m612s579m612s579m612s579m612s579m612s579m612s579m612s579m612s579m612s579"
"m612s579m612s579m612s579m612s579m612s579m612s579m612s579m612s579m612s579"
"m612s579m612s579m612s579m612s579m612s579m612s579m612s579m612s579m612s579"
"m612s579m612s579m612s579m612s579m612s1778m612s1778m612s579m612s1778"
"m612s1778m612s1778m612s1778m612s579m612s1778m612s579m612s1778m612s1778"
"m612s1778m612s1778m612s579m612s1778m612s579m612s579m612s1778m612s1778"
"m612s1778m612s1778m612s100000",
irsend.outputStr());
irsend.reset();
}
// Decode normal York messages.
TEST(TestDecodeYork, SyntheticDecode) {
IRsendTest irsend(0);
IRrecv irrecv(0);
irsend.begin();
// Synthesised Normal York message.
irsend.reset();
uint8_t kYorkKnownGoodState[kYorkStateLength] = {
0x08, 0x10, 0x07, 0x02, 0x40, 0x08,
0x03, 0x18, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00,
0xEC, 0xF5, 0xF2};
irsend.sendYork(kYorkKnownGoodState);
irsend.makeDecodeResult();
EXPECT_TRUE(irrecv.decode(&irsend.capture));
EXPECT_EQ(YORK, irsend.capture.decode_type);
EXPECT_EQ(kYorkBits, irsend.capture.bits);
EXPECT_STATE_EQ(kYorkKnownGoodState, irsend.capture.state,
irsend.capture.bits);
EXPECT_EQ(
"Power: On, Mode: 1 (Heat), Fan: 8 (Auto), Temp: 24C, Swing(V): Off"
", On Timer: 00:00, Off Timer: 00:00",
IRAcUtils::resultAcToString(&irsend.capture));
stdAc::state_t r, p;
ASSERT_TRUE(IRAcUtils::decodeToState(&irsend.capture, &r, &p));
}
// test checksum calculation
TEST(TestYorkClass, SetAndGetTemp) {
IRYorkAc ac(kGpioUnused);
EXPECT_NE(23, ac.getTemp()); // default state is 24 deegrees Celsius
ac.setTemp(23);
EXPECT_EQ(23, ac.getTemp());
uint8_t expectedState[kYorkStateLength] = {
0x08, 0x10, 0x07, 0x02, 0x40, 0x08,
0x03, 0x18, 0x01, 0x5C, 0x00, 0x00, 0x00, 0x00,
0xEC, 0xA5, 0xF7};
EXPECT_STATE_EQ(expectedState, ac.getRaw(), kYorkBits);
}