------------------------------------------------------------ revno: 432 committer: Siegfried-Angel Gevatter Pujals <siegfr...@gevatter.com> branch nick: bluebird timestamp: Fri 2012-03-16 21:03:05 +0100 message: FTS++: More test cases. These expose two bugs! ZOMG! :) modified: extensions/fts++/indexer.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++/indexer.cpp' --- extensions/fts++/indexer.cpp 2012-03-16 17:08:43 +0000 +++ extensions/fts++/indexer.cpp 2012-03-16 20:03:05 +0000 @@ -738,6 +738,7 @@ return query_string; } +// FIXME: this is missing the Storage State parameter GPtrArray* Indexer::Search (const gchar *search, ZeitgeistTimeRange *time_range, GPtrArray *templates, === modified file 'extensions/fts++/test/test-indexer.cpp' --- extensions/fts++/test/test-indexer.cpp 2012-03-16 18:41:52 +0000 +++ extensions/fts++/test/test-indexer.cpp 2012-03-16 20:03:05 +0000 @@ -248,6 +248,26 @@ return event; } +static ZeitgeistEvent* create_test_event_simple (const char *uri, const char *text) +{ + ZeitgeistEvent *event = zeitgeist_event_new (); + ZeitgeistSubject *subject = zeitgeist_subject_new (); + + zeitgeist_subject_set_interpretation (subject, ZEITGEIST_NFO_DOCUMENT); + zeitgeist_subject_set_manifestation (subject, ZEITGEIST_NFO_FILE_DATA_OBJECT); + zeitgeist_subject_set_uri (subject, uri); + zeitgeist_subject_set_text (subject, text); + zeitgeist_subject_set_mimetype (subject, "text/plain"); + + zeitgeist_event_set_interpretation (event, ZEITGEIST_ZG_ACCESS_EVENT); + zeitgeist_event_set_manifestation (event, ZEITGEIST_ZG_USER_ACTIVITY); + zeitgeist_event_set_actor (event, "application://random.desktop"); + zeitgeist_event_add_subject (event, subject); + + g_object_unref (subject); + return event; +} + // Steals the event, ref it if you want to keep it static guint index_event (Fixture *fix, ZeitgeistEvent *event) @@ -278,6 +298,10 @@ zeitgeist_indexer_process_task (fix->indexer); } + // sleep for 1 msec to make sure the next event will have a + // different timestamp + g_usleep (1000); + return event_id; } @@ -298,6 +322,23 @@ } static GPtrArray* +search_with_count (Fixture *fix, const char *text, GPtrArray *templates, + ZeitgeistResultType result_type, guint offset, guint count, + guint *matches) +{ + if (!templates) templates = g_ptr_array_new (); + return zeitgeist_indexer_search (fix->indexer, + text, + zeitgeist_time_range_new_anytime (), + templates, + offset, + count, + result_type, + matches, + NULL); +} + +static GPtrArray* search_with_relevancies_simple (Fixture *fix, const char *text, GPtrArray *templates, ZeitgeistResultType result_type, gdouble **relevancies, gint *relevancies_size, guint *matches) @@ -322,7 +363,6 @@ { guint matches; guint event_id; - ZeitgeistEvent* event; // add test events to DBs event_id = index_event (fix, create_test_event1 ()); @@ -365,6 +405,23 @@ } static void +test_simple_recognize_schemas (Fixture *fix, gconstpointer data) +{ + guint matches; + + // add test events to DBs + index_event (fix, create_test_event_simple ("file://a.ok", "getme1")); + index_event (fix, create_test_event_simple ("ubuntuone://a.bad", "getme2")); + + GPtrArray *results = search_simple (fix, "getme*", NULL, + ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches); + + g_assert_cmpuint (matches, >, 0); + g_assert_cmpuint (results->len, ==, 1); + assert_nth_result_has_text (results, 0, "getme1"); +} + +static void test_simple_with_filter (Fixture *fix, gconstpointer data) { guint matches; @@ -788,7 +845,7 @@ } static void -test_simple_most_recent (Fixture *fix, gconstpointer data) +test_query_most_recent (Fixture *fix, gconstpointer data) { guint matches; guint event_id1, event_id2, event_id3, event_id4; @@ -840,7 +897,7 @@ } static void -test_simple_least_recent (Fixture *fix, gconstpointer data) +test_query_least_recent (Fixture *fix, gconstpointer data) { guint matches; guint event_id1, event_id2, event_id3, event_id4; @@ -891,6 +948,95 @@ } } +static void +test_query_sort_order (Fixture *fix, gconstpointer data) +{ + guint matches; + guint event_id1, event_id2, event_id3, event_id4; + ZeitgeistEvent* event; + GPtrArray* results; + + // add test events to DBs + event_id1 = index_event (fix, create_test_event_simple ("file://uri1", "!sort")); + event_id2 = index_event (fix, create_test_event_simple ("file://uri2", "+sort")); + event_id3 = index_event (fix, create_test_event_simple ("file://uri3", "-sort")); + + // Get the single most recent event + results = search_with_count (fix, "sort!", NULL, + ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, 0, 1, &matches); + + g_assert_cmpuint (matches, >, 0); + g_assert_cmpuint (results->len, ==, 1); + assert_nth_result_has_id (results, 0, event_id3); + assert_nth_result_has_text (results, 0, "-sort"); + + // Get the single least recent event + results = search_with_count (fix, "sort!", NULL, + ZEITGEIST_RESULT_TYPE_LEAST_RECENT_EVENTS, 0, 1, &matches); + + g_assert_cmpuint (matches, >, 0); + g_assert_cmpuint (results->len, ==, 1); + assert_nth_result_has_id (results, 0, event_id1); + assert_nth_result_has_text (results, 0, "!sort"); +} + +static void +test_query_with_duplicates (Fixture *fix, gconstpointer data) +{ + guint matches; + guint event_id1, event_id2, event_id3, event_id4; + ZeitgeistEvent* event; + GPtrArray* results; + //gdouble *relevancies; + //gint relevancies_size; + + // add test events to DBs + const char uri1[] = "file:///home/fibonacci/test.py"; + const char uri2[] = "file:///home/fibonacci/win.txt"; + event_id1 = index_event (fix, create_test_event_simple (uri1, "test")); + event_id2 = index_event (fix, create_test_event_simple (uri1, "test")); + event_id3 = index_event (fix, create_test_event_simple (uri2, "test")); + event_id4 = index_event (fix, create_test_event_simple (uri1, "test")); + + // Search for MostRecentEvents + results = search_simple (fix, "test", NULL, + ZEITGEIST_RESULT_TYPE_MOST_RECENT_EVENTS, &matches); + + g_assert_cmpuint (matches, >, 0); + g_assert_cmpuint (results->len, ==, 4); + assert_nth_result_has_id (results, 0, event_id4); + assert_nth_result_has_id (results, 1, event_id3); + assert_nth_result_has_id (results, 2, event_id2); + assert_nth_result_has_id (results, 3, event_id1); + + // Search for MostRecentSubjects + results = search_simple (fix, "test", NULL, + ZEITGEIST_RESULT_TYPE_MOST_RECENT_SUBJECTS, &matches); + + g_assert_cmpuint (matches, >, 0); + g_assert_cmpuint (results->len, ==, 2); + assert_nth_result_has_id (results, 0, event_id4); + assert_nth_result_has_id (results, 1, event_id3); + + // Search for MostPopularSubjects + results = search_simple (fix, "test", NULL, + ZEITGEIST_RESULT_TYPE_MOST_RECENT_SUBJECTS, &matches); + + g_assert_cmpuint (matches, >, 0); + g_assert_cmpuint (results->len, ==, 2); + assert_nth_result_has_id (results, 0, event_id4); + assert_nth_result_has_id (results, 1, event_id3); + + // Search for LeastPopularSubjects + results = search_simple (fix, "test", NULL, + ZEITGEIST_RESULT_TYPE_MOST_RECENT_SUBJECTS, &matches); + + g_assert_cmpuint (matches, >, 0); + g_assert_cmpuint (results->len, ==, 2); + assert_nth_result_has_id (results, 0, event_id3); + assert_nth_result_has_id (results, 1, event_id4); +} + G_BEGIN_DECLS static void discard_message (const gchar *domain, @@ -902,51 +1048,60 @@ void test_indexer_create_suite (void) { - g_test_add ("/Zeitgeist/FTS/Indexer/SimpleQuery", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/Query", Fixture, 0, setup, test_simple_query, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/SimpleQueryEmptyDatabase", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/QueryEmptyDatabase", Fixture, 0, setup, test_simple_query_empty_database, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/SimpleQueryNoResults", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/QueryNoResults", Fixture, 0, setup, test_simple_query_no_results, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/SimpleWithFilter", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/RecognizeSchemas", Fixture, 0, + setup, test_simple_recognize_schemas, teardown); + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/WithFilter", Fixture, 0, setup, test_simple_with_filter, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/SimpleWithValidFilter", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/WithValidFilter", Fixture, 0, setup, test_simple_with_valid_filter, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/SimpleNegation", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/Negation", Fixture, 0, setup, test_simple_negation, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/SimpleNoexpand", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/Noexpand", Fixture, 0, setup, test_simple_noexpand, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/SimpleNoexpandValid", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/NoexpandValid", Fixture, 0, setup, test_simple_noexpand_valid, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/SimpleUnderscores", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/Underscores", Fixture, 0, setup, test_simple_underscores, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/SimpleCamelcase", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/Camelcase", Fixture, 0, setup, test_simple_camelcase, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/PrefixWithDashes", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/PrefixWithDashes", Fixture, 0, setup, test_simple_dashes_prefix, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/PrefixWithDots", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/PrefixWithDots", Fixture, 0, setup, test_simple_dots_prefix, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/PrefixWithIntlChars", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/PrefixWithIntlChars", Fixture, 0, setup, test_simple_intl_prefix, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/URLUnescape", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/URLUnescape", Fixture, 0, setup, test_simple_url_unescape, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/IDNSupport", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/IDNSupport", Fixture, 0, setup, test_simple_idn_support, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/CJK", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/CJK", Fixture, 0, setup, test_simple_cjk, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/Relevancies", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/Relevancies", Fixture, 0, setup, test_simple_relevancies_query, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/RelevanciesSubject", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/RelevanciesSubject", Fixture, 0, setup, test_simple_relevancies_subject_query, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/MoveEvent", Fixture, 0, + g_test_add ("/Zeitgeist/FTS/Indexer/Simple/MoveEvent", Fixture, 0, setup, test_simple_move_event, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/MostRecent", Fixture, 0, - setup, test_simple_most_recent, teardown); - g_test_add ("/Zeitgeist/FTS/Indexer/LeastRecent", Fixture, 0, - setup, test_simple_least_recent, teardown); + g_test_add ("/Zeitgeist/FTS/Indexer/Query/MostRecent", Fixture, 0, + setup, test_query_most_recent, teardown); + g_test_add ("/Zeitgeist/FTS/Indexer/Query/LeastRecent", Fixture, 0, + setup, test_query_least_recent, teardown); + g_test_add ("/Zeitgeist/FTS/Indexer/Query/SortOrder", Fixture, 0, + setup, test_query_sort_order, teardown); + g_test_add ("/Zeitgeist/FTS/Indexer/Query/Duplicates", Fixture, 0, + setup, test_query_with_duplicates, teardown); // get rid of the "rebuilding index..." messages g_log_set_handler (NULL, G_LOG_LEVEL_MESSAGE, discard_message, NULL); + + // do not abort on warning()s, eg. when not finding actor information + g_log_set_always_fatal (G_LOG_LEVEL_CRITICAL); } G_END_DECLS
_______________________________________________ Mailing list: https://launchpad.net/~zeitgeist Post to : zeitgeist@lists.launchpad.net Unsubscribe : https://launchpad.net/~zeitgeist More help : https://help.launchpad.net/ListHelp