From 9f3e54044fd1e0c26153195f91889342a8425b7f Mon Sep 17 00:00:00 2001 From: Wolf Bergenheim Date: Fri, 22 Jan 2010 14:29:12 +0200 Subject: added ResourceSet --- tests/test-resource-set.cpp | 117 ++++++++++++++++++++++++++++++++++++++++++++ tests/test-resource-set.h | 40 +++++++++++++++ tests/test-resource-set.pro | 21 ++++++++ tests/test-resource.cpp | 98 +++++++++++++++++++++++++++++++++++++ tests/test-resource.h | 9 +++- 5 files changed, 284 insertions(+), 1 deletion(-) create mode 100644 tests/test-resource-set.cpp create mode 100644 tests/test-resource-set.h create mode 100644 tests/test-resource-set.pro (limited to 'tests') diff --git a/tests/test-resource-set.cpp b/tests/test-resource-set.cpp new file mode 100644 index 0000000..b05a16b --- /dev/null +++ b/tests/test-resource-set.cpp @@ -0,0 +1,117 @@ +#include "test-resource-set.h" + +using namespace ResourcePolicy; + +TestResourceSet::TestResourceSet() +{ + audioPlayback.setType(AudioPlaybackResource); + videoPlayback.setType(VideoPlaybackResource); + audioRecorder.setType(AudioRecorderResource); + videoRecorder.setType(VideoRecorderResource); +} + +TestResourceSet::~TestResourceSet() +{ +} + +void TestResourceSet::init() +{ + resourceSet = new ResourceSet("player"); +} + +void TestResourceSet::cleanup() +{ + delete resourceSet; +} + +void TestResourceSet::testIdentifier() +{ + ResourceSet otherSet("game"); + + bool identifiersAreUnique = (resourceSet->id() != otherSet.id()); + QVERIFY(identifiersAreUnique); + QVERIFY(resourceSet->id() == (quint32)resourceSet); + QVERIFY(otherSet.id() == (quint32)&otherSet); +} + +void TestResourceSet::testAddResource() +{ + Resource resource; + resource.setType(AudioPlaybackResource); + + resourceSet->addResource(resource); + + QSet resourcesInSet = resourceSet->resources(); + QVERIFY(resourcesInSet.contains(resource)); +} + +void TestResourceSet::testAddResources() +{ + QSet resources; + + resources << audioPlayback << videoPlayback; + + resourceSet->addResources(resources); + + QSet resourcesInSet = resourceSet->resources(); + QVERIFY(resourcesInSet == resources); +} + +void TestResourceSet::testSetResources() +{ + QSet resources, newResources; + + newResources << audioPlayback << videoPlayback; + resources << audioPlayback << videoPlayback << audioRecorder << videoRecorder; + resourceSet->setResources(resources); + QSet resourcesInSet = resourceSet->resources(); + + resourceSet->setResources(newResources); + + QSet resourcesInNewSet = resourceSet->resources(); + QVERIFY(resourcesInNewSet == newResources); +} + +void TestResourceSet::testContainsSingle() +{ + QSet resources; + + resources << audioPlayback << videoPlayback << audioRecorder; + resourceSet->setResources(resources); + QSet resourcesInSet = resourceSet->resources(); + resourceSet->setResources(resources); + + bool containsVideoPlayback = resourceSet->contains(videoPlayback); + QVERIFY(containsVideoPlayback); +} + +void TestResourceSet::testDoesNotContainSingle() +{ + QSet resources; + + resources << audioPlayback << videoPlayback; + resourceSet->setResources(resources); + QSet resourcesInSet = resourceSet->resources(); + resourceSet->setResources(resources); + + bool containsVideoRecorder = resourceSet->contains(videoRecorder); + QEXPECT_FAIL("", "This should fail since searched resource should NOT be in set", Continue); + QVERIFY(containsVideoRecorder); +} + + +void TestResourceSet::testContainsSet() +{ + QSet resources, subset; + + resources << audioPlayback << videoPlayback << audioRecorder << videoRecorder; + subset << audioPlayback << videoPlayback; + + resourceSet->setResources(resources); + QSet resourcesInSet = resourceSet->resources(); + resourceSet->setResources(resources); + + bool containsSubset = resourceSet->contains(subset); + QVERIFY(containsSubset); +} +QTEST_MAIN(TestResourceSet) diff --git a/tests/test-resource-set.h b/tests/test-resource-set.h new file mode 100644 index 0000000..fa80df1 --- /dev/null +++ b/tests/test-resource-set.h @@ -0,0 +1,40 @@ +#ifndef TEST_RESOURCE_SET_H +#define TEST_RESOURCE_SET_H + +#include +#include "resource-set.h" + +using namespace ResourcePolicy; + +class TestResourceSet: public QObject +{ + Q_OBJECT +private: + ResourceSet *resourceSet; + Resource audioPlayback; + Resource videoPlayback; + Resource videoRecorder; + Resource audioRecorder; + +public: + TestResourceSet(); + ~TestResourceSet(); + + +private slots: + + void init(); + void cleanup(); + + void testIdentifier(); + + void testAddResource(); + void testAddResources(); + void testSetResources(); + + void testContainsSingle(); + void testDoesNotContainSingle(); + void testContainsSet(); +}; + +#endif diff --git a/tests/test-resource-set.pro b/tests/test-resource-set.pro new file mode 100644 index 0000000..e9e24ee --- /dev/null +++ b/tests/test-resource-set.pro @@ -0,0 +1,21 @@ +BASE = .. +TEMPLATE = app +TARGET = test-resource-set +DESTDIR = build +DEPENDPATH += $${BASE}/include $${BASE}/src . +INCLUDEPATH += $${BASE}/src $${BASE}/include + +# Input +HEADERS += $${BASE}/include/resource.h $${BASE}/include/resource-set.h test-resource-set.h +SOURCES += $${BASE}/src/resource.cpp $${BASE}/src/resource-set.cpp test-resource-set.cpp + +OBJECTS_DIR = build +MOC_DIR = build + +CONFIG += qt qtestlib debug warn_on +QT -= gui + +# Install directives +INSTALLBASE = /usr +target.path = $$INSTALLBASE/share/libresourceqt/tests +INSTALLS = target diff --git a/tests/test-resource.cpp b/tests/test-resource.cpp index 95f1809..afccc16 100644 --- a/tests/test-resource.cpp +++ b/tests/test-resource.cpp @@ -1,4 +1,5 @@ #include "test-resource.h" +#include using namespace ResourcePolicy; @@ -60,6 +61,7 @@ void TestResource::testOptional() QFETCH(bool, optional); QFETCH(bool, expected); + resource->setType(AudioPlaybackResource); resource->setOptional(optional); bool result = resource->isOptional(); @@ -80,6 +82,7 @@ void TestResource::testShared() QFETCH(bool, optional); QFETCH(bool, expected); + resource->setType(AudioPlaybackResource); resource->setShared(optional); bool result = resource->isShared(); @@ -100,6 +103,7 @@ void TestResource::testIdentifier() QFETCH(quint32, identifier); QFETCH(quint32, expected); + resource->setType(AudioPlaybackResource); resource->setId(identifier); quint32 result = resource->id(); @@ -109,6 +113,7 @@ void TestResource::testIdentifier() void TestResource::testCopy() { Resource copy; + resource->setType(AudioPlaybackResource); resource->setOptional(); copy = *resource; @@ -121,6 +126,7 @@ void TestResource::testCopy() void TestResource::testCopyConstructor() { + resource->setType(AudioPlaybackResource); resource->setOptional(); Resource copy(*resource); @@ -133,6 +139,7 @@ void TestResource::testCopyConstructor() void TestResource::testEqualsOperator() { Resource copy; + resource->setType(AudioPlaybackResource); resource->setOptional(); copy = *resource; @@ -140,4 +147,95 @@ void TestResource::testEqualsOperator() QVERIFY(copy == *resource); } +void TestResource::testHashFunctionWithCopies() +{ + resource->setType(AudioPlaybackResource); + resource->setOptional(); + resource->setShared(); + Resource copy(*resource); + + uint originalHash = qHash(*resource); + uint copyHash = qHash(copy); + + QCOMPARE(originalHash, copyHash); +} + +void TestResource::testHashFunctionWithDifferentResources() +{ + resource->setType(AudioPlaybackResource); + resource->setOptional(); + resource->setShared(); + Resource copy(*resource); + copy.setType(VideoPlaybackResource); + + uint originalHash = qHash(*resource); + uint copyHash = qHash(copy); + + QEXPECT_FAIL("", "Expecting to fail since they are different resources", Continue); + QCOMPARE(originalHash, copyHash); +} + +void TestResource::testHashFunctionWithDifferentOptionality() +{ + resource->setType(AudioPlaybackResource); + resource->setOptional(); + resource->setShared(); + Resource copy(*resource); + copy.setOptional(false); + + uint originalHash = qHash(*resource); + uint copyHash = qHash(copy); + + QEXPECT_FAIL("", "Expecting to fail since one isOptional, the other isn't", Continue); + QCOMPARE(originalHash, copyHash); +} + +void TestResource::testHashFunctionWithDifferentSharedness() +{ + resource->setType(AudioPlaybackResource); + resource->setOptional(); + resource->setShared(); + Resource copy(*resource); + copy.setShared(false); + + uint originalHash = qHash(*resource); + uint copyHash = qHash(copy); + + QEXPECT_FAIL("", "Expecting to fail since one isShared , the other isn't", Continue); + QCOMPARE(originalHash, copyHash); +} + +void TestResource::testHashFunctionWithIdentical() +{ + resource->setType(AudioPlaybackResource); + resource->setOptional(); + resource->setShared(); + Resource copy; + copy.setOptional(); + copy.setShared(); + copy.setType(AudioPlaybackResource); + + uint originalHash = qHash(*resource); + uint copyHash = qHash(copy); + + QCOMPARE(originalHash, copyHash); +} + +void TestResource::testQSetOfResource() +{ + Resource a,b,c; + a.setType(AudioPlaybackResource); + b.setType(VideoPlaybackResource); + c.setType(AudioRecorderResource); + + QSet set; + set.insert(a); + set.insert(b); + set.insert(c); + + QVERIFY(set.contains(a)); + QVERIFY(set.contains(b)); + QVERIFY(set.contains(c)); +} + QTEST_MAIN(TestResource) diff --git a/tests/test-resource.h b/tests/test-resource.h index a5f617f..76ba5b4 100644 --- a/tests/test-resource.h +++ b/tests/test-resource.h @@ -19,7 +19,6 @@ public: TestResource(); ~TestResource(); - private slots: void init(); @@ -41,6 +40,14 @@ private slots: void testCopyConstructor(); void testEqualsOperator(); + + void testHashFunctionWithCopies(); + void testHashFunctionWithDifferentResources(); + void testHashFunctionWithDifferentOptionality(); + void testHashFunctionWithDifferentSharedness(); + void testHashFunctionWithIdentical(); + + void testQSetOfResource(); }; #endif -- cgit v1.2.3