#include #include #include "packet_mosq.h" static void byte_read_helper( uint8_t *payload, int remaining_length, int rc_expected, uint8_t value_expected) { struct mosquitto__packet packet; uint8_t value = 0; int rc; memset(&packet, 0, sizeof(struct mosquitto__packet)); packet.payload = payload; packet.remaining_length = remaining_length; rc = packet__read_byte(&packet, &value); CU_ASSERT_EQUAL(rc, rc_expected); CU_ASSERT_EQUAL(value, value_expected); } static void uint16_read_helper( uint8_t *payload, int remaining_length, int rc_expected, uint16_t value_expected) { struct mosquitto__packet packet; uint16_t value = 0; int rc; memset(&packet, 0, sizeof(struct mosquitto__packet)); packet.payload = payload; packet.remaining_length = remaining_length; rc = packet__read_uint16(&packet, &value); CU_ASSERT_EQUAL(rc, rc_expected); CU_ASSERT_EQUAL(value, value_expected); } static void uint32_read_helper( uint8_t *payload, int remaining_length, int rc_expected, uint32_t value_expected) { struct mosquitto__packet packet; uint32_t value = 0; int rc; memset(&packet, 0, sizeof(struct mosquitto__packet)); packet.payload = payload; packet.remaining_length = remaining_length; rc = packet__read_uint32(&packet, &value); CU_ASSERT_EQUAL(rc, rc_expected); CU_ASSERT_EQUAL(value, value_expected); } static void varint_read_helper( uint8_t *payload, int remaining_length, int rc_expected, int32_t value_expected, int8_t bytes_expected) { struct mosquitto__packet packet; int32_t value = -1; int8_t bytes = -1; int rc; memset(&packet, 0, sizeof(struct mosquitto__packet)); packet.payload = payload; packet.remaining_length = remaining_length; rc = packet__read_varint(&packet, &value, &bytes); CU_ASSERT_EQUAL(rc, rc_expected); CU_ASSERT_EQUAL(value, value_expected); CU_ASSERT_EQUAL(bytes, bytes_expected); } static void binary_read_helper( uint8_t *payload, int remaining_length, int rc_expected, const uint8_t *value_expected, int length_expected) { struct mosquitto__packet packet; uint8_t *value = NULL; int length = -1; int rc; memset(&packet, 0, sizeof(struct mosquitto__packet)); packet.payload = payload; packet.remaining_length = remaining_length; rc = packet__read_binary(&packet, (uint8_t **)&value, &length); CU_ASSERT_EQUAL(rc, rc_expected); if(value_expected){ /* FIXME - this should be a memcmp */ CU_ASSERT_NSTRING_EQUAL(value, value_expected, length_expected); }else{ CU_ASSERT_EQUAL(value, NULL); } CU_ASSERT_EQUAL(length, length_expected); free(value); } static void string_read_helper( uint8_t *payload, int remaining_length, int rc_expected, const uint8_t *value_expected, int length_expected) { struct mosquitto__packet packet; uint8_t *value = NULL; int length = -1; int rc; memset(&packet, 0, sizeof(struct mosquitto__packet)); packet.payload = payload; packet.remaining_length = remaining_length; rc = packet__read_string(&packet, (char **)&value, &length); CU_ASSERT_EQUAL(rc, rc_expected); if(value_expected){ if(value){ CU_ASSERT_NSTRING_EQUAL(value, value_expected, length_expected); } }else{ CU_ASSERT_PTR_NULL(value); } CU_ASSERT_EQUAL(length, length_expected); free(value); } static void bytes_read_helper( uint8_t *payload, int remaining_length, int rc_expected, const uint8_t *value_expected, int count) { struct mosquitto__packet packet; uint8_t value[count]; int rc; int i; memset(&packet, 0, sizeof(struct mosquitto__packet)); packet.payload = payload; packet.remaining_length = remaining_length; rc = packet__read_bytes(&packet, value, count); CU_ASSERT_EQUAL(rc, rc_expected); if(rc == MOSQ_ERR_SUCCESS){ CU_ASSERT_EQUAL(packet.pos, count); } if(value_expected){ for(i=0; i