aboutsummaryrefslogtreecommitdiff
path: root/src/systemcmds/tests/test_bson.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/systemcmds/tests/test_bson.c')
-rw-r--r--src/systemcmds/tests/test_bson.c72
1 files changed, 57 insertions, 15 deletions
diff --git a/src/systemcmds/tests/test_bson.c b/src/systemcmds/tests/test_bson.c
index 12d598df4..02384ebfe 100644
--- a/src/systemcmds/tests/test_bson.c
+++ b/src/systemcmds/tests/test_bson.c
@@ -58,18 +58,29 @@ static const uint8_t sample_data[256] = {0};
static int
encode(bson_encoder_t encoder)
{
- if (bson_encoder_append_bool(encoder, "bool1", sample_bool) != 0)
+ if (bson_encoder_append_bool(encoder, "bool1", sample_bool) != 0) {
warnx("FAIL: encoder: append bool failed");
- if (bson_encoder_append_int(encoder, "int1", sample_small_int) != 0)
+ }
+
+ if (bson_encoder_append_int(encoder, "int1", sample_small_int) != 0) {
warnx("FAIL: encoder: append int failed");
- if (bson_encoder_append_int(encoder, "int2", sample_big_int) != 0)
+ }
+
+ if (bson_encoder_append_int(encoder, "int2", sample_big_int) != 0) {
warnx("FAIL: encoder: append int failed");
- if (bson_encoder_append_double(encoder, "double1", sample_double) != 0)
+ }
+
+ if (bson_encoder_append_double(encoder, "double1", sample_double) != 0) {
warnx("FAIL: encoder: append double failed");
- if (bson_encoder_append_string(encoder, "string1", sample_string) != 0)
+ }
+
+ if (bson_encoder_append_string(encoder, "string1", sample_string) != 0) {
warnx("FAIL: encoder: append string failed");
- if (bson_encoder_append_binary(encoder, "data1", BSON_BIN_BINARY, sizeof(sample_data), sample_data) != 0)
+ }
+
+ if (bson_encoder_append_binary(encoder, "data1", BSON_BIN_BINARY, sizeof(sample_data), sample_data) != 0) {
warnx("FAIL: encoder: append data failed");
+ }
bson_encoder_fini(encoder);
@@ -86,51 +97,63 @@ decode_callback(bson_decoder_t decoder, void *private, bson_node_t node)
warnx("FAIL: decoder: bool1 type %d, expected %d", node->type, BSON_BOOL);
return 1;
}
+
if (node->b != sample_bool) {
- warnx("FAIL: decoder: bool1 value %s, expected %s",
- (node->b ? "true" : "false"),
- (sample_bool ? "true" : "false"));
+ warnx("FAIL: decoder: bool1 value %s, expected %s",
+ (node->b ? "true" : "false"),
+ (sample_bool ? "true" : "false"));
return 1;
}
+
warnx("PASS: decoder: bool1");
return 1;
}
+
if (!strcmp(node->name, "int1")) {
if (node->type != BSON_INT32) {
warnx("FAIL: decoder: int1 type %d, expected %d", node->type, BSON_INT32);
return 1;
}
+
if (node->i != sample_small_int) {
warnx("FAIL: decoder: int1 value %lld, expected %d", node->i, sample_small_int);
return 1;
}
+
warnx("PASS: decoder: int1");
return 1;
}
+
if (!strcmp(node->name, "int2")) {
if (node->type != BSON_INT64) {
warnx("FAIL: decoder: int2 type %d, expected %d", node->type, BSON_INT64);
return 1;
}
+
if (node->i != sample_big_int) {
warnx("FAIL: decoder: int2 value %lld, expected %lld", node->i, sample_big_int);
return 1;
}
+
warnx("PASS: decoder: int2");
return 1;
}
+
if (!strcmp(node->name, "double1")) {
if (node->type != BSON_DOUBLE) {
warnx("FAIL: decoder: double1 type %d, expected %d", node->type, BSON_DOUBLE);
return 1;
}
+
if (fabs(node->d - sample_double) > 1e-12) {
warnx("FAIL: decoder: double1 value %f, expected %f", node->d, sample_double);
return 1;
}
+
warnx("PASS: decoder: double1");
return 1;
}
+
if (!strcmp(node->name, "string1")) {
if (node->type != BSON_STRING) {
warnx("FAIL: decoder: string1 type %d, expected %d", node->type, BSON_STRING);
@@ -150,21 +173,26 @@ decode_callback(bson_decoder_t decoder, void *private, bson_node_t node)
warnx("FAIL: decoder: string1 copy failed");
return 1;
}
+
if (bson_decoder_data_pending(decoder) != 0) {
warnx("FAIL: decoder: string1 copy did not exhaust all data");
return 1;
}
+
if (sbuf[len - 1] != '\0') {
warnx("FAIL: decoder: string1 not 0-terminated");
return 1;
}
+
if (strcmp(sbuf, sample_string)) {
warnx("FAIL: decoder: string1 value '%s', expected '%s'", sbuf, sample_string);
return 1;
}
+
warnx("PASS: decoder: string1");
return 1;
}
+
if (!strcmp(node->name, "data1")) {
if (node->type != BSON_BINDATA) {
warnx("FAIL: decoder: data1 type %d, expected %d", node->type, BSON_BINDATA);
@@ -177,7 +205,7 @@ decode_callback(bson_decoder_t decoder, void *private, bson_node_t node)
warnx("FAIL: decoder: data1 length %d, expected %d", len, sizeof(sample_data));
return 1;
}
-
+
if (node->subtype != BSON_BIN_BINARY) {
warnx("FAIL: decoder: data1 subtype %d, expected %d", node->subtype, BSON_BIN_BINARY);
return 1;
@@ -189,20 +217,25 @@ decode_callback(bson_decoder_t decoder, void *private, bson_node_t node)
warnx("FAIL: decoder: data1 copy failed");
return 1;
}
+
if (bson_decoder_data_pending(decoder) != 0) {
warnx("FAIL: decoder: data1 copy did not exhaust all data");
return 1;
}
+
if (memcmp(sample_data, dbuf, len)) {
warnx("FAIL: decoder: data1 compare fail");
return 1;
}
+
warnx("PASS: decoder: data1");
return 1;
}
- if (node->type != BSON_EOO)
+ if (node->type != BSON_EOO) {
warnx("FAIL: decoder: unexpected node name '%s'", node->name);
+ }
+
return 1;
}
@@ -225,19 +258,28 @@ test_bson(int argc, char *argv[])
int len;
/* encode data to a memory buffer */
- if (bson_encoder_init_buf(&encoder, NULL, 0))
+ if (bson_encoder_init_buf(&encoder, NULL, 0)) {
errx(1, "FAIL: bson_encoder_init_buf");
+ }
+
encode(&encoder);
len = bson_encoder_buf_size(&encoder);
- if (len <= 0)
+
+ if (len <= 0) {
errx(1, "FAIL: bson_encoder_buf_len");
+ }
+
buf = bson_encoder_buf_data(&encoder);
- if (buf == NULL)
+
+ if (buf == NULL) {
errx(1, "FAIL: bson_encoder_buf_data");
+ }
/* now test-decode it */
- if (bson_decoder_init_buf(&decoder, buf, len, decode_callback, NULL))
+ if (bson_decoder_init_buf(&decoder, buf, len, decode_callback, NULL)) {
errx(1, "FAIL: bson_decoder_init_buf");
+ }
+
decode(&decoder);
free(buf);