← Back to team overview

zeitgeist team mailing list archive

[Branch ~zeitgeist/zeitgeist/bluebird] Rev 426: Make sure that mangling works with capital letters as well

 

------------------------------------------------------------
revno: 426
committer: Michal Hruby <michal.mhr@xxxxxxxxx>
branch nick: zeitgeist
timestamp: Wed 2012-03-14 16:47:20 +0100
message:
  Make sure that mangling works with capital letters as well
modified:
  extensions/fts++/stringutils.cpp
  extensions/fts++/test/test-indexer.cpp


--
lp:zeitgeist
https://code.launchpad.net/~zeitgeist/zeitgeist/bluebird

Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist.
To unsubscribe from this branch go to https://code.launchpad.net/~zeitgeist/zeitgeist/bluebird/+edit-subscription
=== modified file 'extensions/fts++/stringutils.cpp'
--- extensions/fts++/stringutils.cpp	2012-03-14 12:58:22 +0000
+++ extensions/fts++/stringutils.cpp	2012-03-14 15:47:20 +0000
@@ -69,9 +69,13 @@
  */
 string MangleUri (string const& orig)
 {
-  string s(orig);
+  // the input is supposed to be a uri, so no utf8 characters
+  gchar *casefolded = g_ascii_strdown (orig.c_str (), orig.size ());
+
+  string s(casefolded);
+  g_free (casefolded);
   size_t pos = 0;
-  while ((pos = s.find_first_of (": /-.", pos)) != string::npos)
+  while ((pos = s.find_first_of (": /-.%", pos)) != string::npos)
   {
     s.replace (pos, 1, 1, '_');
     pos++;

=== modified file 'extensions/fts++/test/test-indexer.cpp'
--- extensions/fts++/test/test-indexer.cpp	2012-03-14 12:58:22 +0000
+++ extensions/fts++/test/test-indexer.cpp	2012-03-14 15:47:20 +0000
@@ -190,7 +190,7 @@
   
   zeitgeist_subject_set_interpretation (subject, ZEITGEIST_NFO_PRESENTATION);
   zeitgeist_subject_set_manifestation (subject, ZEITGEIST_NFO_FILE_DATA_OBJECT);
-  zeitgeist_subject_set_uri (subject, "file:///home/username/directory-with-dashes/and.dot/CamelCasePresentation.pdf");
+  zeitgeist_subject_set_uri (subject, "file:///home/username/directory-with-dashes/and.dot/%C4%8C%20some-intl/CamelCasePresentation.pdf");
   zeitgeist_subject_set_text (subject, NULL);
   zeitgeist_subject_set_mimetype (subject, "application/pdf");
 
@@ -645,6 +645,49 @@
 }
 
 static void
+test_simple_intl_prefix (Fixture *fix, gconstpointer data)
+{
+  guint matches;
+  guint event_id;
+  ZeitgeistEvent* event;
+  ZeitgeistSubject *subject;
+
+  // add test events to DBs
+  index_event (fix, create_test_event1 ());
+  index_event (fix, create_test_event2 ());
+  index_event (fix, create_test_event3 ());
+  index_event (fix, create_test_event4 ());
+  index_event (fix, create_test_event5 ());
+  index_event (fix, create_test_event6 ());
+  event_id = index_event (fix, create_test_event7 ());
+
+  GPtrArray *event_template = g_ptr_array_new ();
+  event = zeitgeist_event_new ();
+  subject = zeitgeist_subject_new ();
+  zeitgeist_subject_set_uri (subject,
+      "file:///home/username/directory-with-dashes/and.dot/%C4%8C*");
+  zeitgeist_event_add_subject (event, subject);
+  g_ptr_array_add (event_template, event);
+
+  GPtrArray *results =
+    zeitgeist_indexer_search (fix->indexer,
+                              "pdf",
+                              zeitgeist_time_range_new_anytime (),
+                              event_template,
+                              0,
+                              10,
+                              ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS,
+                              &matches,
+                              NULL);
+
+  g_assert_cmpuint (matches, >, 0);
+  g_assert_cmpuint (results->len, ==, 1);
+
+  event = (ZeitgeistEvent*) results->pdata[0];
+  g_assert_cmpuint (zeitgeist_event_get_id (event), ==, event_id);
+}
+
+static void
 test_simple_cjk (Fixture *fix, gconstpointer data)
 {
   guint matches;
@@ -826,6 +869,8 @@
               setup, test_simple_dashes_prefix, teardown);
   g_test_add ("/Zeitgeist/FTS/Indexer/PrefixWithDots", Fixture, 0,
               setup, test_simple_dots_prefix, teardown);
+  g_test_add ("/Zeitgeist/FTS/Indexer/PrefixWithIntlChars", Fixture, 0,
+              setup, test_simple_intl_prefix, teardown);
   g_test_add ("/Zeitgeist/FTS/Indexer/URLUnescape", Fixture, 0,
               setup, test_simple_url_unescape, teardown);
   g_test_add ("/Zeitgeist/FTS/Indexer/IDNSupport", Fixture, 0,