Initial commit.
[qtgstreamer:qtgstreamer.git] / tests / qtgstreamertest / qtgstreamertest.cpp
1 /*
2     Copyright (C) 2009  George Kiagiadakis <kiagiadakis.george@gmail.com>
3
4     This library is free software; you can redistribute it and/or modify
5     it under the terms of the GNU Lesser General Public License as published
6     by the Free Software Foundation; either version 2.1 of the License, or
7     (at your option) any later version.
8
9     This program is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12     GNU General Public License for more details.
13
14     You should have received a copy of the GNU Lesser General Public License
15     along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 */
17 #include "../../src/qgstpipeline.h"
18 #include "../../src/qgstelementfactory.h"
19 #include "qtgstreamertest.moc"
20 #include <gst/gst.h>
21
22 using namespace QtGstreamer;
23
24 void QtGstreamerTest::initTestCase()
25 {
26     gst_init(NULL, NULL);
27 }
28
29 void QtGstreamerTest::propertyTest()
30 {
31     GstElement *foo = gst_element_factory_make("fakesrc", "test");
32     gst_object_ref(foo);
33     gst_object_sink(foo);
34
35     QGstElement qgelement(foo);
36     gst_object_unref(foo);
37
38     QCOMPARE(qgelement.property("name").toByteArray(), QByteArray("test"));
39
40     qgelement.setProperty("name", QByteArray("test2"));
41     QCOMPARE(qgelement.property("name").toByteArray(), QByteArray("test2"));
42 }
43
44 void QtGstreamerTest::player()
45 {
46     QGstElement *src = QGstElementFactory::make("audiotestsrc");
47     src->setProperty("freq", 880);
48     QCOMPARE(src->property<double>("freq"), 880.0);
49
50     QGstElement *sink = QGstElementFactory::make("alsasink");
51
52     QGstPipeline bin;
53     bin << src << sink;
54     QCOMPARE(QGstElement::link(src, sink), true);
55
56     bin.setState(QGstElement::Playing);
57     QTest::qWait(5000);
58     QCOMPARE(bin.currentState(), QGstElement::Playing);
59
60     bin.setState(QGstElement::Null);
61     QTest::qWait(2000);
62     QCOMPARE(bin.currentState(), QGstElement::Null);
63 }
64
65 QTEST_MAIN(QtGstreamerTest)