From 3b87dd771df68976192e7230d19853518872cbd6 Mon Sep 17 00:00:00 2001 From: Christian Dywan Date: Tue, 21 Aug 2012 01:36:10 +0200 Subject: [PATCH] WIP Port log test from libzeitgeist1 diff --git a/test/direct/Makefile.am b/test/direct/Makefile.am index 5a07868..667a005 100644 --- a/test/direct/Makefile.am +++ b/test/direct/Makefile.am @@ -13,6 +13,7 @@ TESTS = \ datamodel-test \ datasource-test \ event-test \ + log-test \ marshalling-test \ mimetype-test \ query-operators-test \ @@ -40,6 +41,11 @@ SRC_FILES = \ $(top_srcdir)/libzeitgeist/ontology.vala \ $(top_srcdir)/libzeitgeist/ontology-uris.vala \ $(top_srcdir)/libzeitgeist/mimetype.vala \ + $(top_srcdir)/libzeitgeist/log.vala \ + $(top_srcdir)/libzeitgeist/result-set.vala \ + $(top_srcdir)/libzeitgeist/simple-result-set.vala \ + $(top_srcdir)/libzeitgeist/monitor.vala \ + $(top_srcdir)/libzeitgeist/queued-proxy-wrapper.vala \ $(NULL) datamodel-test: datamodel-test.vala $(SRC_FILES) @@ -51,6 +57,9 @@ datasource-test: datasource-test.vala $(SRC_FILES) event-test: event-test.vala $(SRC_FILES) $(VALA_V)$(VALAC) $(VALAFLAGS) -o $@ $^ +log-test: log-test.vala $(SRC_FILES) + $(VALA_V)$(VALAC) $(VALAFLAGS) -o $@ $^ + marshalling-test: marshalling-test.vala $(SRC_FILES) $(VALA_V)$(VALAC) $(VALAFLAGS) -o $@ $^ @@ -73,6 +82,7 @@ CLEANFILES = \ datamodel-test \ datasource-test \ event-test \ + log-test \ marshalling-test \ mimetype-test \ query-operators-test \ @@ -85,6 +95,7 @@ EXTRA_DIST = \ datamodel-test.vala \ datasource-test.vala \ event-test.vala \ + log-test.vala \ marshalling-test.vala \ mimetype-test.vala \ query-operators-test.vala \ diff --git a/test/direct/log-test.vala b/test/direct/log-test.vala new file mode 100644 index 0000000..c94d219 --- /dev/null +++ b/test/direct/log-test.vala @@ -0,0 +1,108 @@ +/* datamodel-test.vala + * + * Copyright © 2012 Canonical Ltd. + * By Siegfried-A. Gevatter + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 2.1 of the License, or + * (at your option) any later version. + * + * This program 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 Lesser General Public License + * along with this program. If not, see . + * + */ + +using Zeitgeist; +using Assertions; + +int main (string[] argv) +{ + Environment.set_variable ("XDG_DATA_DIRS", test_dir (), true); + Test.init (ref argv); + + Test.add_func ("/Log/InsertGetDelete", insert_get_delete_test); + Test.add_func ("/Log/GetDefault", get_default_test); + + return Test.run (); +} + +void events_received (Zeitgeist.Log log, AsyncResult res) +{ + ResultSet events; + try { + events = log.get_events.finish (res); + } + catch (Error error) { + critical ("Failed to get events: %s", error.message); + return; + } + /* Assert that we got what we expected, and collect the event ids, + * so we can delete the events */ + assert (expected_events.length == events.size); + assert (expected_events.length == events.estimated_matches); + // TODO + +} + +void events_inserted (Zeitgeist.Log log, AsyncResult res) +{ + uint32[] event_ids; + try { + event_ids = log.insert_events_from_ptrarray.finish (res); + } + catch (Error error) { + critical ("Failed to insert events: %s", error.message); + return; + } + assert (expected_events.length == event_ids.length); + log.get_events.begin (event_ids, null, events_received); +} + +bool quit_main_loop () +{ + new MainLoop (MainContext.default ()).quit (); + return false; +} + +void insert_get_delete_test () +{ + var expected_events = new GenericArray (); + var ev = new Event (); + var su = new Subject (); + ev.add_subject (su); + expected_events.add (ev); + ev.interpretation = "foo://Interp"; + ev.manifestation = "foo://Manif"; + ev.actor = "app://firefox.desktop"; + + su.uri = "file:///tmp/bar.txt"; + su.interpretation = "foo://TextDoc"; + su.manifestation = "foo://File"; + su.mimetype = "text/plain"; + su.origin = "file:///tmp"; + su.text = "bar.txt"; + su.storage = "bfb486f6-f5f8-4296-8871-0cc749cf8ef7"; + + /* This method call now owns all events, subjects, and the events array */ + Zeitgeist.Log.get_default ().insert_events_from_ptrarray.begin ( + expected_events, null, events_inserted); + assert (expected_events.length == 1); + + Timeout.add_seconds (1, quit_main_loop); + new MainLoop (MainContext.default ()).run (); +} + +void get_default_test () +{ + var log1 = Zeitgeist.Log.get_default (); + var log2 = Zeitgeist.Log.get_default (); + assert (log1 == log2); +} + +// vim:expandtab:ts=4:sw=4 -- 1.7.9.5