From 9e2dc3cc2fadd80d24fe5837d612b4bbe13debe2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Thu, 19 Sep 2013 02:12:35 +0200 Subject: [PATCH] Shaders: test compilation of Phong shader. Currently fails for some combinations. --- src/Shaders/Test/CMakeLists.txt | 1 + src/Shaders/Test/PhongTest.cpp | 97 +++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 src/Shaders/Test/PhongTest.cpp diff --git a/src/Shaders/Test/CMakeLists.txt b/src/Shaders/Test/CMakeLists.txt index c083cc77a..5a5025c83 100644 --- a/src/Shaders/Test/CMakeLists.txt +++ b/src/Shaders/Test/CMakeLists.txt @@ -26,6 +26,7 @@ if(BUILD_GL_TESTS) corrade_add_test(ShadersDistanceFieldVectorTest DistanceFieldVectorTest.cpp LIBRARIES MagnumShaders ${GL_TEST_LIBRARIES}) corrade_add_test(ShadersFlatTest FlatTest.cpp LIBRARIES MagnumShaders ${GL_TEST_LIBRARIES}) corrade_add_test(ShadersMeshVisualizerTest MeshVisualizerTest.cpp LIBRARIES MagnumShaders ${GL_TEST_LIBRARIES}) + corrade_add_test(ShadersPhongTest PhongTest.cpp LIBRARIES MagnumShaders ${GL_TEST_LIBRARIES}) corrade_add_test(ShadersVectorTest VectorTest.cpp LIBRARIES MagnumShaders ${GL_TEST_LIBRARIES}) corrade_add_test(ShadersVertexColorTest VertexColorTest.cpp LIBRARIES MagnumShaders ${GL_TEST_LIBRARIES}) endif() diff --git a/src/Shaders/Test/PhongTest.cpp b/src/Shaders/Test/PhongTest.cpp new file mode 100644 index 000000000..7b426b79f --- /dev/null +++ b/src/Shaders/Test/PhongTest.cpp @@ -0,0 +1,97 @@ +/* + This file is part of Magnum. + + Copyright © 2010, 2011, 2012, 2013 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 "Shaders/Phong.h" +#include "Test/AbstractOpenGLTester.h" + +namespace Magnum { namespace Shaders { namespace Test { + +class PhongTest: public Magnum::Test::AbstractOpenGLTester { + public: + explicit PhongTest(); + + void compile(); + void compileAmbientTexture(); + void compileDiffuseTexture(); + void compileSpecularTexture(); + void compileAmbientDiffuseTexture(); + void compileAmbientSpecularTexture(); + void compileDiffuseSpecularTexture(); + void compileAmbientDiffuseSpecularTexture(); +}; + +PhongTest::PhongTest() { + addTests({&PhongTest::compile, + &PhongTest::compileAmbientTexture, + &PhongTest::compileDiffuseTexture, + &PhongTest::compileSpecularTexture, + &PhongTest::compileAmbientDiffuseTexture, + &PhongTest::compileAmbientSpecularTexture, + &PhongTest::compileDiffuseSpecularTexture, + &PhongTest::compileAmbientDiffuseSpecularTexture}); +} + +void PhongTest::compile() { + Shaders::Phong shader; + CORRADE_VERIFY(shader.validate().first); +} + +void PhongTest::compileAmbientTexture() { + Shaders::Phong shader(Shaders::Phong::Flag::AmbientTexture); + CORRADE_VERIFY(shader.validate().first); +} + +void PhongTest::compileDiffuseTexture() { + Shaders::Phong shader(Shaders::Phong::Flag::DiffuseTexture); + CORRADE_VERIFY(shader.validate().first); +} + +void PhongTest::compileSpecularTexture() { + Shaders::Phong shader(Shaders::Phong::Flag::SpecularTexture); + CORRADE_VERIFY(shader.validate().first); +} + +void PhongTest::compileAmbientDiffuseTexture() { + Shaders::Phong shader(Shaders::Phong::Flag::AmbientTexture|Shaders::Phong::Flag::DiffuseTexture); + CORRADE_VERIFY(shader.validate().first); +} + +void PhongTest::compileAmbientSpecularTexture() { + Shaders::Phong shader(Shaders::Phong::Flag::AmbientTexture|Shaders::Phong::Flag::SpecularTexture); + CORRADE_VERIFY(shader.validate().first); +} + +void PhongTest::compileDiffuseSpecularTexture() { + Shaders::Phong shader(Shaders::Phong::Flag::DiffuseTexture|Shaders::Phong::Flag::SpecularTexture); + CORRADE_VERIFY(shader.validate().first); +} + +void PhongTest::compileAmbientDiffuseSpecularTexture() { + Shaders::Phong shader(Shaders::Phong::Flag::AmbientTexture|Shaders::Phong::Flag::DiffuseTexture|Shaders::Phong::Flag::SpecularTexture); + CORRADE_VERIFY(shader.validate().first); +} + +}}} + +CORRADE_TEST_MAIN(Magnum::Shaders::Test::PhongTest)