summaryrefslogtreecommitdiffstats
path: root/fluent-bit/lib/jansson-e23f558/test/suites/api/test_equal.c
diff options
context:
space:
mode:
Diffstat (limited to 'fluent-bit/lib/jansson-e23f558/test/suites/api/test_equal.c')
-rw-r--r--fluent-bit/lib/jansson-e23f558/test/suites/api/test_equal.c202
1 files changed, 202 insertions, 0 deletions
diff --git a/fluent-bit/lib/jansson-e23f558/test/suites/api/test_equal.c b/fluent-bit/lib/jansson-e23f558/test/suites/api/test_equal.c
new file mode 100644
index 000000000..d068b7bf8
--- /dev/null
+++ b/fluent-bit/lib/jansson-e23f558/test/suites/api/test_equal.c
@@ -0,0 +1,202 @@
+/*
+ * Copyright (c) 2009-2016 Petri Lehtinen <petri@digip.org>
+ *
+ * Jansson is free software; you can redistribute it and/or modify
+ * it under the terms of the MIT license. See LICENSE for details.
+ */
+
+#include "util.h"
+#include <jansson.h>
+
+static void test_equal_simple() {
+ json_t *value1, *value2;
+
+ if (json_equal(NULL, NULL))
+ fail("json_equal fails for two NULLs");
+
+ value1 = json_true();
+ if (json_equal(value1, NULL) || json_equal(NULL, value1))
+ fail("json_equal fails for NULL");
+
+ /* this covers true, false and null as they are singletons */
+ if (!json_equal(value1, value1))
+ fail("identical objects are not equal");
+ json_decref(value1);
+
+ /* integer */
+ value1 = json_integer(1);
+ value2 = json_integer(1);
+ if (!value1 || !value2)
+ fail("unable to create integers");
+ if (!json_equal(value1, value2))
+ fail("json_equal fails for two equal integers");
+ json_decref(value2);
+
+ value2 = json_integer(2);
+ if (!value2)
+ fail("unable to create an integer");
+ if (json_equal(value1, value2))
+ fail("json_equal fails for two inequal integers");
+
+ json_decref(value1);
+ json_decref(value2);
+
+ /* real */
+ value1 = json_real(1.2);
+ value2 = json_real(1.2);
+ if (!value1 || !value2)
+ fail("unable to create reals");
+ if (!json_equal(value1, value2))
+ fail("json_equal fails for two equal reals");
+ json_decref(value2);
+
+ value2 = json_real(3.141592);
+ if (!value2)
+ fail("unable to create an real");
+ if (json_equal(value1, value2))
+ fail("json_equal fails for two inequal reals");
+
+ json_decref(value1);
+ json_decref(value2);
+
+ /* string */
+ value1 = json_string("foo");
+ value2 = json_string("foo");
+ if (!value1 || !value2)
+ fail("unable to create strings");
+ if (!json_equal(value1, value2))
+ fail("json_equal fails for two equal strings");
+ json_decref(value2);
+
+ value2 = json_string("bar");
+ if (!value2)
+ fail("unable to create an string");
+ if (json_equal(value1, value2))
+ fail("json_equal fails for two inequal strings");
+ json_decref(value2);
+
+ value2 = json_string("bar2");
+ if (!value2)
+ fail("unable to create an string");
+ if (json_equal(value1, value2))
+ fail("json_equal fails for two inequal length strings");
+
+ json_decref(value1);
+ json_decref(value2);
+}
+
+static void test_equal_array() {
+ json_t *array1, *array2;
+
+ array1 = json_array();
+ array2 = json_array();
+ if (!array1 || !array2)
+ fail("unable to create arrays");
+
+ if (!json_equal(array1, array2))
+ fail("json_equal fails for two empty arrays");
+
+ json_array_append_new(array1, json_integer(1));
+ json_array_append_new(array2, json_integer(1));
+ json_array_append_new(array1, json_string("foo"));
+ json_array_append_new(array2, json_string("foo"));
+ json_array_append_new(array1, json_integer(2));
+ json_array_append_new(array2, json_integer(2));
+ if (!json_equal(array1, array2))
+ fail("json_equal fails for two equal arrays");
+
+ json_array_remove(array2, 2);
+ if (json_equal(array1, array2))
+ fail("json_equal fails for two inequal arrays");
+
+ json_array_append_new(array2, json_integer(3));
+ if (json_equal(array1, array2))
+ fail("json_equal fails for two inequal arrays");
+
+ json_decref(array1);
+ json_decref(array2);
+}
+
+static void test_equal_object() {
+ json_t *object1, *object2;
+
+ object1 = json_object();
+ object2 = json_object();
+ if (!object1 || !object2)
+ fail("unable to create objects");
+
+ if (!json_equal(object1, object2))
+ fail("json_equal fails for two empty objects");
+
+ json_object_set_new(object1, "a", json_integer(1));
+ json_object_set_new(object2, "a", json_integer(1));
+ json_object_set_new(object1, "b", json_string("foo"));
+ json_object_set_new(object2, "b", json_string("foo"));
+ json_object_set_new(object1, "c", json_integer(2));
+ json_object_set_new(object2, "c", json_integer(2));
+ if (!json_equal(object1, object2))
+ fail("json_equal fails for two equal objects");
+
+ json_object_del(object2, "c");
+ if (json_equal(object1, object2))
+ fail("json_equal fails for two inequal objects");
+
+ json_object_set_new(object2, "c", json_integer(3));
+ if (json_equal(object1, object2))
+ fail("json_equal fails for two inequal objects");
+
+ json_object_del(object2, "c");
+ json_object_set_new(object2, "d", json_integer(2));
+ if (json_equal(object1, object2))
+ fail("json_equal fails for two inequal objects");
+
+ json_decref(object1);
+ json_decref(object2);
+}
+
+static void test_equal_complex() {
+ json_t *value1, *value2, *value3;
+
+ const char *complex_json = "{"
+ " \"integer\": 1, "
+ " \"real\": 3.141592, "
+ " \"string\": \"foobar\", "
+ " \"true\": true, "
+ " \"object\": {"
+ " \"array-in-object\": [1,true,\"foo\",{}],"
+ " \"object-in-object\": {\"foo\": \"bar\"}"
+ " },"
+ " \"array\": [\"foo\", false, null, 1.234]"
+ "}";
+
+ value1 = json_loads(complex_json, 0, NULL);
+ value2 = json_loads(complex_json, 0, NULL);
+ value3 = json_loads(complex_json, 0, NULL);
+ if (!value1 || !value2)
+ fail("unable to parse JSON");
+ if (!json_equal(value1, value2))
+ fail("json_equal fails for two equal objects");
+
+ json_array_set_new(
+ json_object_get(json_object_get(value2, "object"), "array-in-object"), 1,
+ json_false());
+ if (json_equal(value1, value2))
+ fail("json_equal fails for two inequal objects");
+
+ json_object_set_new(
+ json_object_get(json_object_get(value3, "object"), "object-in-object"), "foo",
+ json_string("baz"));
+ if (json_equal(value1, value3))
+ fail("json_equal fails for two inequal objects");
+
+ json_decref(value1);
+ json_decref(value2);
+ json_decref(value3);
+}
+
+static void run_tests() {
+ test_equal_simple();
+ test_equal_array();
+ test_equal_object();
+ test_equal_complex();
+}