Browse Source

Debug output operator for ResourceState enum.

pull/7/head
Vladimír Vondruš 14 years ago
parent
commit
72145e1339
  1. 1
      src/CMakeLists.txt
  2. 39
      src/Resource.cpp
  3. 5
      src/Resource.h
  4. 2
      src/Test/CMakeLists.txt
  5. 12
      src/Test/ResourceManagerTest.cpp

1
src/CMakeLists.txt

@ -24,6 +24,7 @@ set(Magnum_SRCS
Profiler.cpp
Query.cpp
Renderbuffer.cpp
Resource.cpp
Shader.cpp
SizeTraits.cpp
Timeline.cpp

39
src/Resource.cpp

@ -0,0 +1,39 @@
/*
Copyright © 2010, 2011, 2012 Vladimír Vondruš <mosra@centrum.cz>
This file is part of Magnum.
Magnum is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License version 3
only, as published by the Free Software Foundation.
Magnum is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License version 3 for more details.
*/
#include "Resource.h"
namespace Magnum {
#ifndef DOXYGEN_GENERATING_OUTPUT
Debug MAGNUM_EXPORT operator<<(Debug debug, ResourceState value) {
switch(value) {
#define _c(value) case ResourceState::value: return debug << "ResourceState::" #value;
_c(NotLoaded)
_c(NotLoadedFallback)
_c(Loading)
_c(LoadingFallback)
_c(NotFound)
_c(NotFoundFallback)
_c(Mutable)
_c(Final)
#undef _c
}
return debug << "ResourceState::(invalid)";
}
#endif
}

5
src/Resource.h

@ -23,6 +23,8 @@
#include "Magnum.h"
#include "magnumVisibility.h"
namespace Magnum {
/** @relates Resource
@ -44,6 +46,9 @@ enum class ResourceState: std::uint8_t {
Final
};
/** @debugoperator{Magnum::Resource} */
Debug MAGNUM_EXPORT operator<<(Debug debug, ResourceState value);
/**
@brief Key for accessing resource

2
src/Test/CMakeLists.txt

@ -1,5 +1,5 @@
corrade_add_test2(ColorTest ColorTest.cpp LIBRARIES MagnumMathTestLib)
corrade_add_test2(ResourceManagerTest ResourceManagerTest.cpp)
corrade_add_test2(ResourceManagerTest ResourceManagerTest.cpp LIBRARIES MagnumTestLib)
corrade_add_test2(SwizzleTest SwizzleTest.cpp LIBRARIES MagnumMathTestLib)
set_target_properties(ResourceManagerTest PROPERTIES COMPILE_FLAGS -DCORRADE_GRACEFUL_ASSERT)

12
src/Test/ResourceManagerTest.cpp

@ -51,14 +51,14 @@ void ResourceManagerTest::state() {
ResourceKey questionKey("the-question");
rm.set(questionKey, new int32_t(10), ResourceDataState::Mutable, ResourcePolicy::Resident);
Resource<int32_t> theQuestion = rm.get<int32_t>(questionKey);
CORRADE_VERIFY(theQuestion.state() == ResourceState::Mutable);
CORRADE_COMPARE(theQuestion.state(), ResourceState::Mutable);
CORRADE_COMPARE(*theQuestion, 10);
/* Check that hash function is working properly */
ResourceKey answerKey("the-answer");
rm.set(answerKey, new int32_t(42), ResourceDataState::Final, ResourcePolicy::Resident);
Resource<int32_t> theAnswer = rm.get<int32_t>(answerKey);
CORRADE_VERIFY(theAnswer.state() == ResourceState::Final);
CORRADE_COMPARE(theAnswer.state(), ResourceState::Final);
CORRADE_COMPARE(*theAnswer, 42);
CORRADE_COMPARE(rm.count<int32_t>(), 2);
@ -72,7 +72,7 @@ void ResourceManagerTest::state() {
/* Check non-final resource changes */
rm.set(questionKey, new int32_t(20), ResourceDataState::Final, ResourcePolicy::Resident);
CORRADE_VERIFY(theQuestion.state() == ResourceState::Final);
CORRADE_COMPARE(theQuestion.state(), ResourceState::Final);
CORRADE_COMPARE(*theQuestion, 20);
}
@ -99,14 +99,14 @@ void ResourceManagerTest::referenceCountedPolicy() {
rm.set(dataRefCountKey, new Data(), ResourceDataState::Final, ResourcePolicy::ReferenceCounted);
CORRADE_COMPARE(rm.count<Data>(), 0);
Resource<Data> data = rm.get<Data>(dataRefCountKey);
CORRADE_VERIFY(data.state() == ResourceState::NotLoaded);
CORRADE_COMPARE(data.state(), ResourceState::NotLoaded);
CORRADE_COMPARE(Data::count, 0);
} {
Resource<Data> data = rm.get<Data>(dataRefCountKey);
CORRADE_COMPARE(rm.count<Data>(), 1);
CORRADE_VERIFY(data.state() == ResourceState::NotLoaded);
CORRADE_COMPARE(data.state(), ResourceState::NotLoaded);
rm.set(dataRefCountKey, new Data(), ResourceDataState::Final, ResourcePolicy::ReferenceCounted);
CORRADE_VERIFY(data.state() == ResourceState::Final);
CORRADE_COMPARE(data.state(), ResourceState::Final);
CORRADE_COMPARE(Data::count, 1);
}

Loading…
Cancel
Save