diff options
Diffstat (limited to 'tests/auto/unit/multimedia/qsamplecache')
-rw-r--r-- | tests/auto/unit/multimedia/qsamplecache/CMakeLists.txt | 23 | ||||
-rw-r--r-- | tests/auto/unit/multimedia/qsamplecache/testdata/test.wav | bin | 0 -> 88232 bytes | |||
-rw-r--r-- | tests/auto/unit/multimedia/qsamplecache/testdata/test2.wav | bin | 0 -> 88232 bytes | |||
-rw-r--r-- | tests/auto/unit/multimedia/qsamplecache/tst_qsamplecache.cpp | 144 |
4 files changed, 167 insertions, 0 deletions
diff --git a/tests/auto/unit/multimedia/qsamplecache/CMakeLists.txt b/tests/auto/unit/multimedia/qsamplecache/CMakeLists.txt new file mode 100644 index 000000000..2f58c1f6e --- /dev/null +++ b/tests/auto/unit/multimedia/qsamplecache/CMakeLists.txt @@ -0,0 +1,23 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: BSD-3-Clause + +# Generated from qsamplecache.pro. + +##################################################################### +## tst_qsamplecache Test: +##################################################################### + +# Collect test data +file(GLOB_RECURSE test_data_glob + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + testdata/*) +list(APPEND test_data ${test_data_glob}) + +qt_internal_add_test(tst_qsamplecache + SOURCES + tst_qsamplecache.cpp + LIBRARIES + Qt::Gui + Qt::MultimediaPrivate + TESTDATA ${test_data} +) diff --git a/tests/auto/unit/multimedia/qsamplecache/testdata/test.wav b/tests/auto/unit/multimedia/qsamplecache/testdata/test.wav Binary files differnew file mode 100644 index 000000000..4dd022661 --- /dev/null +++ b/tests/auto/unit/multimedia/qsamplecache/testdata/test.wav diff --git a/tests/auto/unit/multimedia/qsamplecache/testdata/test2.wav b/tests/auto/unit/multimedia/qsamplecache/testdata/test2.wav Binary files differnew file mode 100644 index 000000000..4dd022661 --- /dev/null +++ b/tests/auto/unit/multimedia/qsamplecache/testdata/test2.wav diff --git a/tests/auto/unit/multimedia/qsamplecache/tst_qsamplecache.cpp b/tests/auto/unit/multimedia/qsamplecache/tst_qsamplecache.cpp new file mode 100644 index 000000000..311d05a5a --- /dev/null +++ b/tests/auto/unit/multimedia/qsamplecache/tst_qsamplecache.cpp @@ -0,0 +1,144 @@ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +#include <QtTest/QtTest> +#include <private/qsamplecache_p.h> + +class tst_QSampleCache : public QObject +{ + Q_OBJECT +public: + +public slots: + +private slots: + void testCachedSample(); + void testNotCachedSample(); + void testEnoughCapacity(); + void testNotEnoughCapacity(); + void testInvalidFile(); + +private: + +}; + +void tst_QSampleCache::testCachedSample() +{ + QSampleCache cache; + + QSample* sample = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav"))); + QVERIFY(sample); + QTRY_VERIFY(!cache.isLoading()); + + QSample* sampleCached = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav"))); + QCOMPARE(sample, sampleCached); // sample is cached + QVERIFY(cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav")))); + // loading thread still starts, but does nothing in this case + QTRY_VERIFY(!cache.isLoading()); + + sample->release(); + sampleCached->release(); +} + +void tst_QSampleCache::testNotCachedSample() +{ + QSampleCache cache; + + QSample* sample = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav"))); + QVERIFY(sample); + QVERIFY(cache.isLoading()); + QTRY_VERIFY(!cache.isLoading()); + sample->release(); + + QVERIFY(!cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav")))); +} + +void tst_QSampleCache::testEnoughCapacity() +{ + QSampleCache cache; + + QSample* sample = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav"))); + QVERIFY(sample); + QVERIFY(cache.isLoading()); + QTRY_VERIFY(!cache.isLoading()); + int sampleSize = sample->data().size(); + sample->release(); + cache.setCapacity(sampleSize * 2); + + QVERIFY(!cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav")))); + + sample = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav"))); + QVERIFY(sample); + QVERIFY(cache.isLoading()); + QTRY_VERIFY(!cache.isLoading()); + sample->release(); + + QVERIFY(cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav")))); + + // load another sample and make sure first sample is not destroyed + QSample* sampleOther = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test2.wav"))); + QVERIFY(sampleOther); + QVERIFY(cache.isLoading()); + QTRY_VERIFY(!cache.isLoading()); + sampleOther->release(); + + QVERIFY(cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav")))); + QVERIFY(cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test2.wav")))); + + QSample* sampleCached = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav"))); + QCOMPARE(sample, sampleCached); // sample is cached + QVERIFY(cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav")))); + QVERIFY(cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test2.wav")))); + QVERIFY(!cache.isLoading()); + + sampleCached->release(); +} + +void tst_QSampleCache::testNotEnoughCapacity() +{ + QSampleCache cache; + + QSample* sample = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav"))); + QVERIFY(sample); + QVERIFY(cache.isLoading()); + QTRY_VERIFY(!cache.isLoading()); + int sampleSize = sample->data().size(); + sample->release(); + cache.setCapacity(sampleSize / 2); // unloads all samples + + QVERIFY(!cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav")))); + + sample = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav"))); + QVERIFY(sample); + QVERIFY(cache.isLoading()); + QTRY_VERIFY(!cache.isLoading()); + sample->release(); + + QVERIFY(cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav")))); + + // load another sample to force sample cache to destroy first sample + QSample* sampleOther = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test2.wav"))); + QVERIFY(sampleOther); + QVERIFY(cache.isLoading()); + QTRY_VERIFY(!cache.isLoading()); + sampleOther->release(); + + QVERIFY(!cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav")))); +} + +void tst_QSampleCache::testInvalidFile() +{ + QSampleCache cache; + + QSample* sample = cache.requestSample(QUrl::fromLocalFile("invalid")); + QVERIFY(sample); + QTRY_COMPARE(sample->state(), QSample::Error); + QVERIFY(!cache.isLoading()); + sample->release(); + + QVERIFY(!cache.isCached(QUrl::fromLocalFile("invalid"))); +} + +QTEST_MAIN(tst_QSampleCache) + +#include "tst_qsamplecache.moc" |