tracker r1876 - in branches/indexer-split: . src/libtracker-db tests/libtracker-db



Author: ifrade
Date: Tue Jul 15 14:52:29 2008
New Revision: 1876
URL: http://svn.gnome.org/viewvc/tracker?rev=1876&view=rev

Log:
Fixed tracker_dbus_result_set_to_strv

Added:
   branches/indexer-split/tests/libtracker-db/tracker-db-dbus-test.c
Modified:
   branches/indexer-split/ChangeLog
   branches/indexer-split/src/libtracker-db/tracker-db-dbus.c
   branches/indexer-split/src/libtracker-db/tracker-db-interface.c
   branches/indexer-split/tests/libtracker-db/Makefile.am

Modified: branches/indexer-split/src/libtracker-db/tracker-db-dbus.c
==============================================================================
--- branches/indexer-split/src/libtracker-db/tracker-db-dbus.c	(original)
+++ branches/indexer-split/src/libtracker-db/tracker-db-dbus.c	Tue Jul 15 14:52:29 2008
@@ -30,11 +30,11 @@
 {
 	gchar **strv = NULL;
         gint    rows = 0;
+	gint    i = 0;
 
 	if (result_set) {
 		gchar    *str;
 		gboolean  valid = TRUE;
-		gint      i = 0;
 
                 rows = tracker_db_result_set_get_n_rows (result_set);
 		strv = g_new (gchar*, rows + 1);
@@ -42,6 +42,12 @@
 		while (valid) {
 
 			tracker_db_result_set_get (result_set, column, &str, -1);
+			
+			if (!str) {
+				valid = tracker_db_result_set_iter_next (result_set);
+				continue;
+			}
+			
 
 			if (!g_utf8_validate (str, -1, NULL)) {
 				g_warning ("Could not add string:'%s' to GStrv, invalid UTF-8", str);
@@ -57,7 +63,7 @@
 	}
 
         if (count) {
-                *count = rows;
+                *count = i;
         }
 
 	return strv;

Modified: branches/indexer-split/src/libtracker-db/tracker-db-interface.c
==============================================================================
--- branches/indexer-split/src/libtracker-db/tracker-db-interface.c	(original)
+++ branches/indexer-split/src/libtracker-db/tracker-db-interface.c	Tue Jul 15 14:52:29 2008
@@ -543,6 +543,8 @@
 	g_return_if_fail (TRACKER_IS_DB_RESULT_SET (result_set));
 
 	priv = TRACKER_DB_RESULT_SET_GET_PRIVATE (result_set);
+	g_return_if_fail (priv->array != NULL);
+
 	row = g_ptr_array_index (priv->array, priv->current_row);
 	va_start (args, result_set);
 

Modified: branches/indexer-split/tests/libtracker-db/Makefile.am
==============================================================================
--- branches/indexer-split/tests/libtracker-db/Makefile.am	(original)
+++ branches/indexer-split/tests/libtracker-db/Makefile.am	Tue Jul 15 14:52:29 2008
@@ -5,6 +5,7 @@
 TEST_PROGS += tracker-db-manager-unattach \
 	tracker-db-manager-attach         \
 	tracker-db-manager-custom         \
+	tracker-db-dbus			\
 	union-performance
 
 INCLUDES = 				\
@@ -84,3 +85,16 @@
 	$(GTHREAD_LIBS)							\
 	$(GLIB2_LIBS)							\
 	-lz
+
+tracker_db_dbus_SOURCES = 	\
+	tracker-db-dbus-test.c 		
+
+tracker_db_dbus_LDADD =							\
+	$(top_builddir)/src/libtracker-db/libtracker-db.la 		\
+	$(top_builddir)/src/libtracker-common/libtracker-common.la 	\
+	$(top_builddir)/tests/common/libtracker-testcommon.la 		\
+	$(SQLITE3_LIBS)							\
+	$(GMODULE_LIBS)							\
+	$(GTHREAD_LIBS)							\
+	$(GLIB2_LIBS)							\
+	-lz

Added: branches/indexer-split/tests/libtracker-db/tracker-db-dbus-test.c
==============================================================================
--- (empty file)
+++ branches/indexer-split/tests/libtracker-db/tracker-db-dbus-test.c	Tue Jul 15 14:52:29 2008
@@ -0,0 +1,136 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/* 
+ * Copyright (C) 2008, Nokia (urho konttori nokia com)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA  02110-1301, USA. 
+ */  
+#include <glib.h>
+#include <glib/gtestutils.h>
+
+#include <libtracker-db/tracker-db-dbus.h>
+#include <libtracker-db/tracker-db-interface.h>
+
+
+static TrackerDBResultSet *
+get_mock_tracker_db_result (gint results, gint columns, gboolean set_null) {
+
+        TrackerDBResultSet *mock;
+        gint i, j;
+
+        mock = _tracker_db_result_set_new (columns);
+
+        for (i = 0; i < results; i++) {
+                _tracker_db_result_set_append (mock);
+
+                for (j = 0; j < columns; j++) {
+
+                        GValue value = {0,};
+
+                        g_value_init (&value, G_TYPE_STRING);
+                        g_value_set_string (&value, (set_null ? NULL : g_strdup_printf ("value %d", i)));
+                        _tracker_db_result_set_set_value (mock, j, &value);
+                }
+        }
+
+        tracker_db_result_set_rewind (mock);
+
+        return mock;
+
+}
+
+
+
+static void
+test_dbus_query_result_to_strv ()
+{
+
+        TrackerDBResultSet *result_set = NULL;
+        gchar **result;
+        gint    count;
+
+        /* NULL */
+        result = tracker_dbus_query_result_to_strv (result_set, 0, &count);
+        g_assert (result == NULL);
+
+        /* 5 results, 1 column */
+        result_set = get_mock_tracker_db_result (5, 1, FALSE);
+        result = tracker_dbus_query_result_to_strv (result_set, 0, &count);
+        
+        g_assert_cmpint (count, ==, 5);
+        g_assert_cmpint (g_strv_length (result), ==, 5);
+
+        g_strfreev (result);
+        g_object_unref (result_set);
+
+        /* 0 results, 1 columns */
+        result_set = get_mock_tracker_db_result (0, 1, FALSE);
+        if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) {
+                result = tracker_dbus_query_result_to_strv (result_set, 0, &count);
+        }
+        g_test_trap_assert_failed ();
+        // Should raise g_critical (priv->array...);
+
+        g_object_unref (result_set);
+
+        
+        /* 1 result ... NULL */
+        result_set = get_mock_tracker_db_result (1, 1, TRUE);
+        result = tracker_dbus_query_result_to_strv (result_set, 0, &count);
+
+        g_assert_cmpint (count, ==, 0);
+
+        g_strfreev (result);
+        g_object_unref (result_set);
+
+}
+
+static void
+test_dbus_query_result_to_hash_table ()
+{
+        /* TODO: Implement */
+        g_print ("- Unimplemented -\n");
+}
+
+static void
+test_dbus_query_result_to_ptr_array ()
+{
+        /* TODO: Implement */
+        g_print ("- Unimplemented -\n");
+}
+
+gint
+main (gint argc, gchar **argv) 
+{
+        int result;
+
+	g_type_init ();
+        g_thread_init (NULL);
+	g_test_init (&argc, &argv, NULL);
+
+        g_test_add_func ("/libtracker-db/tracker-db-dbus/query_result_to_strv",
+                         test_dbus_query_result_to_strv);
+        g_test_add_func ("/libtracker-db/tracker-db-dbus/query_result_to_hash_table",
+                         test_dbus_query_result_to_hash_table);
+        g_test_add_func ("/libtracker-db/tracker-db-dbus/query_result_to_ptr_array",
+                         test_dbus_query_result_to_ptr_array);
+
+
+        result = g_test_run ();
+        
+        /* End */
+
+        return result;
+}



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