[tracker/wip/carlosg/wal-and-other-fixes: 4/8] libtracker-sparql: Use matching integer types on (de)serialization



commit 571c9a51b8ba83efeed90a3bab3d4d6e4a3d7058
Author: Carlos Garnacho <carlosg gnome org>
Date:   Mon Jun 29 13:05:24 2020 +0200

    libtracker-sparql: Use matching integer types on (de)serialization
    
    We were serializing to int/int64, but deserializing to int64 always,
    make this more 1:1 and deserialize using the same integer type.
    
    Fixes the expectations in tracker-writeback wrt integer keys.

 src/libtracker-sparql/tracker-resource.c        | 18 +++++++++---------
 tests/libtracker-sparql/tracker-resource-test.c |  6 ++++--
 2 files changed, 13 insertions(+), 11 deletions(-)
---
diff --git a/src/libtracker-sparql/tracker-resource.c b/src/libtracker-sparql/tracker-resource.c
index 15eeac575..1a0f6dc03 100644
--- a/src/libtracker-sparql/tracker-resource.c
+++ b/src/libtracker-sparql/tracker-resource.c
@@ -1919,11 +1919,11 @@ tracker_resource_deserialize (GVariant *variant)
                        tracker_resource_set_boolean (resource, pred,
                                                      g_variant_get_boolean (obj));
                } else if (g_variant_is_of_type (obj, G_VARIANT_TYPE_INT16)) {
-                       tracker_resource_set_int64 (resource, pred,
-                                                   (gint64) g_variant_get_int16 (obj));
+                       tracker_resource_set_int (resource, pred,
+                                                 (gint) g_variant_get_int16 (obj));
                } else if (g_variant_is_of_type (obj, G_VARIANT_TYPE_INT32)) {
-                       tracker_resource_set_int64 (resource, pred,
-                                                   (gint64) g_variant_get_int32 (obj));
+                       tracker_resource_set_int (resource, pred,
+                                                 (gint) g_variant_get_int32 (obj));
                } else if (g_variant_is_of_type (obj, G_VARIANT_TYPE_INT64)) {
                        tracker_resource_set_int64 (resource, pred,
                                                    (gint64) g_variant_get_int64 (obj));
@@ -1958,14 +1958,14 @@ tracker_resource_deserialize (GVariant *variant)
                                        tracker_resource_add_boolean (resource, pred,
                                                                      g_variant_get_boolean (elem));
                                } else if (g_variant_is_of_type (elem, G_VARIANT_TYPE_INT16)) {
-                                       tracker_resource_add_int64 (resource, pred,
-                                                                   (gint64) g_variant_get_int16 (elem));
+                                       tracker_resource_add_int (resource, pred,
+                                                                 (gint) g_variant_get_int16 (elem));
                                } else if (g_variant_is_of_type (elem, G_VARIANT_TYPE_INT32)) {
-                                       tracker_resource_add_int64 (resource, pred,
-                                                                   (gint64) g_variant_get_int32 (elem));
+                                       tracker_resource_add_int (resource, pred,
+                                                                 (gint) g_variant_get_int32 (elem));
                                } else if (g_variant_is_of_type (elem, G_VARIANT_TYPE_INT64)) {
                                        tracker_resource_add_int64 (resource, pred,
-                                                                   (gint64) g_variant_get_int16 (elem));
+                                                                   (gint64) g_variant_get_int64 (elem));
                                } else if (g_variant_is_of_type (elem, G_VARIANT_TYPE_DOUBLE)) {
                                        tracker_resource_add_double (resource, pred,
                                                                     g_variant_get_double (elem));
diff --git a/tests/libtracker-sparql/tracker-resource-test.c b/tests/libtracker-sparql/tracker-resource-test.c
index 1325eb9bb..0506c0771 100644
--- a/tests/libtracker-sparql/tracker-resource-test.c
+++ b/tests/libtracker-sparql/tracker-resource-test.c
@@ -156,7 +156,8 @@ test_resource_serialization (void)
        tracker_resource_set_string (res, "nie:title", "foo");
        tracker_resource_set_double (res, "nfo:duration", 25.4);
        tracker_resource_set_boolean (res, "nfo:isBootable", TRUE);
-       tracker_resource_set_int64 (res, "nie:usageCounter", 4);
+       tracker_resource_set_int (res, "nie:usageCounter", 4);
+       tracker_resource_set_int64 (res, "nie:contentSize", 42);
        tracker_resource_add_uri (res, "rdf:type", "nfo:Audio");
        tracker_resource_add_uri (res, "rdf:type", "nfo:Media");
 
@@ -183,7 +184,8 @@ test_resource_serialization (void)
        g_assert_true (tracker_resource_get_first_boolean (copy, "nfo:isBootable"));
        g_assert_true (strncmp (tracker_resource_get_identifier (copy), "_:", 2) == 0);
        g_assert_cmpstr (tracker_resource_get_first_string (copy, "nie:title"), ==, "foo");
-       g_assert_cmpint (tracker_resource_get_first_int64 (copy, "nie:usageCounter"), ==, 4);
+       g_assert_cmpint (tracker_resource_get_first_int (copy, "nie:usageCounter"), ==, 4);
+       g_assert_cmpint (tracker_resource_get_first_int64 (copy, "nie:contentSize"), ==, 42);
 
        child = tracker_resource_get_first_relation (copy, "nie:isStoredAs");
        g_assert_true (child != NULL);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]