Example #1
0
static int test_fixed(void)
{
    char bytes[] = { 0xD, 0xA, 0xD, 0xA, 0xB, 0xA, 0xB, 0xA };
    avro_schema_t schema = avro_schema_fixed("msg", sizeof(bytes));
    avro_datum_t datum;
    avro_datum_t expected_datum;

    datum = avro_givefixed(schema, bytes, sizeof(bytes), NULL);
    write_read_check(schema, datum, NULL, NULL, "fixed");
    test_json(datum, "\"\\r\\n\\r\\n\\u000b\\n\\u000b\\n\"");
    avro_datum_decref(datum);

    datum = avro_givefixed(schema, NULL, sizeof(bytes), NULL);
    avro_givefixed_set(datum, bytes, sizeof(bytes), NULL);
    expected_datum = avro_givefixed(schema, bytes, sizeof(bytes), NULL);
    if (!avro_datum_equal(datum, expected_datum)) {
        fprintf(stderr,
                "Expected equal fixed instances.\n");
        exit(EXIT_FAILURE);
    }
    avro_datum_decref(datum);
    avro_datum_decref(expected_datum);

    // The following should bork if we don't copy the fixed value
    // correctly (since we'll try to free a static string).

    datum = avro_fixed(schema, "original", 8);
    avro_fixed_set(datum, "alsothis", 8);
    avro_datum_decref(datum);

    avro_schema_decref(schema);
    return 0;
}
Example #2
0
static int
avro_datum_value_set_fixed(const avro_value_iface_t *iface,
			   void *vself, void *buf, size_t size)
{
	AVRO_UNUSED(iface);
	avro_datum_t  self = (avro_datum_t) vself;
	check_param(EINVAL, self, "datum instance");
	return avro_fixed_set(self, (const char *) buf, size);
}