diff options
author | Michael Goddard <michael.goddard@nokia.com> | 2011-07-25 15:02:51 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-07-26 06:45:46 +0200 |
commit | a6128410da0fc11b2ce7d3ecb8d5f75a011897ef (patch) | |
tree | 7df32e185f68115f967d94540c6e9389c9669b66 /tests/auto/qmediabindableinterface/tst_qmediabindableinterface.cpp | |
parent | 1e4dda971098656dad390478601ee932e9c4e3e3 (diff) |
API unit tests from Maemo API test team.
A large number of tweaks and changes to original tests, and refactor
a lot of the mock backends to reduce duplication.
Changed viewfinder test case to use mock service and provider so
that it matches the image capture test case.
Reviewed-by: Jonas Rabbe
(cherry picked from commit e40bef5508a4165cec4a46b97115aed461027fa5)
Also licence header fix:
(cherry picked from commit e9ee9e8c48b45b97d62ee4a82e400fa9d8ea8107)
Change-Id: Ic59891d75563bb2e008a336eea859e8c44d8d831
Reviewed-on: http://codereview.qt.nokia.com/2078
Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com>
Diffstat (limited to 'tests/auto/qmediabindableinterface/tst_qmediabindableinterface.cpp')
-rw-r--r-- | tests/auto/qmediabindableinterface/tst_qmediabindableinterface.cpp | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/tests/auto/qmediabindableinterface/tst_qmediabindableinterface.cpp b/tests/auto/qmediabindableinterface/tst_qmediabindableinterface.cpp new file mode 100644 index 000000000..d7f06db8a --- /dev/null +++ b/tests/auto/qmediabindableinterface/tst_qmediabindableinterface.cpp @@ -0,0 +1,137 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//TESTED_COMPONENT=src/multimedia + +#include <QtTest/QtTest> +#include <qmediaobject.h> +#include <qmediacontrol.h> +#include <qmediaservice.h> +#include <qmediarecordercontrol.h> +#include <qmediarecorder.h> +#include <qmetadatawritercontrol.h> +#include <qaudioendpointselector.h> +#include <qaudioencodercontrol.h> +#include <qmediacontainercontrol.h> +#include <qvideoencodercontrol.h> +#include <qaudioformat.h> + +#include "mockmediacontainercontrol.h" +#include "mockmetadatawritercontrol.h" +#include "mockmediarecordercontrol.h" +#include "mockmediaobject.h" + +QT_USE_NAMESPACE + +class TestBindableService : public QMediaService +{ + Q_OBJECT +public: + TestBindableService(QObject *parent, QMediaControl *control): + QMediaService(parent), + mockControl(control), + hasControls(true) + { + mockContainerControl = new MockMediaContainerControl(parent); //Creating the object for Media + mockMetaDataControl = new MockMetaDataWriterControl(parent); //Creating the object for MetaData + } + + QMediaControl* requestControl(const char *name) + { + if (hasControls && qstrcmp(name,QMediaRecorderControl_iid) == 0) + return mockControl; + if (hasControls && qstrcmp(name,QMediaContainerControl_iid) == 0) + return mockContainerControl; + if (hasControls && qstrcmp(name, QMetaDataWriterControl_iid) == 0) + return mockMetaDataControl; + + return 0; + } + + void releaseControl(QMediaControl*) {} + //Initialising the objects for the media + QMediaControl *mockControl; + QMediaContainerControl *mockContainerControl; + MockMetaDataWriterControl *mockMetaDataControl; + bool hasControls; +}; + +class tst_QMediaBindableInterface:public QObject +{ + Q_OBJECT +private slots: + void init() + { + + } + + void cleanup() + { + + } + + void testMediaObject() //Verifying the mediaobject api + { + MockMediaRecorderControl recorderControl(0); + TestBindableService service(0, &recorderControl); + service.mockMetaDataControl->populateMetaData(); + MockMediaObject object(0, &service); + QMediaRecorder recorder(&object); + QMediaObject *obj = recorder.mediaObject(); + QVERIFY(obj != NULL); + QVERIFY(obj->isAvailable()); + } + + void testDestructor() //Invoking the destructor + { + MockMediaRecorderControl recorderControl(0); + TestBindableService service(0, &recorderControl); + service.mockMetaDataControl->populateMetaData(); + MockMediaObject object(0, &service); + QMediaRecorder *recorder = new QMediaRecorder(&object); + QVERIFY(recorder->isAvailable()); + delete recorder; + recorder = NULL; + } +}; + +QTEST_MAIN(tst_QMediaBindableInterface) +#include "tst_qmediabindableinterface.moc" |