diff options
author | Michal Hruby <michal.mhr@gmail.com> | 2012-03-14 16:47:20 +0100 |
---|---|---|
committer | Michal Hruby <michal.mhr@gmail.com> | 2012-03-14 16:47:20 +0100 |
commit | 6d5079ec1aca4a46316934b65eef359ff171b2a8 (patch) | |
tree | 640626f465ce1982e45aa9d8289796eaef969dbe | |
parent | 085f49f99d0b8d20e3cec4cfc015425a7dd45844 (diff) | |
download | zeitgeist-6d5079ec1aca4a46316934b65eef359ff171b2a8.tar.gz |
Make sure that mangling works with capital letters as well
-rw-r--r-- | extensions/fts++/stringutils.cpp | 8 | ||||
-rw-r--r-- | extensions/fts++/test/test-indexer.cpp | 47 |
2 files changed, 52 insertions, 3 deletions
diff --git a/extensions/fts++/stringutils.cpp b/extensions/fts++/stringutils.cpp index 6e173aa7..9c9d2d7d 100644 --- a/extensions/fts++/stringutils.cpp +++ b/extensions/fts++/stringutils.cpp @@ -69,9 +69,13 @@ string Truncate (string const& s, unsigned int nbytes) */ 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++; diff --git a/extensions/fts++/test/test-indexer.cpp b/extensions/fts++/test/test-indexer.cpp index cbe83f28..5ed1338a 100644 --- a/extensions/fts++/test/test-indexer.cpp +++ b/extensions/fts++/test/test-indexer.cpp @@ -190,7 +190,7 @@ static ZeitgeistEvent* create_test_event7 (void) 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 @@ test_simple_dots_prefix (Fixture *fix, gconstpointer data) } 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 @@ void test_indexer_create_suite (void) 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, |