Browse Source

Shaders: simplify Flat shader test.

pull/268/head
Vladimír Vondruš 8 years ago
parent
commit
412ee9a04b
  1. 96
      src/Magnum/Shaders/Test/FlatGLTest.cpp

96
src/Magnum/Shaders/Test/FlatGLTest.cpp

@ -23,6 +23,8 @@
DEALINGS IN THE SOFTWARE. DEALINGS IN THE SOFTWARE.
*/ */
#include <Corrade/Utility/Format.h>
#include "Magnum/GL/OpenGLTester.h" #include "Magnum/GL/OpenGLTester.h"
#include "Magnum/Shaders/Flat.h" #include "Magnum/Shaders/Flat.h"
@ -31,60 +33,41 @@ namespace Magnum { namespace Shaders { namespace Test {
struct FlatGLTest: GL::OpenGLTester { struct FlatGLTest: GL::OpenGLTester {
explicit FlatGLTest(); explicit FlatGLTest();
void construct2D(); template<UnsignedInt dimensions> void construct();
void construct3D();
void construct2DTextured();
void construct3DTextured();
void constructMove2D(); template<UnsignedInt dimensions> void constructMove();
void constructMove3D();
}; };
FlatGLTest::FlatGLTest() { namespace {
addTests({&FlatGLTest::construct2D,
&FlatGLTest::construct3D,
&FlatGLTest::construct2DTextured,
&FlatGLTest::construct3DTextured,
&FlatGLTest::constructMove2D, constexpr struct {
&FlatGLTest::constructMove3D}); const char* name;
} Flat2D::Flags flags;
} ConstructData[]{
{"", {}},
{"textured", Flat2D::Flag::Textured}
};
void FlatGLTest::construct2D() {
Flat2D shader;
{
#ifdef CORRADE_TARGET_APPLE
CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly.");
#endif
CORRADE_VERIFY(shader.id());
CORRADE_VERIFY(shader.validate().first);
}
} }
void FlatGLTest::construct3D() { FlatGLTest::FlatGLTest() {
Flat3D shader; addInstancedTests<FlatGLTest>({
{ &FlatGLTest::construct<2>,
#ifdef CORRADE_TARGET_APPLE &FlatGLTest::construct<3>},
CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); Containers::arraySize(ConstructData));
#endif
CORRADE_VERIFY(shader.id()); addTests<FlatGLTest>({
CORRADE_VERIFY(shader.validate().first); &FlatGLTest::constructMove<2>,
} &FlatGLTest::constructMove<3>});
} }
void FlatGLTest::construct2DTextured() { template<UnsignedInt dimensions> void FlatGLTest::construct() {
Flat2D shader(Flat2D::Flag::Textured); setTestCaseName(Utility::formatString("construct<{}>", dimensions));
{
#ifdef CORRADE_TARGET_APPLE auto&& data = ConstructData[testCaseInstanceId()];
CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); setTestCaseDescription(data.name);
#endif
CORRADE_VERIFY(shader.id());
CORRADE_VERIFY(shader.validate().first);
}
}
void FlatGLTest::construct3DTextured() { Flat<dimensions> shader{data.flags};
Flat3D shader(Flat3D::Flag::Textured);
{ {
#ifdef CORRADE_TARGET_APPLE #ifdef CORRADE_TARGET_APPLE
CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly."); CORRADE_EXPECT_FAIL("macOS drivers need insane amount of state to validate properly.");
@ -94,35 +77,20 @@ void FlatGLTest::construct3DTextured() {
} }
} }
void FlatGLTest::constructMove2D() { template<UnsignedInt dimensions> void FlatGLTest::constructMove() {
Flat2D a; setTestCaseName(Utility::formatString("constructMove<{}>", dimensions));
const GLuint id = a.id();
CORRADE_VERIFY(id);
MAGNUM_VERIFY_NO_GL_ERROR();
Flat2D b{std::move(a)};
CORRADE_COMPARE(b.id(), id);
CORRADE_VERIFY(!a.id());
Flat2D c{NoCreate};
c = std::move(b);
CORRADE_COMPARE(c.id(), id);
CORRADE_VERIFY(!b.id());
}
void FlatGLTest::constructMove3D() { Flat<dimensions> a;
Flat3D a;
const GLuint id = a.id(); const GLuint id = a.id();
CORRADE_VERIFY(id); CORRADE_VERIFY(id);
MAGNUM_VERIFY_NO_GL_ERROR(); MAGNUM_VERIFY_NO_GL_ERROR();
Flat3D b{std::move(a)}; Flat<dimensions> b{std::move(a)};
CORRADE_COMPARE(b.id(), id); CORRADE_COMPARE(b.id(), id);
CORRADE_VERIFY(!a.id()); CORRADE_VERIFY(!a.id());
Flat3D c{NoCreate}; Flat<dimensions> c{NoCreate};
c = std::move(b); c = std::move(b);
CORRADE_COMPARE(c.id(), id); CORRADE_COMPARE(c.id(), id);
CORRADE_VERIFY(!b.id()); CORRADE_VERIFY(!b.id());

Loading…
Cancel
Save