예제 #1
0
static void test_bytes_get_size(void **state)
{
    (void)state;

    ASSERT_EQUAL(kaa_bytes_get_size(NULL), 0);

    const uint8_t plain_bytes1[] = { 0x0, 0x1, 0x2, 0x3, 0x4 };
    size_t plain_bytes1_size = sizeof(plain_bytes1) / sizeof(char);

    kaa_bytes_t *kaa_bytes1 = kaa_bytes_copy_create(plain_bytes1, plain_bytes1_size);
    ASSERT_EQUAL(kaa_bytes_get_size(kaa_bytes1), avro_long_get_size(kaa_bytes1->size) + kaa_bytes1->size);

    kaa_bytes_destroy(kaa_bytes1);
}
예제 #2
0
static void test_bytes_deserialize(void **state)
{
    (void)state;

    const uint8_t plain_bytes1[] = { 0x0, 0x1, 0x2, 0x3, 0x4 };
    size_t plain_bytes1_size = sizeof(plain_bytes1) / sizeof(char);

    kaa_bytes_t *kaa_bytes1 = kaa_bytes_copy_create(plain_bytes1, plain_bytes1_size);
    ASSERT_NOT_NULL(kaa_bytes1);

    size_t expected_size = kaa_bytes_get_size(kaa_bytes1);
    char buffer[expected_size];
    avro_writer_t avro_writer = avro_writer_memory(buffer, expected_size);

    kaa_bytes_serialize(avro_writer, kaa_bytes1);

    avro_reader_t avro_reader = avro_reader_memory(buffer, expected_size);

    kaa_bytes_t *kaa_bytes2 = kaa_bytes_deserialize(avro_reader);
    ASSERT_NOT_NULL(kaa_bytes2);

    ASSERT_EQUAL(memcmp(kaa_bytes2->buffer, plain_bytes1, plain_bytes1_size), 0);
    ASSERT_EQUAL(memcmp(kaa_bytes2->buffer, kaa_bytes1->buffer, plain_bytes1_size), 0);

    kaa_bytes_destroy(kaa_bytes2);
    avro_reader_free(avro_reader);
    avro_writer_free(avro_writer);
    kaa_bytes_destroy(kaa_bytes1);
}
예제 #3
0
static void test_bytes_serialize(void **state)
{
    (void)state;

    const uint8_t plain_bytes1[] = { 0x0, 0x1, 0x2, 0x3, 0x4 };
    size_t plain_bytes1_size = sizeof(plain_bytes1) / sizeof(char);

    kaa_bytes_t *kaa_bytes1 = kaa_bytes_copy_create(plain_bytes1, plain_bytes1_size);

    size_t expected_size = kaa_bytes_get_size(kaa_bytes1);
    char auto_buffer[expected_size];
    avro_writer_t auto_avro_writer = avro_writer_memory(auto_buffer, expected_size);
    char manual_buffer[expected_size];
    avro_writer_t manual_avro_writer = avro_writer_memory(manual_buffer, expected_size);

    ASSERT_EQUAL(auto_avro_writer->buf, auto_buffer);
    ASSERT_EQUAL(auto_avro_writer->written, 0);
    ASSERT_EQUAL((size_t)auto_avro_writer->len, expected_size);

    kaa_bytes_serialize(auto_avro_writer, NULL);

    ASSERT_EQUAL(auto_avro_writer->buf, auto_buffer);
    ASSERT_EQUAL(auto_avro_writer->written, 0);
    ASSERT_EQUAL((size_t)auto_avro_writer->len, expected_size);

    kaa_bytes_t fake_kaa_bytes = { NULL, 0, NULL };

    kaa_bytes_serialize(auto_avro_writer, &fake_kaa_bytes);

    ASSERT_EQUAL(auto_avro_writer->buf, auto_buffer);
    ASSERT_EQUAL(auto_avro_writer->written, 0);
    ASSERT_EQUAL((size_t)auto_avro_writer->len, expected_size);

    /*
     * REAL DATA
     */
    kaa_bytes_serialize(auto_avro_writer, kaa_bytes1);

    avro_binary_encoding.write_bytes(manual_avro_writer, (const char *)plain_bytes1, plain_bytes1_size);

    ASSERT_EQUAL(memcmp(auto_buffer, manual_buffer, expected_size), 0);

    kaa_bytes_destroy(kaa_bytes1);
    avro_writer_free(manual_avro_writer);
    avro_writer_free(auto_avro_writer);
}
예제 #4
0
static size_t kaa_union_null_or_fixed_get_size(void *data)
{
    if (data) {
        kaa_union_t *kaa_union = (kaa_union_t *)data;
        size_t union_size = avro_long_get_size(kaa_union->type);

        switch (kaa_union->type) {
        case KAA_UNION_NULL_OR_FIXED_BRANCH_1:
        {
            if (kaa_union->data) {
                union_size += kaa_bytes_get_size(kaa_union->data);
            }
            break;
        }
        default:
            break;
        }

        return union_size;
    }

    return 0;
}