summaryrefslogtreecommitdiff
path: root/src/libdisfluid/disfluid-tests.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libdisfluid/disfluid-tests.h')
-rw-r--r--src/libdisfluid/disfluid-tests.h154
1 files changed, 154 insertions, 0 deletions
diff --git a/src/libdisfluid/disfluid-tests.h b/src/libdisfluid/disfluid-tests.h
index bcc50b4..98cbdf3 100644
--- a/src/libdisfluid/disfluid-tests.h
+++ b/src/libdisfluid/disfluid-tests.h
@@ -20,6 +20,9 @@ static inline int test_append_count (const char *filename, size_t *n);
# include "disfluid-append-only-file.h"
# include "disfluid-trie.h"
# include "disfluid-cache-group.h"
+# include "disfluid-activity-object.h"
+
+# include <jansson.h>
# define BYTES * 1
@@ -1220,6 +1223,150 @@ START_TEST (test_aof_cache_group)
END_TEST
/* *INDENT-ON* */
+/* *INDENT-OFF* */
+START_TEST (test_activity_context_1)
+/* *INDENT-ON* */
+
+{
+ static const char *activity =
+ "{"
+ "\"@context\": \"https://www.w3.org/ns/activitystreams\","
+ "\"summary\": \"A note\","
+ "\"type\": \"Note\"," "\"content\": \"My dog has fleas.\"" "}";
+ json_error_t error;
+ json_t *object = json_loads (activity, 0, &error);
+ ck_assert_ptr_nonnull (object);
+ string_desc_t prefix;
+ int ctx_error = activity_object_context_prefix (object, &prefix);
+ ck_assert_int_eq (ctx_error, 0);
+ ck_assert_int_eq (prefix._nbytes, 0);
+ ck_assert_ptr_null (prefix._data);
+ json_decref (object);
+}
+/* *INDENT-OFF* */
+END_TEST
+/* *INDENT-ON* */
+
+/* *INDENT-OFF* */
+START_TEST (test_activity_context_2)
+/* *INDENT-ON* */
+
+{
+ static const char *activity =
+ "{"
+ "\"@context\": {"
+ "\"@vocab\": \"https://www.w3.org/ns/activitystreams#\","
+ "\"ext\": \"https://canine-extension.example/terms/\","
+ "\"@language\": \"en\""
+ "},"
+ "\"summary\": \"A note\","
+ "\"type\": \"Note\","
+ "\"content\": \"My dog has fleas.\","
+ "\"ext:nose\": 0," "\"ext:smell\": \"terrible\"" "}";
+ json_error_t error;
+ json_t *object = json_loads (activity, 0, &error);
+ ck_assert_ptr_nonnull (object);
+ string_desc_t prefix;
+ int ctx_error = activity_object_context_prefix (object, &prefix);
+ ck_assert_int_eq (ctx_error, 0);
+ ck_assert_int_eq (prefix._nbytes, 0);
+ ck_assert_ptr_null (prefix._data);
+ json_decref (object);
+}
+/* *INDENT-OFF* */
+END_TEST
+/* *INDENT-ON* */
+
+/* *INDENT-OFF* */
+START_TEST (test_activity_context_2bis)
+/* *INDENT-ON* */
+
+{
+ static const char *activity =
+ "{"
+ "\"@context\": {"
+ "\"@vocab\": \"https://example.com/\","
+ "\"as\": \"https://www.w3.org/ns/activitystreams#\","
+ "\"ext\": \"https://canine-extension.example/terms/\","
+ "\"@language\": \"en\""
+ "},"
+ "\"as:summary\": \"A note\","
+ "\"as:type\": \"Note\","
+ "\"as:content\": \"My dog has fleas.\","
+ "\"ext:nose\": 0," "\"ext:smell\": \"terrible\"" "}";
+ json_error_t error;
+ json_t *object = json_loads (activity, 0, &error);
+ ck_assert_ptr_nonnull (object);
+ string_desc_t prefix;
+ int ctx_error = activity_object_context_prefix (object, &prefix);
+ ck_assert_int_eq (ctx_error, 0);
+ ck_assert_int_eq (prefix._nbytes, 3);
+ ck_assert_int_eq (memcmp (prefix._data, "as:", 3), 0);
+ FREE (prefix._data);
+ json_decref (object);
+}
+/* *INDENT-OFF* */
+END_TEST
+/* *INDENT-ON* */
+
+/* *INDENT-OFF* */
+START_TEST (test_activity_context_3)
+/* *INDENT-ON* */
+
+{
+ static const char *activity =
+ "{"
+ "\"@context\": ["
+ "\"https://www.w3.org/ns/activitystreams\","
+ "{"
+ "\"css\": \"http://www.w3.org/ns/oa#styledBy\""
+ "}"
+ "],"
+ "\"summary\": \"A note\","
+ "\"type\": \"Note\","
+ "\"content\": \"My dog has fleas.\","
+ "\"css\": \"http://www.csszengarden.com/217/217.css?v=8may2013\"" "}";
+ json_error_t error;
+ json_t *object = json_loads (activity, 0, &error);
+ ck_assert_ptr_nonnull (object);
+ string_desc_t prefix;
+ int ctx_error = activity_object_context_prefix (object, &prefix);
+ ck_assert_int_eq (ctx_error, 0);
+ ck_assert_int_eq (prefix._nbytes, 0);
+ ck_assert_ptr_null (prefix._data);
+ json_decref (object);
+}
+/* *INDENT-OFF* */
+END_TEST
+/* *INDENT-ON* */
+
+/* *INDENT-OFF* */
+START_TEST (test_activity_context_none)
+/* *INDENT-ON* */
+
+{
+ static const char *activity =
+ "{"
+ "\"http://schema.org/name\": \"Manu Sporny\","
+ "\"http://schema.org/url\": {"
+ "\"@id\": \"http://manu.sporny.org/\""
+ "},"
+ "\"http://schema.org/image\": {"
+ "\"@id\": \"http://manu.sporny.org/images/manu.png\"" "}" "}";
+ json_error_t error;
+ json_t *object = json_loads (activity, 0, &error);
+ ck_assert_ptr_nonnull (object);
+ string_desc_t prefix;
+ int ctx_error = activity_object_context_prefix (object, &prefix);
+ ck_assert_int_lt (ctx_error, 0);
+ ck_assert_int_eq (prefix._nbytes, 0);
+ ck_assert_ptr_null (prefix._data);
+ json_decref (object);
+}
+/* *INDENT-OFF* */
+END_TEST
+/* *INDENT-ON* */
+
static inline char *
tests_read_whole_file (int file)
{
@@ -1281,6 +1428,13 @@ run_tests (size_t *n_tests, size_t *n_errors)
tcase_add_test (aof, test_aof_can_read_locked_file);
tcase_add_test (aof, test_aof_trie_fold);
suite_add_tcase (suite, aof);
+ TCase *activity = tcase_create (_("activity"));
+ tcase_add_test (activity, test_activity_context_1);
+ tcase_add_test (activity, test_activity_context_2);
+ tcase_add_test (activity, test_activity_context_2bis);
+ tcase_add_test (activity, test_activity_context_3);
+ tcase_add_test (activity, test_activity_context_none);
+ suite_add_tcase (suite, activity);
SRunner *runner = srunner_create (suite);
char log_file_name[] = "/tmp/disfluid-unit-tests-XXXXXX";
int log_file = mkstemp (log_file_name);