diff --git a/src/Magnum/Context.cpp b/src/Magnum/Context.cpp index 66b4d90fe..9eaa7c40a 100644 --- a/src/Magnum/Context.cpp +++ b/src/Magnum/Context.cpp @@ -514,4 +514,14 @@ Version Context::supportedVersion(std::initializer_list versions) const #endif } +Debug operator<<(Debug debug, const Context::Flag value) { + switch(value) { + #define _c(value) case Context::Flag::value: return debug << "Context::Flag::" #value; + _c(Debug) + _c(RobustAccess) + } + + return debug << "Context::Flag::(invalid)"; +} + } diff --git a/src/Magnum/Context.h b/src/Magnum/Context.h index b471ec9b9..cf44a5e6a 100644 --- a/src/Magnum/Context.h +++ b/src/Magnum/Context.h @@ -403,6 +403,9 @@ class MAGNUM_EXPORT Context { Implementation::State* _state; }; +/** @debugoperator{Magnum::Context} */ +MAGNUM_EXPORT Debug operator<<(Debug debug, Context::Flag value); + /** @hideinitializer @brief Assert that given OpenGL version is supported @param version Version diff --git a/src/Magnum/Test/CMakeLists.txt b/src/Magnum/Test/CMakeLists.txt index 76f3eafa3..eb8f51ff1 100644 --- a/src/Magnum/Test/CMakeLists.txt +++ b/src/Magnum/Test/CMakeLists.txt @@ -27,6 +27,7 @@ corrade_add_test(AbstractImageTest AbstractImageTest.cpp LIBRARIES Magnum) corrade_add_test(AbstractShaderProgramTest AbstractShaderProgramTest.cpp LIBRARIES Magnum) corrade_add_test(ArrayTest ArrayTest.cpp) corrade_add_test(ColorTest ColorTest.cpp LIBRARIES MagnumMathTestLib) +corrade_add_test(ContextTest ContextTest.cpp LIBRARIES Magnum) corrade_add_test(DebugMessageTest DebugMessageTest.cpp LIBRARIES Magnum) corrade_add_test(DefaultFramebufferTest DefaultFramebufferTest.cpp LIBRARIES Magnum) corrade_add_test(FramebufferTest FramebufferTest.cpp LIBRARIES Magnum) diff --git a/src/Magnum/Test/ContextTest.cpp b/src/Magnum/Test/ContextTest.cpp new file mode 100644 index 000000000..cb1b76327 --- /dev/null +++ b/src/Magnum/Test/ContextTest.cpp @@ -0,0 +1,52 @@ +/* + This file is part of Magnum. + + Copyright © 2010, 2011, 2012, 2013, 2014 + Vladimír Vondruš + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +*/ + +#include +#include + +#include "Magnum/Context.h" + +namespace Magnum { namespace Test { + +class ContextTest: public TestSuite::Tester { + public: + explicit ContextTest(); + + void debugFlag(); +}; + +ContextTest::ContextTest() { + addTests({&ContextTest::debugFlag}); +} + +void ContextTest::debugFlag() { + std::ostringstream out; + Debug(&out) << Context::Flag::Debug; + CORRADE_COMPARE(out.str(), "Context::Flag::Debug\n"); +} + +}} + +CORRADE_TEST_MAIN(Magnum::Test::ContextTest)