From f482f4e2ebdff76d1818822fd98f7941787745d8 Mon Sep 17 00:00:00 2001 From: Wolf Bergenheim Date: Wed, 13 Jan 2010 13:14:25 +0200 Subject: Added tests for Resource::reserve() --- src/libplayback-wrapper.cpp | 5 +++++ src/libplayback-wrapper.h | 2 ++ src/resource-library.h | 1 + tests/mock-resource-library.cpp | 26 +++++++++++++++++---- tests/mock-resource-library.h | 10 +++++++-- tests/test-resource.cpp | 50 +++++++++++++++++++++++++++++++++++++++-- tests/test-resource.h | 5 +++++ 7 files changed, 91 insertions(+), 8 deletions(-) diff --git a/src/libplayback-wrapper.cpp b/src/libplayback-wrapper.cpp index 90b5f6a..ce3a43d 100644 --- a/src/libplayback-wrapper.cpp +++ b/src/libplayback-wrapper.cpp @@ -156,3 +156,8 @@ void LibPlaybackWrapper::hintReceived(const int allowedStates[]) } */ } + +bool LibPlaybackWrapper::reserve() +{ + return false; +} diff --git a/src/libplayback-wrapper.h b/src/libplayback-wrapper.h index 24d8976..9a473fe 100644 --- a/src/libplayback-wrapper.h +++ b/src/libplayback-wrapper.h @@ -20,6 +20,8 @@ public: bool initialize(); bool connectToServer(); + bool reserve(); + void stateChanged(enum pb_state_e newState); void hintReceived(const int allowedStates[]); }; diff --git a/src/resource-library.h b/src/resource-library.h index f68471d..9f9c303 100644 --- a/src/resource-library.h +++ b/src/resource-library.h @@ -7,6 +7,7 @@ public: virtual ~ResourceLibrary() {} virtual bool initialize() = 0; virtual bool connectToServer() = 0; + virtual bool reserve() = 0; }; #endif diff --git a/tests/mock-resource-library.cpp b/tests/mock-resource-library.cpp index 49c29e4..565e745 100644 --- a/tests/mock-resource-library.cpp +++ b/tests/mock-resource-library.cpp @@ -1,11 +1,14 @@ #include "mock-resource-library.h" -MockResourceLibrary::MockResourceLibrary(QObject *parent, +MockResourceLibrary::MockResourceLibrary(Resource *resource, bool makeInitializationFail, - bool makeConnectingToServerFail) - : QObject(parent), initializeFails(makeInitializationFail), - connectToServerFails(makeConnectingToServerFail) + bool makeConnectingToServerFail, + bool makeReserveFail) + : QObject(resource), initializeFails(makeInitializationFail), + connectToServerFails(makeConnectingToServerFail), + reserveFails(makeReserveFail) { + this->resource = resource; } MockResourceLibrary::~MockResourceLibrary() @@ -37,3 +40,18 @@ bool MockResourceLibrary::connectToServer() else return false; } + +bool MockResourceLibrary::reserve() +{ + if(!reserveFails) { + resource->handleStateChange(OwnedState); + } + else { + resource->handleStateChange(NotOwnedState); + } +} + +void MockResourceLibrary::makeReserveFail() +{ + reserveFails = true; +} diff --git a/tests/mock-resource-library.h b/tests/mock-resource-library.h index 6c743fe..1d3d17d 100644 --- a/tests/mock-resource-library.h +++ b/tests/mock-resource-library.h @@ -3,6 +3,7 @@ #include #include "resource-library.h" +#include "resource.h" class MockResourceLibrary: public QObject, public ResourceLibrary { @@ -10,14 +11,19 @@ class MockResourceLibrary: public QObject, public ResourceLibrary private: bool initializeFails; bool connectToServerFails; + Resource *resource; + bool reserveFails; public: - MockResourceLibrary(QObject *parent=0,bool makeInitializationFail=false, - bool makeConnectingToServerFail=false); + MockResourceLibrary(Resource *resource=0,bool makeInitializationFail=false, + bool makeConnectingToServerFail=false, bool makeReserveFail=false); virtual ~MockResourceLibrary(); void makeInitializeFail(); void makeServerConnectFail(); bool initialize(); bool connectToServer(); + + bool reserve(); + void makeReserveFail(); }; #endif diff --git a/tests/test-resource.cpp b/tests/test-resource.cpp index 49c43b0..5064df9 100644 --- a/tests/test-resource.cpp +++ b/tests/test-resource.cpp @@ -3,7 +3,7 @@ using namespace ResourceTypes; TestResource::TestResource() - : isReservable(false) + : isReservable(false), isReserved(false) { } @@ -14,13 +14,15 @@ TestResource::~TestResource() void TestResource::init() { resource = new Resource(MediaClass, AudioResource|VideoResource, this); - resourceLibrary = new MockResourceLibrary(resource, false, false); + resourceLibrary = new MockResourceLibrary(resource); QVERIFY(resource != NULL); QVERIFY(resource->applicationClass() == MediaClass); QVERIFY(resource->resources() == (AudioResource|VideoResource)); QVERIFY(resource->isReserved() == false); QVERIFY(resource->hasResource(AudioResource)); QVERIFY(resource->hasResource(VideoResource)); + isReservable =false; + isReserved = false; } void TestResource::testApplicationClass() @@ -110,4 +112,48 @@ void TestResource::handleReservable() isReservable = true; } +void TestResource::testReserve() +{ + resource->initialize(resourceLibrary); + QObject::connect(resource, SIGNAL(stateChanged(enum ResourceState)), + this, SLOT(handleStateChanged(enum ResourceState))); + resource->connectToServer(); + + bool reserveSucceeds = resource->reserve(); + + QVERIFY(resource->isReserved()); + QVERIFY(reserveSucceeds); + QVERIFY(isReserved); +} + +void TestResource::testReserveExpectFail() +{ + MockResourceLibrary *mockResourceLibrary = + static_cast(resourceLibrary); + + resource->initialize(resourceLibrary); + QObject::connect(resource, SIGNAL(stateChanged(enum ResourceState)), + this, SLOT(handleStateChanged(enum ResourceState))); + resource->connectToServer(); + + mockResourceLibrary->makeReserveFail(); + bool reserveSucceeds = resource->reserve(); + + QVERIFY(reserveSucceeds); + QEXPECT_FAIL("", "Expecting resourceLibrary->reserve() to fail", Continue); + QVERIFY(isReserved); +} + +void TestResource::handleStateChanged(enum ResourceState newState) +{ + switch(newState) { + case OwnedState: + isReserved = true; + break; + default: + isReserved = false; + break; + } +} + QTEST_MAIN(TestResource) diff --git a/tests/test-resource.h b/tests/test-resource.h index 3d5a062..a762a8a 100644 --- a/tests/test-resource.h +++ b/tests/test-resource.h @@ -13,12 +13,14 @@ private: Resource *resource; bool isReservable; + bool isReserved; public: TestResource(); ~TestResource(); public slots: void handleReservable(); + void handleStateChanged(enum ResourceState newState); private slots: void init(); @@ -33,6 +35,9 @@ private slots: void testResources(); void testReservable(); + + void testReserve(); + void testReserveExpectFail(); }; #endif -- cgit v1.2.3