[libgdata] tests: Add more tests for GDataQuery
- From: Philip Withnall <pwithnall src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgdata] tests: Add more tests for GDataQuery
- Date: Fri, 2 Aug 2013 10:10:25 +0000 (UTC)
commit 6bc8c36fa23d6722dcc44724a8d2feb2c99ad8e0
Author: Philip Withnall <philip tecnocode co uk>
Date: Mon Jul 8 11:56:53 2013 +0100
tests: Add more tests for GDataQuery
This pushes its test coverage up to 92.3% of lines, and 94.6% of functions.
gdata/tests/general.c | 204 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 204 insertions(+), 0 deletions(-)
---
diff --git a/gdata/tests/general.c b/gdata/tests/general.c
index 93e5bb2..f4b6d4e 100644
--- a/gdata/tests/general.c
+++ b/gdata/tests/general.c
@@ -936,6 +936,206 @@ test_query_categories (void)
}
static void
+test_query_dates (void)
+{
+ GDataQuery *query;
+ gchar *query_uri;
+
+ query = gdata_query_new ("baz");
+
+ /* updated-min */
+ gdata_query_set_updated_min (query, 1373280114); /* 2013-07-08T10:41:54Z */
+ query_uri = gdata_query_get_query_uri (query, "http://example.com");
+ g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&updated-min=2013-07-08T10:41:54Z");
+ g_free (query_uri);
+ gdata_query_set_updated_min (query, -1);
+
+ /* updated-max */
+ gdata_query_set_updated_max (query, 1373280114); /* 2013-07-08T10:41:54Z */
+ query_uri = gdata_query_get_query_uri (query, "http://example.com");
+ g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&updated-max=2013-07-08T10:41:54Z");
+ g_free (query_uri);
+ gdata_query_set_updated_max (query, -1);
+
+ /* published-min */
+ gdata_query_set_published_min (query, 1373280114); /* 2013-07-08T10:41:54Z */
+ query_uri = gdata_query_get_query_uri (query, "http://example.com");
+ g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&published-min=2013-07-08T10:41:54Z");
+ g_free (query_uri);
+ gdata_query_set_published_min (query, -1);
+
+ /* published-max */
+ gdata_query_set_published_max (query, 1373280114); /* 2013-07-08T10:41:54Z */
+ query_uri = gdata_query_get_query_uri (query, "http://example.com");
+ g_assert_cmpstr (query_uri, ==, "http://example.com?q=baz&published-max=2013-07-08T10:41:54Z");
+ g_free (query_uri);
+ gdata_query_set_published_max (query, -1);
+
+ g_object_unref (query);
+}
+
+static void
+test_query_strict (void)
+{
+ GDataQuery *query;
+ gchar *query_uri;
+
+ query = gdata_query_new ("bar");
+
+ gdata_query_set_is_strict (query, TRUE);
+ query_uri = gdata_query_get_query_uri (query, "http://example.com");
+ g_assert_cmpstr (query_uri, ==, "http://example.com?q=bar&strict=true");
+ g_free (query_uri);
+
+ gdata_query_set_is_strict (query, FALSE);
+ query_uri = gdata_query_get_query_uri (query, "http://example.com");
+ g_assert_cmpstr (query_uri, ==, "http://example.com?q=bar");
+ g_free (query_uri);
+
+ g_object_unref (query);
+}
+
+static void
+test_query_pagination (void)
+{
+ GDataQuery *query;
+ gchar *query_uri;
+
+ query = gdata_query_new ("test");
+ gdata_query_set_max_results (query, 15);
+ gdata_query_set_etag (query, "etag"); /* this should be cleared by pagination */
+
+ query_uri = gdata_query_get_query_uri (query, "http://example.com/");
+ g_assert_cmpstr (query_uri, ==, "http://example.com/?q=test&max-results=15");
+ g_free (query_uri);
+
+ /* Try the next and previous pages. */
+ gdata_query_next_page (query);
+ g_assert (gdata_query_get_etag (query) == NULL);
+
+ query_uri = gdata_query_get_query_uri (query, "http://example.com/");
+ g_assert_cmpstr (query_uri, ==, "http://example.com/?q=test&start-index=16&max-results=15");
+ g_free (query_uri);
+
+ gdata_query_set_etag (query, "etag");
+ g_assert (gdata_query_previous_page (query) == TRUE);
+ g_assert (gdata_query_get_etag (query) == NULL);
+
+ query_uri = gdata_query_get_query_uri (query, "http://example.com/");
+ g_assert_cmpstr (query_uri, ==, "http://example.com/?q=test&max-results=15");
+ g_free (query_uri);
+
+ /* Try another previous page. This should fail, and the ETag should be untouched. */
+ gdata_query_set_etag (query, "etag");
+ g_assert (gdata_query_previous_page (query) == FALSE);
+ g_assert_cmpstr (gdata_query_get_etag (query), ==, "etag");
+
+ g_object_unref (query);
+
+ /* Try the alternate constructor. */
+ query = gdata_query_new_with_limits ("test", 40, 10);
+
+ query_uri = gdata_query_get_query_uri (query, "http://example.com/");
+ g_assert_cmpstr (query_uri, ==, "http://example.com/?q=test&start-index=40&max-results=10");
+ g_free (query_uri);
+
+ /* Try the next and previous pages again. */
+ gdata_query_next_page (query);
+
+ query_uri = gdata_query_get_query_uri (query, "http://example.com/");
+ g_assert_cmpstr (query_uri, ==, "http://example.com/?q=test&start-index=50&max-results=10");
+ g_free (query_uri);
+
+ g_assert (gdata_query_previous_page (query) == TRUE);
+
+ query_uri = gdata_query_get_query_uri (query, "http://example.com/");
+ g_assert_cmpstr (query_uri, ==, "http://example.com/?q=test&start-index=40&max-results=10");
+ g_free (query_uri);
+
+ g_assert (gdata_query_previous_page (query) == TRUE);
+
+ query_uri = gdata_query_get_query_uri (query, "http://example.com/");
+ g_assert_cmpstr (query_uri, ==, "http://example.com/?q=test&start-index=30&max-results=10");
+ g_free (query_uri);
+}
+
+static void
+notify_cb (GObject *obj, GParamSpec *pspec, gpointer user_data)
+{
+ gboolean *notification_received = user_data;
+ g_assert (*notification_received == FALSE);
+ *notification_received = TRUE;
+}
+
+static void
+test_query_properties (void)
+{
+ GDataQuery *query;
+ gboolean notification_received = FALSE;
+ gulong handler_id;
+
+ query = gdata_query_new ("default");
+
+#define CHECK_PROPERTY(cmptype, name_hyphens, name_underscores, default_val, new_val, new_val2, val_type,
free_val) \
+ { \
+ val_type val; \
+ \
+ handler_id = g_signal_connect (query, "notify::" name_hyphens, (GCallback) notify_cb,
¬ification_received); \
+ \
+ g_assert_##cmptype (gdata_query_get_##name_underscores (query), ==, default_val); \
+ g_object_get (query, name_hyphens, &val, NULL); \
+ g_assert_##cmptype (val, ==, default_val); \
+ if (free_val == TRUE) { \
+ g_free ((gpointer) ((guintptr) val)); \
+ } \
+ \
+ notification_received = FALSE; \
+ gdata_query_set_##name_underscores (query, new_val); \
+ g_assert (notification_received == TRUE); \
+ \
+ g_assert_##cmptype (gdata_query_get_##name_underscores (query), ==, new_val); \
+ \
+ notification_received = FALSE; \
+ g_object_set (query, name_hyphens, new_val2, NULL); \
+ g_assert (notification_received == TRUE); \
+ \
+ g_assert_##cmptype (gdata_query_get_##name_underscores (query), ==, new_val2); \
+ \
+ g_signal_handler_disconnect (query, handler_id); \
+ }
+#define CHECK_PROPERTY_STR(name_hyphens, name_underscores, default_val) \
+ CHECK_PROPERTY (cmpstr, name_hyphens, name_underscores, default_val, "new", "new2", gchar*, TRUE)
+#define CHECK_PROPERTY_INT64(name_hyphens, name_underscores, default_val) \
+ CHECK_PROPERTY (cmpint, name_hyphens, name_underscores, default_val, 123, 5134132, gint64, FALSE)
+#define CHECK_PROPERTY_UINT(name_hyphens, name_underscores, default_val) \
+ CHECK_PROPERTY (cmpuint, name_hyphens, name_underscores, default_val, 535, 123, guint, FALSE)
+#define CHECK_PROPERTY_BOOLEAN(name_hyphens, name_underscores, default_val) \
+ CHECK_PROPERTY (cmpuint, name_hyphens, name_underscores, default_val, TRUE, FALSE, gboolean, FALSE)
+
+ CHECK_PROPERTY_STR ("q", q, "default");
+ CHECK_PROPERTY_STR ("categories", categories, NULL);
+ CHECK_PROPERTY_STR ("author", author, NULL);
+ CHECK_PROPERTY_INT64 ("updated-min", updated_min, -1);
+ CHECK_PROPERTY_INT64 ("updated-max", updated_max, -1);
+ CHECK_PROPERTY_INT64 ("published-min", published_min, -1);
+ CHECK_PROPERTY_INT64 ("published-max", published_max, -1);
+ CHECK_PROPERTY_UINT ("start-index", start_index, 0);
+#define gdata_query_get_is_strict gdata_query_is_strict
+ CHECK_PROPERTY_BOOLEAN ("is-strict", is_strict, FALSE);
+#undef gdata_query_get_is_strict
+ CHECK_PROPERTY_UINT ("max-results", max_results, 0);
+ CHECK_PROPERTY_STR ("etag", etag, NULL);
+
+#undef CHECK_PROPERTY_BOOLEAN
+#undef CHECK_PROPERTY_UINT
+#undef CHECK_PROPERTY_INT64
+#undef CHECK_PROPERTY_STR
+#undef CHECK_PROPERTY
+
+ g_object_unref (query);
+}
+
+static void
test_query_unicode (void)
{
GDataQuery *query;
@@ -3804,6 +4004,10 @@ main (int argc, char *argv[])
g_test_add_func ("/feed/escaping", test_feed_escaping);
g_test_add_func ("/query/categories", test_query_categories);
+ g_test_add_func ("/query/dates", test_query_dates);
+ g_test_add_func ("/query/strict", test_query_strict);
+ g_test_add_func ("/query/pagination", test_query_pagination);
+ g_test_add_func ("/query/properties", test_query_properties);
g_test_add_func ("/query/unicode", test_query_unicode);
g_test_add_func ("/query/etag", test_query_etag);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]