Remove the headers from the tests and put the class declarations in the cpp files.
[qtgstreamer:qtgstreamer.git] / tests / structuretest.cpp
1 /*
2     Copyright (C) 2010  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 "qgsttest.h"
18 #include <QGst/Structure>
19
20 class StructureTest : public QGstTest
21 {
22     Q_OBJECT
23 private slots:
24     void bindingsTest();
25     void copyTest();
26 };
27
28 void StructureTest::bindingsTest()
29 {
30     QGst::Structure s("mystructure");
31
32     QVERIFY(s.isValid());
33     QCOMPARE(s.name(), QString("mystructure"));
34     QCOMPARE(s.numberOfFields(), static_cast<unsigned int>(0));
35
36     s.setValue("intfield", 20);
37     QCOMPARE(s.numberOfFields(), static_cast<unsigned int>(1));
38     QVERIFY(s.hasField("intfield"));
39     QCOMPARE(s.fieldName(0), QString("intfield"));
40     QCOMPARE(s.value("intfield").get<int>(), 20);
41     QCOMPARE(s.fieldType("intfield"), QGlib::Type(QGlib::Type::Int));
42
43     s.setValue("strfield", QString("hello world"));
44     QCOMPARE(s.numberOfFields(), static_cast<unsigned int>(2));
45
46     qDebug() << s;
47
48     s.removeField("intfield");
49     QCOMPARE(s.numberOfFields(), static_cast<unsigned int>(1));
50
51     s.removeAllFields();
52     QCOMPARE(s.numberOfFields(), static_cast<unsigned int>(0));
53 }
54
55 void StructureTest::copyTest()
56 {
57     QGst::Structure s("mystructure");
58     s.setValue("intfield", 10);
59
60     QGst::SharedStructure ss(s.peekGstStructure());
61     QVERIFY(ss.isValid());
62     QCOMPARE(ss.value("intfield").get<int>(), 10);
63
64     ss.setValue("intfield", 20);
65     QCOMPARE(s.value("intfield").get<int>(), 20);
66
67     {
68         QGst::Structure s2(ss);
69         QVERIFY(s2.isValid());
70         QCOMPARE(s2.value("intfield").get<int>(), 20);
71
72         s2.setValue("intfield", 30);
73         QCOMPARE(s.value("intfield").get<int>(), 20);
74         QCOMPARE(ss.value("intfield").get<int>(), 20);
75         QCOMPARE(s2.value("intfield").get<int>(), 30);
76
77         s2 = s;
78         QCOMPARE(s2.value("intfield").get<int>(), 20);
79     }
80
81     {
82         QGst::Structure s2(s);
83         QVERIFY(s2.isValid());
84         QCOMPARE(s2.value("intfield").get<int>(), 20);
85
86         s2.setValue("intfield", 30);
87         QCOMPARE(s.value("intfield").get<int>(), 20);
88         QCOMPARE(ss.value("intfield").get<int>(), 20);
89         QCOMPARE(s2.value("intfield").get<int>(), 30);
90
91         s2 = ss;
92         QCOMPARE(s2.value("intfield").get<int>(), 20);
93     }
94 }
95
96 QTEST_APPLESS_MAIN(StructureTest)
97
98 #include "moc_qgsttest.cpp"
99 #include "structuretest.moc"