summaryrefslogtreecommitdiff
path: root/libappstream-glib/as-self-test.c
diff options
context:
space:
mode:
Diffstat (limited to 'libappstream-glib/as-self-test.c')
-rw-r--r--libappstream-glib/as-self-test.c69
1 files changed, 69 insertions, 0 deletions
diff --git a/libappstream-glib/as-self-test.c b/libappstream-glib/as-self-test.c
index c5e404b..8ac8cbf 100644
--- a/libappstream-glib/as-self-test.c
+++ b/libappstream-glib/as-self-test.c
@@ -35,6 +35,7 @@
#include "as-enums.h"
#include "as-icon-private.h"
#include "as-image-private.h"
+#include "as-review-private.h"
#include "as-inf.h"
#include "as-markup.h"
#include "as-monitor.h"
@@ -1173,6 +1174,68 @@ as_test_image_func (void)
}
static void
+as_test_review_func (void)
+{
+ GError *error = NULL;
+ AsNode *n;
+ AsNode *root;
+ GString *xml;
+ const gchar *src =
+ "<review date=\"2016-09-15\" rating=\"80\" score=\"5\" karma=\"-1\" id=\"17\">\n"
+ "<summary>Hello world</summary>\n"
+ "<description><p>Mighty Fine</p></description>\n"
+ "<version>1.2.3</version>\n"
+ "<reviewer_id>deadbeef</reviewer_id>\n"
+ "<reviewer_name>Richard Hughes</reviewer_name>\n"
+ "<lang>en_GB</lang>\n"
+ "<metadata>\n"
+ "<value key=\"foo\">bar</value>\n"
+ "</metadata>\n"
+ "</review>\n";
+ gboolean ret;
+ g_autofree AsNodeContext *ctx = NULL;
+ g_autoptr(AsReview) review = NULL;
+
+ review = as_review_new ();
+
+ /* to object */
+ root = as_node_from_xml (src, 0, &error);
+ g_assert_no_error (error);
+ g_assert (root != NULL);
+ n = as_node_find (root, "review");
+ g_assert (n != NULL);
+ ctx = as_node_context_new ();
+ ret = as_review_node_parse (review, n, ctx, &error);
+ g_assert_no_error (error);
+ g_assert (ret);
+ as_node_unref (root);
+
+ /* verify */
+ g_assert_cmpint (as_review_get_karma (review), ==, -1);
+ g_assert_cmpint (as_review_get_score (review), ==, 5);
+ g_assert (as_review_get_date (review) != NULL);
+ g_assert_cmpstr (as_review_get_id (review), ==, "17");
+ g_assert_cmpstr (as_review_get_version (review), ==, "1.2.3");
+ g_assert_cmpstr (as_review_get_reviewer_id (review), ==, "deadbeef");
+ g_assert_cmpstr (as_review_get_reviewer_name (review), ==, "Richard Hughes");
+ g_assert_cmpstr (as_review_get_summary (review), ==, "Hello world");
+ g_assert_cmpstr (as_review_get_locale (review), ==, "en_GB");
+ g_assert_cmpstr (as_review_get_description (review), ==, "<p>Mighty Fine</p>");
+ g_assert_cmpstr (as_review_get_metadata_item (review, "foo"), ==, "bar");
+
+ /* back to node */
+ root = as_node_new ();
+ as_node_context_set_version (ctx, 0.4);
+ n = as_review_node_insert (review, root, ctx);
+ xml = as_node_to_xml (n, AS_NODE_TO_XML_FLAG_FORMAT_MULTILINE);
+ ret = as_test_compare_lines (xml->str, src, &error);
+ g_assert_no_error (error);
+ g_assert (ret);
+ g_string_free (xml, TRUE);
+ as_node_unref (root);
+}
+
+static void
as_test_bundle_func (void)
{
GError *error = NULL;
@@ -1430,6 +1493,11 @@ as_test_app_func (void)
"<image type=\"thumbnail\">http://b.png</image>\n"
"</screenshot>\n"
"</screenshots>\n"
+ "<reviews>\n"
+ "<review date=\"2016-09-15\">\n"
+ "<summary>Hello world</summary>\n"
+ "</review>\n"
+ "</reviews>\n"
"<content_rating type=\"oars-1.0\">\n"
"<content_attribute id=\"drugs-alcohol\">moderate</content_attribute>\n"
"</content_rating>\n"
@@ -4858,6 +4926,7 @@ main (int argc, char **argv)
g_test_add_func ("/AppStream/icon", as_test_icon_func);
g_test_add_func ("/AppStream/icon{embedded}", as_test_icon_embedded_func);
g_test_add_func ("/AppStream/bundle", as_test_bundle_func);
+ g_test_add_func ("/AppStream/review", as_test_review_func);
g_test_add_func ("/AppStream/translation", as_test_translation_func);
g_test_add_func ("/AppStream/image", as_test_image_func);
g_test_add_func ("/AppStream/image{resize}", as_test_image_resize_func);