Files
nuki_hub/lib/espMqttClient/test/test_remainingLength/test_remainingLength.cpp
iranl 7454208230 Revert ESP-MQTT (#508)
* Revert ESP-MQTT

* Revert ESP-MQTT

* Update sdkconfig.defaults
2024-11-02 23:07:00 +07:00

64 lines
2.3 KiB
C++

#include <iostream>
#include <unity.h>
#include <Packets/RemainingLength.h>
void setUp() {}
void tearDown() {}
// Examples takes from MQTT specification
uint8_t bytes1[] = {0x40};
uint8_t size1 = 1;
uint32_t length1 = 64;
uint8_t bytes2[] = {193, 2};
uint8_t size2 = 2;
uint32_t length2 = 321;
uint8_t bytes3[] = {0xff, 0xff, 0xff, 0x7f};
uint8_t size3 = 4;
uint32_t length3 = 268435455;
void test_remainingLengthDecode() {
TEST_ASSERT_EQUAL_INT32(length1, espMqttClientInternals::decodeRemainingLength(bytes1));
TEST_ASSERT_EQUAL_INT32(length2, espMqttClientInternals::decodeRemainingLength(bytes2));
uint8_t stream[] = {0x80, 0x80, 0x80, 0x01};
TEST_ASSERT_EQUAL_INT32(2097152 , espMqttClientInternals::decodeRemainingLength(stream));
TEST_ASSERT_EQUAL_INT32(length3, espMqttClientInternals::decodeRemainingLength(bytes3));
}
void test_remainingLengthEncode() {
uint8_t bytes[4];
TEST_ASSERT_EQUAL_UINT8(1, espMqttClientInternals::remainingLengthLength(0));
TEST_ASSERT_EQUAL_UINT8(size1, espMqttClientInternals::remainingLengthLength(length1));
TEST_ASSERT_EQUAL_UINT8(size1, espMqttClientInternals::encodeRemainingLength(length1, bytes));
TEST_ASSERT_EQUAL_UINT8_ARRAY(bytes1, bytes, size1);
TEST_ASSERT_EQUAL_UINT8(size2, espMqttClientInternals::remainingLengthLength(length2));
TEST_ASSERT_EQUAL_UINT8(size2, espMqttClientInternals::encodeRemainingLength(length2, bytes));
TEST_ASSERT_EQUAL_UINT8_ARRAY(bytes2, bytes, size2);
TEST_ASSERT_EQUAL_UINT8(size3, espMqttClientInternals::remainingLengthLength(length3));
TEST_ASSERT_EQUAL_UINT8(size3, espMqttClientInternals::encodeRemainingLength(length3, bytes));
TEST_ASSERT_EQUAL_UINT8_ARRAY(bytes3, bytes, size3);
}
void test_remainingLengthError() {
uint8_t bytes[] = {0xff, 0xff, 0xff, 0x80}; // high bit of last byte is 1
// this indicates a next byte is coming
// which is a violation of the spec
TEST_ASSERT_EQUAL_UINT8(0, espMqttClientInternals::remainingLengthLength(268435456));
TEST_ASSERT_EQUAL_INT32(-1, espMqttClientInternals::decodeRemainingLength(bytes));
}
int main() {
UNITY_BEGIN();
RUN_TEST(test_remainingLengthDecode);
RUN_TEST(test_remainingLengthEncode);
RUN_TEST(test_remainingLengthError);
return UNITY_END();
}