/**************************************************************************** ** ** 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 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 #include "qmediaresource.h" QT_USE_NAMESPACE class tst_QMediaResource : public QObject { Q_OBJECT private slots: void constructNull(); void construct_data(); void construct(); void setResolution(); void equality(); void copy(); void assign(); void constructorRequest(); void copyConstructor(); }; void tst_QMediaResource::constructNull() { QMediaResource resource; QCOMPARE(resource.isNull(), true); QCOMPARE(resource.url(), QUrl()); QCOMPARE(resource.request(), QNetworkRequest()); QCOMPARE(resource.mimeType(), QString()); QCOMPARE(resource.language(), QString()); QCOMPARE(resource.audioCodec(), QString()); QCOMPARE(resource.videoCodec(), QString()); QCOMPARE(resource.dataSize(), qint64(0)); QCOMPARE(resource.audioBitRate(), 0); QCOMPARE(resource.sampleRate(), 0); QCOMPARE(resource.channelCount(), 0); QCOMPARE(resource.videoBitRate(), 0); QCOMPARE(resource.resolution(), QSize()); } void tst_QMediaResource::construct_data() { QTest::addColumn("url"); QTest::addColumn("request"); QTest::addColumn("mimeType"); QTest::addColumn("language"); QTest::addColumn("audioCodec"); QTest::addColumn("videoCodec"); QTest::addColumn("dataSize"); QTest::addColumn("audioBitRate"); QTest::addColumn("sampleRate"); QTest::addColumn("channelCount"); QTest::addColumn("videoBitRate"); QTest::addColumn("resolution"); QTest::newRow("audio content") << QUrl(QString::fromLatin1("http:://test.com/test.mp3")) << QNetworkRequest(QUrl(QString::fromLatin1("http:://test.com/test.mp3"))) << QString::fromLatin1("audio/mpeg") << QString::fromLatin1("eng") << QString::fromLatin1("mp3") << QString() << qint64(5465433) << 128000 << 44100 << 2 << 0 << QSize(); QTest::newRow("image content") << QUrl(QString::fromLatin1("http:://test.com/test.jpg")) << QNetworkRequest(QUrl(QString::fromLatin1("http:://test.com/test.jpg"))) << QString::fromLatin1("image/jpeg") << QString() << QString() << QString() << qint64(23600) << 0 << 0 << 0 << 0 << QSize(640, 480); QTest::newRow("video content") << QUrl(QString::fromLatin1("http:://test.com/test.mp4")) << QNetworkRequest(QUrl(QString::fromLatin1("http:://test.com/test.mp4"))) << QString::fromLatin1("video/mp4") << QString() << QString::fromLatin1("aac") << QString::fromLatin1("h264") << qint64(36245851) << 96000 << 44000 << 5 << 750000 << QSize(720, 576); QTest::newRow("thumbnail") << QUrl(QString::fromLatin1("file::///thumbs/test.png")) << QNetworkRequest(QUrl(QString::fromLatin1("file::///thumbs/test.png"))) << QString::fromLatin1("image/png") << QString() << QString() << QString() << qint64(2360) << 0 << 0 << 0 << 0 << QSize(128, 128); } void tst_QMediaResource::construct() { QFETCH(QUrl, url); QFETCH(QNetworkRequest, request); QFETCH(QString, mimeType); QFETCH(QString, language); QFETCH(QString, audioCodec); QFETCH(QString, videoCodec); QFETCH(qint64, dataSize); QFETCH(int, audioBitRate); QFETCH(int, sampleRate); QFETCH(int, channelCount); QFETCH(int, videoBitRate); QFETCH(QSize, resolution); { QMediaResource resource(url); QCOMPARE(resource.isNull(), false); QCOMPARE(resource.url(), url); QCOMPARE(resource.mimeType(), QString()); QCOMPARE(resource.language(), QString()); QCOMPARE(resource.audioCodec(), QString()); QCOMPARE(resource.videoCodec(), QString()); QCOMPARE(resource.dataSize(), qint64(0)); QCOMPARE(resource.audioBitRate(), 0); QCOMPARE(resource.sampleRate(), 0); QCOMPARE(resource.channelCount(), 0); QCOMPARE(resource.videoBitRate(), 0); QCOMPARE(resource.resolution(), QSize()); } { QMediaResource resource(url, mimeType); QCOMPARE(resource.isNull(), false); QCOMPARE(resource.url(), url); QCOMPARE(resource.request(), request); QCOMPARE(resource.mimeType(), mimeType); QCOMPARE(resource.language(), QString()); QCOMPARE(resource.audioCodec(), QString()); QCOMPARE(resource.videoCodec(), QString()); QCOMPARE(resource.dataSize(), qint64(0)); QCOMPARE(resource.audioBitRate(), 0); QCOMPARE(resource.sampleRate(), 0); QCOMPARE(resource.channelCount(), 0); QCOMPARE(resource.videoBitRate(), 0); QCOMPARE(resource.resolution(), QSize()); resource.setLanguage(language); resource.setAudioCodec(audioCodec); resource.setVideoCodec(videoCodec); resource.setDataSize(dataSize); resource.setAudioBitRate(audioBitRate); resource.setSampleRate(sampleRate); resource.setChannelCount(channelCount); resource.setVideoBitRate(videoBitRate); resource.setResolution(resolution); QCOMPARE(resource.language(), language); QCOMPARE(resource.audioCodec(), audioCodec); QCOMPARE(resource.videoCodec(), videoCodec); QCOMPARE(resource.dataSize(), dataSize); QCOMPARE(resource.audioBitRate(), audioBitRate); QCOMPARE(resource.sampleRate(), sampleRate); QCOMPARE(resource.channelCount(), channelCount); QCOMPARE(resource.videoBitRate(), videoBitRate); QCOMPARE(resource.resolution(), resolution); } { QMediaResource resource(request, mimeType); QCOMPARE(resource.isNull(), false); QCOMPARE(resource.url(), url); QCOMPARE(resource.request(), request); QCOMPARE(resource.mimeType(), mimeType); QCOMPARE(resource.language(), QString()); QCOMPARE(resource.audioCodec(), QString()); QCOMPARE(resource.videoCodec(), QString()); QCOMPARE(resource.dataSize(), qint64(0)); QCOMPARE(resource.audioBitRate(), 0); QCOMPARE(resource.sampleRate(), 0); QCOMPARE(resource.channelCount(), 0); QCOMPARE(resource.videoBitRate(), 0); QCOMPARE(resource.resolution(), QSize()); resource.setLanguage(language); resource.setAudioCodec(audioCodec); resource.setVideoCodec(videoCodec); resource.setDataSize(dataSize); resource.setAudioBitRate(audioBitRate); resource.setSampleRate(sampleRate); resource.setChannelCount(channelCount); resource.setVideoBitRate(videoBitRate); resource.setResolution(resolution); QCOMPARE(resource.language(), language); QCOMPARE(resource.audioCodec(), audioCodec); QCOMPARE(resource.videoCodec(), videoCodec); QCOMPARE(resource.dataSize(), dataSize); QCOMPARE(resource.audioBitRate(), audioBitRate); QCOMPARE(resource.sampleRate(), sampleRate); QCOMPARE(resource.channelCount(), channelCount); QCOMPARE(resource.videoBitRate(), videoBitRate); QCOMPARE(resource.resolution(), resolution); } } void tst_QMediaResource::setResolution() { QMediaResource resource( QUrl(QString::fromLatin1("file::///thumbs/test.png")), QString::fromLatin1("image/png")); QCOMPARE(resource.resolution(), QSize()); resource.setResolution(QSize(120, 80)); QCOMPARE(resource.resolution(), QSize(120, 80)); resource.setResolution(QSize(-1, 23)); QCOMPARE(resource.resolution(), QSize(-1, 23)); resource.setResolution(QSize(-43, 34)); QCOMPARE(resource.resolution(), QSize(-43, 34)); resource.setResolution(QSize(64, -1)); QCOMPARE(resource.resolution(), QSize(64, -1)); resource.setResolution(QSize(64, -83)); QCOMPARE(resource.resolution(), QSize(64, -83)); resource.setResolution(QSize(-12, -83)); QCOMPARE(resource.resolution(), QSize(-12, -83)); resource.setResolution(QSize()); QCOMPARE(resource.resolution(), QSize(-1, -1)); resource.setResolution(120, 80); QCOMPARE(resource.resolution(), QSize(120, 80)); resource.setResolution(-1, 23); QCOMPARE(resource.resolution(), QSize(-1, 23)); resource.setResolution(-43, 34); QCOMPARE(resource.resolution(), QSize(-43, 34)); resource.setResolution(64, -1); QCOMPARE(resource.resolution(), QSize(64, -1)); resource.setResolution(64, -83); QCOMPARE(resource.resolution(), QSize(64, -83)); resource.setResolution(-12, -83); QCOMPARE(resource.resolution(), QSize(-12, -83)); resource.setResolution(-1, -1); QCOMPARE(resource.resolution(), QSize()); } void tst_QMediaResource::equality() { QMediaResource resource1( QUrl(QString::fromLatin1("http://test.com/test.mp4")), QString::fromLatin1("video/mp4")); QMediaResource resource2( QUrl(QString::fromLatin1("http://test.com/test.mp4")), QString::fromLatin1("video/mp4")); QMediaResource resource3( QUrl(QString::fromLatin1("file:///thumbs/test.jpg"))); QMediaResource resource4( QUrl(QString::fromLatin1("file:///thumbs/test.jpg"))); QMediaResource resource5( QUrl(QString::fromLatin1("http://test.com/test.mp3")), QString::fromLatin1("audio/mpeg")); QNetworkRequest request(QUrl("http://test.com/test.mp3")); QString requestMimeType("audio/mp3"); QMediaResource requestResource1(request, requestMimeType); QMediaResource requestResource2(request, requestMimeType); QCOMPARE(requestResource1 == requestResource2, true); QCOMPARE(requestResource1 != requestResource2, false); QCOMPARE(requestResource1 != resource5, true); QCOMPARE(resource1 == resource2, true); QCOMPARE(resource1 != resource2, false); QCOMPARE(resource3 == resource4, true); QCOMPARE(resource3 != resource4, false); QCOMPARE(resource1 == resource3, false); QCOMPARE(resource1 != resource3, true); QCOMPARE(resource1 == resource5, false); QCOMPARE(resource1 != resource5, true); resource1.setAudioCodec(QString::fromLatin1("mp3")); resource2.setAudioCodec(QString::fromLatin1("aac")); // Not equal differing audio codecs. QCOMPARE(resource1 == resource2, false); QCOMPARE(resource1 != resource2, true); resource1.setAudioCodec(QString::fromLatin1("aac")); // Equal. QCOMPARE(resource1 == resource2, true); QCOMPARE(resource1 != resource2, false); resource1.setVideoCodec(QString()); // Equal. QCOMPARE(resource1 == resource2, true); QCOMPARE(resource1 != resource2, false); resource1.setVideoCodec(QString::fromLatin1("h264")); // Not equal differing video codecs. QCOMPARE(resource1 == resource2, false); QCOMPARE(resource1 != resource2, true); resource2.setVideoCodec(QString::fromLatin1("h264")); // Equal. QCOMPARE(resource1 == resource2, true); QCOMPARE(resource1 != resource2, false); resource2.setDataSize(0); // Equal. QCOMPARE(resource1 == resource2, true); QCOMPARE(resource1 != resource2, false); resource1.setDataSize(546423); // Not equal differing video codecs. QCOMPARE(resource1 == resource2, false); QCOMPARE(resource1 != resource2, true); resource2.setDataSize(546423); // Equal. QCOMPARE(resource1 == resource2, true); QCOMPARE(resource1 != resource2, false); resource1.setAudioBitRate(96000); resource1.setSampleRate(48000); resource2.setSampleRate(44100); resource1.setChannelCount(0); resource1.setVideoBitRate(900000); resource2.setLanguage(QString::fromLatin1("eng")); // Not equal, audio bit rate, sample rate, video bit rate, and // language. QCOMPARE(resource1 == resource2, false); QCOMPARE(resource1 != resource2, true); resource2.setAudioBitRate(96000); resource1.setSampleRate(44100); // Not equal, differing video bit rate, and language. QCOMPARE(resource1 == resource2, false); QCOMPARE(resource1 != resource2, true); resource2.setVideoBitRate(900000); resource1.setLanguage(QString::fromLatin1("eng")); // Equal QCOMPARE(resource1 == resource2, true); QCOMPARE(resource1 != resource2, false); resource1.setResolution(QSize()); // Equal QCOMPARE(resource1 == resource2, true); QCOMPARE(resource1 != resource2, false); resource2.setResolution(-1, -1); // Equal QCOMPARE(resource1 == resource2, true); QCOMPARE(resource1 != resource2, false); resource1.setResolution(QSize(-640, -480)); // Not equal, differing resolution. QCOMPARE(resource1 == resource2, false); QCOMPARE(resource1 != resource2, true); resource1.setResolution(QSize(640, 480)); resource2.setResolution(QSize(800, 600)); // Not equal, differing resolution. QCOMPARE(resource1 == resource2, false); QCOMPARE(resource1 != resource2, true); resource1.setResolution(800, 600); // Equal QCOMPARE(resource1 == resource2, true); QCOMPARE(resource1 != resource2, false); /* equality tests for constructor of QMediaresource(QNetworkrequest,mimeType)*/ QNetworkRequest request2(QUrl(QString::fromLatin1("http://test.com/test.mp4"))); QUrl url(QString::fromLatin1("http://test.com/test.mp4")); QString mimeType(QLatin1String("video/mp4")); QMediaResource resource6(request2,mimeType); QMediaResource resource7(request2,mimeType); QVERIFY(resource6.request()==request2); QVERIFY(resource6.mimeType()==mimeType); QVERIFY(resource7.request()==request2); QVERIFY(resource7.mimeType()==mimeType); QVERIFY(resource6.request()==resource7.request()); QVERIFY(resource6.mimeType()==resource7.mimeType()); QVERIFY(resource6==resource7); /*for copy constructor*/ QMediaResource resource8(resource7); QVERIFY(resource8.request()==request2); QVERIFY(resource8.mimeType()==mimeType); QVERIFY(resource7.request()==request2); QVERIFY(resource7.mimeType()==mimeType); QVERIFY(resource8.request()==resource7.request()); QVERIFY(resource8.mimeType()==resource7.mimeType()); QVERIFY(resource8==resource7); /*for assign constructor*/ QMediaResource resource9(request2,mimeType); QMediaResource resource10=resource9; QVERIFY(resource10.request()==request2); QVERIFY(resource10.mimeType()==mimeType); QVERIFY(resource9.request()==request2); QVERIFY(resource9.mimeType()==mimeType); QVERIFY(resource8.request()==resource7.request()); QVERIFY(resource8.mimeType()==resource7.mimeType()); QVERIFY(resource8==resource7); } void tst_QMediaResource::copy() { const QUrl url(QString::fromLatin1("http://test.com/test.mp4")); const QString mimeType(QLatin1String("video/mp4")); const QString amrCodec(QLatin1String("amr")); const QString mp3Codec(QLatin1String("mp3")); const QString aacCodec(QLatin1String("aac")); const QString h264Codec(QLatin1String("h264")); QMediaResource original(url, mimeType); original.setAudioCodec(amrCodec); QMediaResource copy(original); QCOMPARE(copy.url(), url); QCOMPARE(copy.mimeType(), mimeType); QCOMPARE(copy.audioCodec(), amrCodec); QCOMPARE(original == copy, true); QCOMPARE(original != copy, false); original.setAudioCodec(mp3Codec); QCOMPARE(copy.audioCodec(), amrCodec); QCOMPARE(original == copy, false); QCOMPARE(original != copy, true); copy.setAudioCodec(aacCodec); copy.setVideoCodec(h264Codec); QCOMPARE(copy.url(), url); QCOMPARE(copy.mimeType(), mimeType); QCOMPARE(original.audioCodec(), mp3Codec); } void tst_QMediaResource::assign() { const QUrl url(QString::fromLatin1("http://test.com/test.mp4")); const QString mimeType(QLatin1String("video/mp4")); const QString amrCodec(QLatin1String("amr")); const QString mp3Codec(QLatin1String("mp3")); const QString aacCodec(QLatin1String("aac")); const QString h264Codec(QLatin1String("h264")); QNetworkRequest request(QUrl(QString::fromLatin1("http://test.com/test.mp4"))); const qint64 dataSize(23600); int audioBitRate = 1, sampleRate = 2, channelCount = 3, videoBitRate = 4; QSize resolution(QSize(640, 480)); QString language("eng"); QMediaResource copy(QUrl(QString::fromLatin1("file:///thumbs/test.jpg"))); QMediaResource original(url, mimeType); original.setAudioCodec(amrCodec); copy = original; QCOMPARE(copy.url(), url); QCOMPARE(copy.mimeType(), mimeType); QCOMPARE(copy.audioCodec(), amrCodec); QCOMPARE(original == copy, true); QCOMPARE(original != copy, false); original.setAudioCodec(mp3Codec); QCOMPARE(copy.audioCodec(), amrCodec); QCOMPARE(original == copy, false); QCOMPARE(original != copy, true); copy.setAudioCodec(aacCodec); copy.setVideoCodec(h264Codec); QCOMPARE(copy.url(), url); QCOMPARE(copy.mimeType(), mimeType); QCOMPARE(original.audioCodec(), mp3Codec); /* for constructor of QMediaresource(QNetworkrequest,mimeType)*/ QMediaResource copy1(QNetworkRequest(QUrl(QString::fromLatin1("file:///thumbs/test.jpg")))); QMediaResource original1(request, mimeType); original1.setAudioCodec(amrCodec); original1.setLanguage(QString("eng")); original1.setVideoCodec(h264Codec); original1.setDataSize(dataSize); original1.setAudioBitRate(audioBitRate); original1.setSampleRate(sampleRate); original1.setChannelCount(channelCount); original1.setVideoBitRate(videoBitRate); original1.setResolution(resolution); copy1 = original1; QCOMPARE(original1 == copy1, true); } // Constructor for request without passing mimetype. void tst_QMediaResource::constructorRequest() { //Initialise the request and url. QNetworkRequest request(QUrl(QString::fromLatin1("http:://test.com/test.mp3"))); QUrl url(QString::fromLatin1("http:://test.com/test.mp3")); // Create the instance with request as parameter. QMediaResource resource(request); // Verify all the parameters of objects. QCOMPARE(resource.isNull(), false); QCOMPARE(resource.url(), url); QCOMPARE(resource.request(), request); QCOMPARE(resource.mimeType(), QString()); QCOMPARE(resource.language(), QString()); QCOMPARE(resource.audioCodec(), QString()); QCOMPARE(resource.videoCodec(), QString()); QCOMPARE(resource.dataSize(), qint64(0)); QCOMPARE(resource.audioBitRate(), 0); QCOMPARE(resource.sampleRate(), 0); QCOMPARE(resource.channelCount(), 0); QCOMPARE(resource.videoBitRate(), 0); QCOMPARE(resource.resolution(), QSize()); } // Copy constructor with all the parameter and copy constructor for constructor with request and mimetype as parameter. void tst_QMediaResource::copyConstructor() { // Initialise all the parameters. const QUrl url(QString::fromLatin1("http://test.com/test.mp4")); const QString mimeType(QLatin1String("video/mp4")); const QString amrCodec(QLatin1String("amr")); const QString h264Codec(QLatin1String("h264")); const qint64 dataSize(23600); int audioBitRate = 1, sampleRate = 2, channelCount = 3, videoBitRate = 4; QSize resolution(QSize(640, 480)); QString language("eng"); // Create the instance with url and mimetype. QMediaResource original(url, mimeType); // Set all the parameters. original.setAudioCodec(amrCodec); original.setLanguage(QString("eng")); original.setVideoCodec(h264Codec); original.setDataSize(dataSize); original.setAudioBitRate(audioBitRate); original.setSampleRate(sampleRate); original.setChannelCount(channelCount); original.setVideoBitRate(videoBitRate); original.setResolution(resolution); // Copy the instance to new object. QMediaResource copy(original); // Verify all the parameters of the copied object. QCOMPARE(copy.url(), url); QCOMPARE(copy.mimeType(), mimeType); QCOMPARE(copy.audioCodec(), amrCodec); QCOMPARE(copy.language(), language ); QCOMPARE(copy.videoCodec(), h264Codec); QCOMPARE(copy.dataSize(), dataSize); QCOMPARE(copy.audioBitRate(), audioBitRate); QCOMPARE(copy.sampleRate(), sampleRate); QCOMPARE(copy.channelCount(), channelCount); QCOMPARE(copy.videoBitRate(), videoBitRate); QCOMPARE(copy.resolution(), resolution); // Compare both the objects are equal. QCOMPARE(original == copy, true); QCOMPARE(original != copy, false); // Initialise the request parameter. QNetworkRequest request1(QUrl(QString::fromLatin1("http://test.com/test.mp4"))); // Constructor with rerquest and mimetype. QMediaResource original1(request1, mimeType); // Copy the object and verify if both are eqaul or not. QMediaResource copy1(original1); QCOMPARE(copy1.url(), url); QCOMPARE(copy1.mimeType(), mimeType); QCOMPARE(copy1.request(), request1); QCOMPARE(original1 == copy1, true); } QTEST_MAIN(tst_QMediaResource) #include "tst_qmediaresource.moc"