diff options
Diffstat (limited to 'tests/auto')
10 files changed, 381 insertions, 5 deletions
diff --git a/tests/auto/unit/multimediaqml.pro b/tests/auto/unit/multimediaqml.pro index cadd956ec..e8cdcb67e 100644 --- a/tests/auto/unit/multimediaqml.pro +++ b/tests/auto/unit/multimediaqml.pro @@ -1,7 +1,9 @@ TEMPLATE = subdirs SUBDIRS += \ + qdeclarativemultimediaglobal \ qdeclarativeaudio \ + qdeclarativecamera disabled { SUBDIRS += \ diff --git a/tests/auto/unit/qdeclarativecamera/qdeclarativecamera.pro b/tests/auto/unit/qdeclarativecamera/qdeclarativecamera.pro new file mode 100644 index 000000000..08e95e72d --- /dev/null +++ b/tests/auto/unit/qdeclarativecamera/qdeclarativecamera.pro @@ -0,0 +1,15 @@ +TARGET = tst_qdeclarativecamera +CONFIG += warn_on qmltestcase + +QT += multimedia-private + +include (../qmultimedia_common/mock.pri) +include (../qmultimedia_common/mockcamera.pri) + +SOURCES += \ + tst_qdeclarativecamera.cpp + +DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 + +OTHER_FILES += \ + tst_qdeclarativecamera.qml diff --git a/tests/auto/unit/qdeclarativecamera/tst_qdeclarativecamera.cpp b/tests/auto/unit/qdeclarativecamera/tst_qdeclarativecamera.cpp new file mode 100644 index 000000000..a236bd151 --- /dev/null +++ b/tests/auto/unit/qdeclarativecamera/tst_qdeclarativecamera.cpp @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, 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, Digia gives you certain additional +** rights. These rights are described in the Digia 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. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtQuickTest/quicktest.h> + +#include "mockcameraservice.h" +#include "mockmediaserviceprovider.h" + +int main(int argc, char **argv) +{ + MockMediaServiceProvider provider; + MockCameraService mockCameraService; + provider.service = &mockCameraService; + QMediaServiceProvider::setDefaultServiceProvider(&provider); + + return quick_test_main(argc, argv, "QDeclarativeCamera", QUICK_TEST_SOURCE_DIR); +} diff --git a/tests/auto/unit/qdeclarativecamera/tst_qdeclarativecamera.qml b/tests/auto/unit/qdeclarativecamera/tst_qdeclarativecamera.qml new file mode 100644 index 000000000..b38680199 --- /dev/null +++ b/tests/auto/unit/qdeclarativecamera/tst_qdeclarativecamera.qml @@ -0,0 +1,155 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, 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, Digia gives you certain additional +** rights. These rights are described in the Digia 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. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtTest 1.0 +import QtMultimedia 5.4 + +TestCase { + + Component { + id: cameraComponent + Camera { } + } + + Loader { + id: cameraLoader + } + + SignalSpy { + id: deviceIdSpy + target: cameraLoader.item + signalName: "deviceIdChanged" + } + + function test_deviceId() { + deviceIdSpy.clear(); + cameraLoader.sourceComponent = cameraComponent; + var camera = cameraLoader.item; + + // default camera + compare(camera.deviceId, "othercamera", "deviceId"); + compare(camera.displayName, "othercamera desc", "displayName"); + compare(camera.position, Camera.UnspecifiedPosition, "position"); + compare(camera.orientation, 0, "orientation"); + + // setting an invalid camera ID should leave the item unchanged + camera.deviceId = "invalidcamera"; + compare(camera.deviceId, "othercamera"); + compare(deviceIdSpy.count, 0); + compare(camera.displayName, "othercamera desc", "displayName"); + compare(camera.position, Camera.UnspecifiedPosition, "position"); + compare(camera.orientation, 0, "orientation"); + + // change to another valid camera + camera.deviceId = "backcamera"; + compare(camera.deviceId, "backcamera"); + compare(deviceIdSpy.count, 1); + compare(camera.displayName, "backcamera desc", "displayName"); + compare(camera.position, Camera.BackFace, "position"); + compare(camera.orientation, 90, "orientation"); + + // setting an empty device ID should load the default camera + camera.deviceId = ""; + compare(camera.deviceId, "othercamera", "deviceId"); + compare(deviceIdSpy.count, 2); + + cameraLoader.sourceComponent = undefined; + } + + function test_position() { + deviceIdSpy.clear(); + cameraLoader.sourceComponent = cameraComponent; + var camera = cameraLoader.item; + + // default camera + compare(camera.position, Camera.UnspecifiedPosition, "position"); + compare(camera.deviceId, "othercamera", "deviceId"); + + // setting an unavailable camera position should leave the item unchanged + camera.position = Camera.FrontFace; + compare(camera.position, Camera.UnspecifiedPosition, "position"); + compare(camera.deviceId, "othercamera", "deviceId"); + compare(deviceIdSpy.count, 0); + + // change to an available position + camera.position = Camera.BackFace; + compare(camera.position, Camera.BackFace, "position"); + compare(camera.deviceId, "backcamera", "deviceId"); + compare(deviceIdSpy.count, 1); + + // setting UnspecifiedPosition should load the default camera + camera.position = Camera.UnspecifiedPosition; + compare(camera.position, Camera.UnspecifiedPosition, "position"); + compare(camera.deviceId, "othercamera", "deviceId"); + compare(deviceIdSpy.count, 2); + + cameraLoader.sourceComponent = undefined; + } + + SignalSpy { + id: cameraStateSpy + target: cameraLoader.item + signalName: "cameraStateChanged" + } + + function test_cameraState() { + deviceIdSpy.clear(); + cameraStateSpy.clear(); + cameraLoader.sourceComponent = cameraComponent; + var camera = cameraLoader.item; + + // camera should be in ActiveState by default + compare(camera.cameraState, Camera.ActiveState, "cameraState"); + compare(camera.deviceId, "othercamera", "deviceId"); + + // Changing the camera device should unload the previous camera and apply the current state + // to the new camera + camera.deviceId = "backcamera"; + compare(camera.deviceId, "backcamera", "deviceId"); + compare(camera.cameraState, Camera.ActiveState, "cameraState"); + compare(cameraStateSpy.count, 2); + compare(cameraStateSpy.signalArguments[0][0], Camera.UnloadedState); + compare(cameraStateSpy.signalArguments[1][0], Camera.ActiveState); + + cameraLoader.sourceComponent = undefined; + } +} diff --git a/tests/auto/unit/qdeclarativemultimediaglobal/qdeclarativemultimediaglobal.pro b/tests/auto/unit/qdeclarativemultimediaglobal/qdeclarativemultimediaglobal.pro new file mode 100644 index 000000000..62e19e0d2 --- /dev/null +++ b/tests/auto/unit/qdeclarativemultimediaglobal/qdeclarativemultimediaglobal.pro @@ -0,0 +1,15 @@ +TARGET = tst_qdeclarativemultimediaglobal +CONFIG += warn_on qmltestcase + +QT += multimedia-private + +include (../qmultimedia_common/mock.pri) +include (../qmultimedia_common/mockcamera.pri) + +SOURCES += \ + tst_qdeclarativemultimediaglobal.cpp + +DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 + +OTHER_FILES += \ + tst_qdeclarativemultimediaglobal.qml diff --git a/tests/auto/unit/qdeclarativemultimediaglobal/tst_qdeclarativemultimediaglobal.cpp b/tests/auto/unit/qdeclarativemultimediaglobal/tst_qdeclarativemultimediaglobal.cpp new file mode 100644 index 000000000..82ea3e081 --- /dev/null +++ b/tests/auto/unit/qdeclarativemultimediaglobal/tst_qdeclarativemultimediaglobal.cpp @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, 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, Digia gives you certain additional +** rights. These rights are described in the Digia 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. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtQuickTest/quicktest.h> + +#include "mockcameraservice.h" +#include "mockmediaserviceprovider.h" + +int main(int argc, char **argv) +{ + MockMediaServiceProvider provider; + MockCameraService mockCameraService; + provider.service = &mockCameraService; + QMediaServiceProvider::setDefaultServiceProvider(&provider); + + return quick_test_main(argc, argv, "QDeclarativeMultimediaGlobal", QUICK_TEST_SOURCE_DIR); +} diff --git a/tests/auto/unit/qdeclarativemultimediaglobal/tst_qdeclarativemultimediaglobal.qml b/tests/auto/unit/qdeclarativemultimediaglobal/tst_qdeclarativemultimediaglobal.qml new file mode 100644 index 000000000..fbf658249 --- /dev/null +++ b/tests/auto/unit/qdeclarativemultimediaglobal/tst_qdeclarativemultimediaglobal.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, 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, Digia gives you certain additional +** rights. These rights are described in the Digia 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. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtTest 1.0 +import QtMultimedia 5.4 + +TestCase { + + function test_0_globalObject() { + verify(typeof QtMultimedia !== 'undefined'); + } + + function test_1_defaultCamera() { + verify(typeof QtMultimedia.defaultCamera !== 'undefined'); + + var camera = QtMultimedia.defaultCamera; + compare(camera.deviceId, "othercamera", "deviceId"); + compare(camera.displayName, "othercamera desc", "displayName"); + compare(camera.position, Camera.UnspecifiedPosition, "position"); + compare(camera.orientation, 0, "orientation"); + } + + function test_2_availableCameras() { + verify(typeof QtMultimedia.availableCameras !== 'undefined'); + compare(QtMultimedia.availableCameras.length, 2); + + var camera = QtMultimedia.availableCameras[0]; + compare(camera.deviceId, "backcamera", "deviceId"); + compare(camera.displayName, "backcamera desc", "displayName"); + compare(camera.position, Camera.BackFace, "position"); + compare(camera.orientation, 90, "orientation"); + + camera = QtMultimedia.availableCameras[1]; + compare(camera.deviceId, "othercamera", "deviceId"); + compare(camera.displayName, "othercamera desc", "displayName"); + compare(camera.position, Camera.UnspecifiedPosition, "position"); + compare(camera.orientation, 0, "orientation"); + } + +} diff --git a/tests/auto/unit/qmultimedia_common/mock.pri b/tests/auto/unit/qmultimedia_common/mock.pri index 269981a86..94a17a615 100644 --- a/tests/auto/unit/qmultimedia_common/mock.pri +++ b/tests/auto/unit/qmultimedia_common/mock.pri @@ -1,5 +1,5 @@ INCLUDEPATH += $$PWD \ - ../../../src/multimedia \ + ../../../../src/multimedia \ HEADERS *= \ ../qmultimedia_common/mockmediaserviceprovider.h \ diff --git a/tests/auto/unit/qmultimedia_common/mockcamera.pri b/tests/auto/unit/qmultimedia_common/mockcamera.pri index c12ac3c62..dbd7312b2 100644 --- a/tests/auto/unit/qmultimedia_common/mockcamera.pri +++ b/tests/auto/unit/qmultimedia_common/mockcamera.pri @@ -1,8 +1,8 @@ # Camera related mock backend files INCLUDEPATH += $$PWD \ - ../../../src/multimedia \ - ../../../src/multimedia/video \ - ../../../src/multimedia/camera + ../../../../src/multimedia \ + ../../../../src/multimedia/video \ + ../../../../src/multimedia/camera HEADERS *= \ ../qmultimedia_common/mockcameraservice.h \ diff --git a/tests/auto/unit/qmultimedia_common/mockmediaserviceprovider.h b/tests/auto/unit/qmultimedia_common/mockmediaserviceprovider.h index 6bf221c50..8ab813229 100644 --- a/tests/auto/unit/qmultimedia_common/mockmediaserviceprovider.h +++ b/tests/auto/unit/qmultimedia_common/mockmediaserviceprovider.h @@ -42,7 +42,7 @@ #ifndef MOCKMEDIASERVICEPROVIDER_H #define MOCKMEDIASERVICEPROVIDER_H -#include "private/qmediaserviceprovider_p.h" +#include "qmediaserviceprovider_p.h" #include "qmediaservice.h" #include "mockvideodeviceselectorcontrol.h" #include "mockcamerainfocontrol.h" |