static int
avro_datum_value_set_enum(const avro_value_iface_t *iface,
			  void *vself, int val)
{
	AVRO_UNUSED(iface);
	avro_datum_t  self = (avro_datum_t) vself;
	check_param(EINVAL, self, "datum instance");
	return avro_enum_set(self, val);
}
Beispiel #2
0
static int test_enum(void)
{
    enum avro_languages {
        AVRO_C,
        AVRO_CPP,
        AVRO_PYTHON,
        AVRO_RUBY,
        AVRO_JAVA
    };
    avro_schema_t schema = avro_schema_enum("language");
    avro_datum_t datum = avro_enum(schema, AVRO_C);

    avro_schema_enum_symbol_append(schema, "C");
    avro_schema_enum_symbol_append(schema, "C++");
    avro_schema_enum_symbol_append(schema, "Python");
    avro_schema_enum_symbol_append(schema, "Ruby");
    avro_schema_enum_symbol_append(schema, "Java");

    if (avro_enum_get(datum) != AVRO_C) {
        fprintf(stderr, "Unexpected enum value AVRO_C\n");
        exit(EXIT_FAILURE);
    }

    if (strcmp(avro_enum_get_name(datum), "C") != 0) {
        fprintf(stderr, "Unexpected enum value name C\n");
        exit(EXIT_FAILURE);
    }

    write_read_check(schema, datum, NULL, NULL, "enum");
    test_json(datum, "\"C\"");

    avro_enum_set(datum, AVRO_CPP);
    if (strcmp(avro_enum_get_name(datum), "C++") != 0) {
        fprintf(stderr, "Unexpected enum value name C++\n");
        exit(EXIT_FAILURE);
    }

    write_read_check(schema, datum, NULL, NULL, "enum");
    test_json(datum, "\"C++\"");

    avro_enum_set_name(datum, "Python");
    if (avro_enum_get(datum) != AVRO_PYTHON) {
        fprintf(stderr, "Unexpected enum value AVRO_PYTHON\n");
        exit(EXIT_FAILURE);
    }

    write_read_check(schema, datum, NULL, NULL, "enum");
    test_json(datum, "\"Python\"");

    avro_datum_decref(datum);
    avro_schema_decref(schema);
    return 0;
}