bool unabto_buffer_test(void) { char * raw_test_string = "asjdhc#21?(!?(92814skzjbcasa"; uint8_t data[7 + 2 + strlen(raw_test_string)]; unabto_buffer buf, raw_string_buf; buffer_write_t w_buf; buffer_read_t r_buf; uint32_t t32; uint16_t t16; uint8_t t8; uint8_t raw_string_data[strlen(raw_test_string) + 1]; buffer_init(&raw_string_buf, (uint8_t*)raw_test_string, strlen(raw_test_string)); buffer_init(&buf, data, sizeof(data)); buffer_write_init(&w_buf, &buf); if (! (buffer_write_uint32(&w_buf, 0x12345678) && buffer_write_uint16(&w_buf, 0x1234) && buffer_write_uint8(&w_buf, 0x12) && buffer_write_raw(&w_buf, &raw_string_buf) ) ) { NABTO_LOG_ERROR(("Buffer write test failed")); return false; } buffer_read_init(&r_buf, &buf); memset(raw_string_data, 0, sizeof(raw_string_data) + 1); buffer_init(&raw_string_buf, raw_string_data, sizeof(raw_string_data)); bool t = false; if (! ( buffer_read_uint32(&r_buf, &t32) && t32 == 0x12345678 && buffer_read_uint16(&r_buf, &t16) && t16 == 0x1234 && buffer_read_uint8(&r_buf, &t8) && t8 == 0x12 && (t = buffer_read_raw(&r_buf, &raw_string_buf)) && buffer_get_size(&raw_string_buf) == strlen(raw_test_string) && 0 == strncmp((char*)buffer_get_data(&raw_string_buf), raw_test_string, strlen(raw_test_string)) )) { NABTO_LOG_ERROR(("Failed read test failed")); return false; } if (buffer_read_uint32(&r_buf, &t32) || buffer_read_uint16(&r_buf, &t16) || buffer_read_uint8(&r_buf, &t8) || buffer_read_raw(&w_buf, &raw_string_buf) || buffer_write_uint32(&w_buf, 0x12345678) || buffer_write_uint16(&w_buf, 0x1234) || buffer_write_uint8(&w_buf, 0x12) || buffer_write_raw(&w_buf, &raw_string_buf) ) { NABTO_LOG_ERROR(("Some function should have returned false but returned true")); return false; } return true; }
int bvlc_delete_fdt_entry_decode(bvlc_delete_fdt_entry_t *message, buffer_t *buf) { uint16_t length; return 1 && buffer_read_u16(buf, &length) && length == 10 && bvlc_delete_fdt_entry_init(message) && buffer_read_raw(buf, message->bip_address, 6); }
int bvlc_write_bdt_decode(bvlc_write_bdt_t *message, buffer_t *buf) { int ret; uint16_t length; ret = 1 && buffer_read_u16(buf, &length) && ((length - 4) % 10) == 0 && bvlc_write_bdt_init(message, (length - 4) / 10); if(ret) { for(uint16_t i = 0; ret && i < message->entry_count; i++) { ret = 1 && buffer_read_raw(buf, message->entries[i].bip_address, 6) && buffer_read_raw(buf, message->entries[i].broadcast_mask, 4); } } return ret; }
int bvlc_forwarded_npdu_decode(bvlc_forwarded_npdu_t *message, buffer_t *buf) { uint16_t length; int ret = 1 && buffer_read_u16(buf, &length) && length >= 10 && buffer_read_raw(buf, message->original_bip_address, 6); if(ret) { message->npdu = buf->position; message->npdu_length = length - 10; } return 1; }
int bvlc_read_fdt_ack_decode(bvlc_read_fdt_ack_t *message, buffer_t *buf) { int ret = 1; uint16_t length; ret = 1 && buffer_read_u16(buf, &length) && ((length - 4) % 10) == 0 && bvlc_read_fdt_ack_init(message, (length - 4) / 10); if(ret) { for(uint16_t i = 0; ret && i < message->entry_count; i++) { ret = 1 && buffer_read_raw(buf, message->entries[i].bip_address, 6) && buffer_read_u16(buf, &message->entries[i].original_ttl) && buffer_read_u16(buf, &message->entries[i].ttl); } } return ret; }