QSampleCache unit test: correctly check whether sample is cached.
Use QSample::isCached instead of relying on pointers. Also added a test for loading an invalid file. Change-Id: I9f4f1e8c3dc3cdb4a88a756cc6cad85e68c3a1b6 Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
This commit is contained in:
committed by
Qt by Nokia
parent
4d1579d37b
commit
e44bcf0a38
@@ -5,3 +5,4 @@ QT += multimedia-private testlib
|
|||||||
|
|
||||||
SOURCES += tst_qsamplecache.cpp
|
SOURCES += tst_qsamplecache.cpp
|
||||||
|
|
||||||
|
TESTDATA += testdata/*
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ private slots:
|
|||||||
void testNotCachedSample();
|
void testNotCachedSample();
|
||||||
void testEnoughCapacity();
|
void testEnoughCapacity();
|
||||||
void testNotEnoughCapacity();
|
void testNotEnoughCapacity();
|
||||||
|
void testInvalidFile();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@@ -66,14 +67,15 @@ void tst_QSampleCache::testCachedSample()
|
|||||||
QSampleCache cache;
|
QSampleCache cache;
|
||||||
QSignalSpy loadingSpy(&cache, SIGNAL(isLoadingChanged()));
|
QSignalSpy loadingSpy(&cache, SIGNAL(isLoadingChanged()));
|
||||||
|
|
||||||
QSample* sample = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("data/test.wav")));
|
QSample* sample = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav")));
|
||||||
QVERIFY(sample);
|
QVERIFY(sample);
|
||||||
QTRY_COMPARE(loadingSpy.count(), 2);
|
QTRY_COMPARE(loadingSpy.count(), 2);
|
||||||
QTRY_VERIFY(!cache.isLoading());
|
QTRY_VERIFY(!cache.isLoading());
|
||||||
|
|
||||||
loadingSpy.clear();
|
loadingSpy.clear();
|
||||||
QSample* sampleCached = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("data/test.wav")));
|
QSample* sampleCached = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav")));
|
||||||
QCOMPARE(sample, sampleCached); // sample is cached
|
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
|
// loading thread still starts, but does nothing in this case
|
||||||
QTRY_COMPARE(loadingSpy.count(), 2);
|
QTRY_COMPARE(loadingSpy.count(), 2);
|
||||||
QTRY_VERIFY(!cache.isLoading());
|
QTRY_VERIFY(!cache.isLoading());
|
||||||
@@ -87,21 +89,13 @@ void tst_QSampleCache::testNotCachedSample()
|
|||||||
QSampleCache cache;
|
QSampleCache cache;
|
||||||
QSignalSpy loadingSpy(&cache, SIGNAL(isLoadingChanged()));
|
QSignalSpy loadingSpy(&cache, SIGNAL(isLoadingChanged()));
|
||||||
|
|
||||||
QSample* sample = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("data/test.wav")));
|
QSample* sample = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav")));
|
||||||
QVERIFY(sample);
|
QVERIFY(sample);
|
||||||
QTRY_COMPARE(loadingSpy.count(), 2);
|
QTRY_COMPARE(loadingSpy.count(), 2);
|
||||||
QTRY_VERIFY(!cache.isLoading());
|
QTRY_VERIFY(!cache.isLoading());
|
||||||
sample->release();
|
sample->release();
|
||||||
|
|
||||||
QTestEventLoop::instance().enterLoop(1); // make sure the sample is destroyed
|
QVERIFY(!cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav"))));
|
||||||
|
|
||||||
loadingSpy.clear();
|
|
||||||
QSample* sampleCached = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("data/test.wav")));
|
|
||||||
QVERIFY(sample != sampleCached); // sample is not cached
|
|
||||||
QTRY_COMPARE(loadingSpy.count(), 2);
|
|
||||||
QTRY_VERIFY(!cache.isLoading());
|
|
||||||
|
|
||||||
sampleCached->release();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_QSampleCache::testEnoughCapacity()
|
void tst_QSampleCache::testEnoughCapacity()
|
||||||
@@ -109,7 +103,7 @@ void tst_QSampleCache::testEnoughCapacity()
|
|||||||
QSampleCache cache;
|
QSampleCache cache;
|
||||||
QSignalSpy loadingSpy(&cache, SIGNAL(isLoadingChanged()));
|
QSignalSpy loadingSpy(&cache, SIGNAL(isLoadingChanged()));
|
||||||
|
|
||||||
QSample* sample = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("data/test.wav")));
|
QSample* sample = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav")));
|
||||||
QVERIFY(sample);
|
QVERIFY(sample);
|
||||||
QTRY_COMPARE(loadingSpy.count(), 2); // make sure sample is loaded
|
QTRY_COMPARE(loadingSpy.count(), 2); // make sure sample is loaded
|
||||||
QTRY_VERIFY(!cache.isLoading());
|
QTRY_VERIFY(!cache.isLoading());
|
||||||
@@ -117,24 +111,33 @@ void tst_QSampleCache::testEnoughCapacity()
|
|||||||
sample->release();
|
sample->release();
|
||||||
cache.setCapacity(sampleSize * 2);
|
cache.setCapacity(sampleSize * 2);
|
||||||
|
|
||||||
|
QVERIFY(!cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav"))));
|
||||||
|
|
||||||
loadingSpy.clear();
|
loadingSpy.clear();
|
||||||
sample = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("data/test.wav")));
|
sample = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav")));
|
||||||
QVERIFY(sample);
|
QVERIFY(sample);
|
||||||
QTRY_COMPARE(loadingSpy.count(), 2);
|
QTRY_COMPARE(loadingSpy.count(), 2);
|
||||||
QTRY_VERIFY(!cache.isLoading());
|
QTRY_VERIFY(!cache.isLoading());
|
||||||
sample->release();
|
sample->release();
|
||||||
|
|
||||||
|
QVERIFY(cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav"))));
|
||||||
|
|
||||||
// load another sample and make sure first sample is not destroyed
|
// load another sample and make sure first sample is not destroyed
|
||||||
loadingSpy.clear();
|
loadingSpy.clear();
|
||||||
QSample* sampleOther = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("data/test2.wav")));
|
QSample* sampleOther = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test2.wav")));
|
||||||
QVERIFY(sampleOther);
|
QVERIFY(sampleOther);
|
||||||
QTRY_COMPARE(loadingSpy.count(), 2);
|
QTRY_COMPARE(loadingSpy.count(), 2);
|
||||||
QTRY_VERIFY(!cache.isLoading());
|
QTRY_VERIFY(!cache.isLoading());
|
||||||
sampleOther->release();
|
sampleOther->release();
|
||||||
|
|
||||||
|
QVERIFY(cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav"))));
|
||||||
|
QVERIFY(cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test2.wav"))));
|
||||||
|
|
||||||
loadingSpy.clear();
|
loadingSpy.clear();
|
||||||
QSample* sampleCached = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("data/test.wav")));
|
QSample* sampleCached = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav")));
|
||||||
QCOMPARE(sample, sampleCached); // sample is cached
|
QCOMPARE(sample, sampleCached); // sample is cached
|
||||||
|
QVERIFY(cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav"))));
|
||||||
|
QVERIFY(cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test2.wav"))));
|
||||||
QTRY_COMPARE(loadingSpy.count(), 2);
|
QTRY_COMPARE(loadingSpy.count(), 2);
|
||||||
QTRY_VERIFY(!cache.isLoading());
|
QTRY_VERIFY(!cache.isLoading());
|
||||||
|
|
||||||
@@ -146,36 +149,49 @@ void tst_QSampleCache::testNotEnoughCapacity()
|
|||||||
QSampleCache cache;
|
QSampleCache cache;
|
||||||
QSignalSpy loadingSpy(&cache, SIGNAL(isLoadingChanged()));
|
QSignalSpy loadingSpy(&cache, SIGNAL(isLoadingChanged()));
|
||||||
|
|
||||||
QSample* sample = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("data/test.wav")));
|
QSample* sample = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav")));
|
||||||
QVERIFY(sample);
|
QVERIFY(sample);
|
||||||
QTRY_COMPARE(loadingSpy.count(), 2); // make sure sample is loaded
|
QTRY_COMPARE(loadingSpy.count(), 2); // make sure sample is loaded
|
||||||
QTRY_VERIFY(!cache.isLoading());
|
QTRY_VERIFY(!cache.isLoading());
|
||||||
int sampleSize = sample->data().size();
|
int sampleSize = sample->data().size();
|
||||||
sample->release();
|
sample->release();
|
||||||
cache.setCapacity(sampleSize / 2);
|
cache.setCapacity(sampleSize / 2); // unloads all samples
|
||||||
|
|
||||||
|
QVERIFY(!cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav"))));
|
||||||
|
|
||||||
loadingSpy.clear();
|
loadingSpy.clear();
|
||||||
sample = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("data/test.wav")));
|
sample = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav")));
|
||||||
QVERIFY(sample);
|
QVERIFY(sample);
|
||||||
QTRY_COMPARE(loadingSpy.count(), 2);
|
QTRY_COMPARE(loadingSpy.count(), 2);
|
||||||
QTRY_VERIFY(!cache.isLoading());
|
QTRY_VERIFY(!cache.isLoading());
|
||||||
sample->release();
|
sample->release();
|
||||||
|
|
||||||
|
QVERIFY(cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav"))));
|
||||||
|
|
||||||
// load another sample to force sample cache to destroy first sample
|
// load another sample to force sample cache to destroy first sample
|
||||||
loadingSpy.clear();
|
loadingSpy.clear();
|
||||||
QSample* sampleOther = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("data/test2.wav")));
|
QSample* sampleOther = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test2.wav")));
|
||||||
QVERIFY(sampleOther);
|
QVERIFY(sampleOther);
|
||||||
QTRY_COMPARE(loadingSpy.count(), 2);
|
QTRY_COMPARE(loadingSpy.count(), 2);
|
||||||
QTRY_VERIFY(!cache.isLoading());
|
QTRY_VERIFY(!cache.isLoading());
|
||||||
sampleOther->release();
|
sampleOther->release();
|
||||||
|
|
||||||
loadingSpy.clear();
|
QVERIFY(!cache.isCached(QUrl::fromLocalFile(QFINDTESTDATA("testdata/test.wav"))));
|
||||||
QSample* sampleCached = cache.requestSample(QUrl::fromLocalFile(QFINDTESTDATA("data/test.wav")));
|
}
|
||||||
QVERIFY(sample != sampleCached); // sample is not cached
|
|
||||||
|
void tst_QSampleCache::testInvalidFile()
|
||||||
|
{
|
||||||
|
QSampleCache cache;
|
||||||
|
QSignalSpy loadingSpy(&cache, SIGNAL(isLoadingChanged()));
|
||||||
|
|
||||||
|
QSample* sample = cache.requestSample(QUrl::fromLocalFile("invalid"));
|
||||||
|
QVERIFY(sample);
|
||||||
|
QTRY_COMPARE(sample->state(), QSample::Error);
|
||||||
QTRY_COMPARE(loadingSpy.count(), 2);
|
QTRY_COMPARE(loadingSpy.count(), 2);
|
||||||
QTRY_VERIFY(!cache.isLoading());
|
QTRY_VERIFY(!cache.isLoading());
|
||||||
|
sample->release();
|
||||||
|
|
||||||
sampleCached->release();
|
QVERIFY(!cache.isCached(QUrl::fromLocalFile("invalid")));
|
||||||
}
|
}
|
||||||
|
|
||||||
QTEST_MAIN(tst_QSampleCache)
|
QTEST_MAIN(tst_QSampleCache)
|
||||||
|
|||||||
Reference in New Issue
Block a user