summaryrefslogtreecommitdiff
path: root/tests/plugins/media-export/regression.vala
diff options
context:
space:
mode:
authorJens Georg <jensg@openismus.com>2013-03-14 13:36:25 +0100
committerJens Georg <jensg@openismus.com>2013-04-05 14:54:44 +0200
commit41e836429a77c1cb5b674c0ebe8b5a2a66067a3f (patch)
tree710a5987052bcccaedf513142045e5e7418d3026 /tests/plugins/media-export/regression.vala
parent53e27b7217125b682ccfccd56cfaaa6e4a7fbe4b (diff)
downloadrygel-41e836429a77c1cb5b674c0ebe8b5a2a66067a3f.tar.gz
tests,media-export: Test plugin
Diffstat (limited to 'tests/plugins/media-export/regression.vala')
-rw-r--r--tests/plugins/media-export/regression.vala112
1 files changed, 112 insertions, 0 deletions
diff --git a/tests/plugins/media-export/regression.vala b/tests/plugins/media-export/regression.vala
new file mode 100644
index 00000000..0cfc2571
--- /dev/null
+++ b/tests/plugins/media-export/regression.vala
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2013 Intel Corporation.
+ *
+ * Author: Jens Georg <jensg@openismus.com>
+ *
+ * This file is part of Rygel.
+ *
+ * Rygel 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 of the License, or
+ * (at your option) any later version.
+ *
+ * Rygel 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 Lesser 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, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+/**
+ * Test that database errors are reported correctly. This is a side-bug
+ * discovered during fixing this bug.
+ */
+public void test_bgo683926_1 () {
+ Rygel.MediaExport.Database db = null;
+
+ try {
+ db = new Rygel.MediaExport.Database (":memory:");
+ db.exec ("create table object (id text not null, title text not null);");
+ db.exec ("insert into object (id, title) VALUES ('a', 'b');");
+ } catch (Error e) {
+ error ("=> Database preparation failed: %s", e.message);
+ }
+
+ try {
+ Value[] val = { "c" };
+ db.exec ("replace into object (title) VALUES (?);", val);
+ assert_not_reached ();
+ } catch (Error e) {
+ // Receiving an error here is expected
+ }
+}
+
+public void test_bgo683926_2 () {
+ try {
+ Rygel.MediaExport.MediaCache.ensure_exists ();
+ var cache = Rygel.MediaExport.MediaCache.get_default ();
+ var container = new Rygel.SimpleContainer.root ("foo");
+ container.id = "foo";
+ cache.save_container (container);
+
+ var item = new Rygel.MusicItem ("1",
+ container,
+ "Static Title");
+ item.mime_type = "audio/mpeg";
+ cache.save_item (item, true);
+ item.title = "Changed title";
+ cache.save_item (item);
+ item = cache.get_object ("1") as Rygel.MusicItem;
+ assert (item.title == "Static Title");
+ } catch (Error error) {
+ assert_not_reached ();
+ }
+}
+
+
+/**
+ * Dummy function to silence the vala warnings
+ */
+void test_silence_vala () {
+ try {
+ Rygel.MediaExport.Database.null ();
+ var db = new Rygel.MediaExport.Database (":memory:");
+ db.analyze ();
+ db.begin ();
+ db.commit ();
+ db.rollback ();
+ db.query_value ("SELECT 1;");
+ foreach (var c in db.exec_cursor ("SELECT 1;")) {
+ c.data_count ();
+ }
+ } catch (Error error) { }
+}
+
+class TestConfig : Rygel.BaseConfiguration {
+ public override bool get_bool (string section, string key) throws Error {
+ if (section == "MediaExport" && key == "use-temp-db") {
+ return true;
+ }
+
+ throw new Rygel.ConfigurationError.NO_VALUE_SET ("No value available");
+ }
+}
+
+int main (string[] args) {
+ Test.init (ref args);
+
+ if (false != false) {
+ test_silence_vala ();
+ }
+
+ Rygel.MetaConfig.register_configuration (new TestConfig ());
+
+ Test.add_func ("/plugins/media-export/regression/bgo689326_1",
+ test_bgo683926_1);
+ Test.add_func ("/plugins/media-export/regression/bgo689326_2",
+ test_bgo683926_2);
+ return Test.run ();
+}