65 lines
1.7 KiB
C++
65 lines
1.7 KiB
C++
#include <iostream>
|
|
|
|
#include <unity.h>
|
|
|
|
#include <Packets/String.h>
|
|
|
|
void setUp() {}
|
|
void tearDown() {}
|
|
|
|
void test_encodeString() {
|
|
const char test[] = "abcd";
|
|
uint8_t buffer[6];
|
|
const uint8_t check[] = {0x00, 0x04, 'a', 'b', 'c', 'd'};
|
|
const uint32_t length = 6;
|
|
|
|
TEST_ASSERT_EQUAL_UINT32(length, espMqttClientInternals::encodeString(test, buffer));
|
|
TEST_ASSERT_EQUAL_UINT8_ARRAY(check, buffer, length);
|
|
}
|
|
|
|
void test_emtpyString() {
|
|
const char test[] = "";
|
|
uint8_t buffer[2];
|
|
const uint8_t check[] = {0x00, 0x00};
|
|
const uint32_t length = 2;
|
|
|
|
TEST_ASSERT_EQUAL_UINT32(length, espMqttClientInternals::encodeString(test, buffer));
|
|
TEST_ASSERT_EQUAL_UINT8_ARRAY(check, buffer, length);
|
|
}
|
|
|
|
void test_longString() {
|
|
const size_t maxSize = 65535;
|
|
char test[maxSize + 1];
|
|
test[maxSize] = '\0';
|
|
memset(test, 'a', maxSize);
|
|
uint8_t buffer[maxSize + 3];
|
|
uint8_t check[maxSize + 2];
|
|
check[0] = 0xFF;
|
|
check[1] = 0xFF;
|
|
memset(&check[2], 'a', maxSize);
|
|
const uint32_t length = 2 + maxSize;
|
|
|
|
TEST_ASSERT_EQUAL_UINT32(length, espMqttClientInternals::encodeString(test, buffer));
|
|
TEST_ASSERT_EQUAL_UINT8_ARRAY(check, buffer, length);
|
|
}
|
|
|
|
void test_tooLongString() {
|
|
const size_t maxSize = 65535;
|
|
char test[maxSize + 2];
|
|
test[maxSize + 1] = '\0';
|
|
memset(test, 'a', maxSize + 1);
|
|
uint8_t buffer[maxSize + 4]; // extra 4 bytes for headroom: test progam, don't test test
|
|
const uint32_t length = 0;
|
|
|
|
TEST_ASSERT_EQUAL_UINT32(length, espMqttClientInternals::encodeString(test, buffer));
|
|
}
|
|
|
|
int main() {
|
|
UNITY_BEGIN();
|
|
RUN_TEST(test_encodeString);
|
|
RUN_TEST(test_emtpyString);
|
|
RUN_TEST(test_longString);
|
|
RUN_TEST(test_tooLongString);
|
|
return UNITY_END();
|
|
}
|