diff options
author | Jens Georg <jensg@openismus.com> | 2013-03-14 13:36:25 +0100 |
---|---|---|
committer | Jens Georg <jensg@openismus.com> | 2013-04-05 14:54:44 +0200 |
commit | 41e836429a77c1cb5b674c0ebe8b5a2a66067a3f (patch) | |
tree | 710a5987052bcccaedf513142045e5e7418d3026 /tests/plugins/media-export/regression.vala | |
parent | 53e27b7217125b682ccfccd56cfaaa6e4a7fbe4b (diff) | |
download | rygel-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.vala | 112 |
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 (); +} |