Files
IR-protocol/Analyzer/raw/IR_Fox/tests/IrFoxPacketClassifierTests.cpp

44 lines
2.0 KiB
C++

#include "IrFoxPacketClassifier.h"
#include <cassert>
#include <cstdint>
static IrFoxPacketDecision classify(const uint8_t* data, uint8_t size, bool crc_ok, uint16_t id = 0)
{
return irfox::classifyPacket(data, size, crc_ok, id);
}
int main()
{
const uint8_t data_to_42[] = {0xE7, 0x00, 0x01, 0x00, 0x2A, 0x00, 0x00};
assert(classify(data_to_42, 7, true, 42).outcome == IrFoxPacketOutcome::Accepted);
assert(classify(data_to_42, 7, true, 41).outcome == IrFoxPacketOutcome::IgnoredAddress);
const uint8_t broadcast_data[] = {0xC7, 0x00, 0x01, 0xFD, 0xE8, 0x00, 0x00};
assert(classify(broadcast_data, 7, true, 41).outcome == IrFoxPacketOutcome::Accepted);
const uint8_t request_to_42[] = {0x47, 0x00, 0x01, 0x00, 0x2A, 0x00, 0x00};
assert(classify(request_to_42, 7, true, 42).outcome == IrFoxPacketOutcome::Accepted);
assert(classify(request_to_42, 7, true, 41).outcome == IrFoxPacketOutcome::IgnoredAddress);
const uint8_t back_to_42[] = {0x87, 0x00, 0x01, 0x00, 0x2A, 0x00, 0x00};
assert(classify(back_to_42, 7, true, 42).outcome == IrFoxPacketOutcome::Accepted);
assert(classify(back_to_42, 7, true, 41).outcome == IrFoxPacketOutcome::IgnoredAddress);
const uint8_t back[] = {0x05, 0x00, 0x01, 0x00, 0x00};
assert(classify(back, 5, true, 41).outcome == IrFoxPacketOutcome::Accepted);
const uint8_t accept[] = {0x26, 0x00, 0x01, 0x55, 0x00, 0x00};
assert(classify(accept, 6, true, 41).outcome == IrFoxPacketOutcome::Accepted);
const uint8_t unknown[] = {0x63, 0x00, 0x00};
assert(classify(unknown, 3, true).outcome == IrFoxPacketOutcome::RawOnlyUnknownType);
const uint8_t short_data[] = {0xE5, 0x00, 0x01, 0x00, 0x2A};
assert(classify(short_data, 5, true).outcome == IrFoxPacketOutcome::RawOnlyTypedLength);
assert(classify(data_to_42, 7, false).outcome == IrFoxPacketOutcome::RejectedCrc);
const uint8_t too_short[] = {0xE2, 0x00};
const IrFoxPacketDecision short_decision = classify(too_short, 2, false);
assert(short_decision.outcome == IrFoxPacketOutcome::RejectedLength);
assert(short_decision.message_type == irfox::kMsgDataAccept);
return 0;
}