Browse Source

Test output from AbstractShaderProgram::uniformLocation().

Fails.
pull/87/merge
Vladimír Vondruš 11 years ago
parent
commit
2ed432aeb1
  1. 29
      src/Magnum/Test/AbstractShaderProgramGLTest.cpp

29
src/Magnum/Test/AbstractShaderProgramGLTest.cpp

@ -23,6 +23,7 @@
DEALINGS IN THE SOFTWARE. DEALINGS IN THE SOFTWARE.
*/ */
#include <sstream>
#include <Corrade/Utility/Resource.h> #include <Corrade/Utility/Resource.h>
#include "Magnum/AbstractShaderProgram.h" #include "Magnum/AbstractShaderProgram.h"
@ -50,6 +51,7 @@ struct AbstractShaderProgramGLTest: AbstractOpenGLTester {
void createMultipleOutputsIndexed(); void createMultipleOutputsIndexed();
#endif #endif
void uniformLocationOptimizedOut();
void uniform(); void uniform();
void uniformVector(); void uniformVector();
void uniformMatrix(); void uniformMatrix();
@ -69,6 +71,7 @@ AbstractShaderProgramGLTest::AbstractShaderProgramGLTest() {
&AbstractShaderProgramGLTest::createMultipleOutputsIndexed, &AbstractShaderProgramGLTest::createMultipleOutputsIndexed,
#endif #endif
&AbstractShaderProgramGLTest::uniformLocationOptimizedOut,
&AbstractShaderProgramGLTest::uniform, &AbstractShaderProgramGLTest::uniform,
&AbstractShaderProgramGLTest::uniformVector, &AbstractShaderProgramGLTest::uniformVector,
&AbstractShaderProgramGLTest::uniformMatrix, &AbstractShaderProgramGLTest::uniformMatrix,
@ -266,6 +269,32 @@ void AbstractShaderProgramGLTest::createMultipleOutputsIndexed() {
} }
#endif #endif
void AbstractShaderProgramGLTest::uniformLocationOptimizedOut() {
MyPublicShader program;
#ifndef MAGNUM_TARGET_GLES
Shader vert(Version::GL210, Shader::Type::Vertex);
Shader frag(Version::GL210, Shader::Type::Fragment);
#else
Shader vert(Version::GLES200, Shader::Type::Vertex);
Shader frag(Version::GLES200, Shader::Type::Fragment);
#endif
vert.addSource("void main() { gl_Position = vec4(0.0); }");
frag.addSource("void main() { gl_FragColor = vec4(1.0); }");
CORRADE_VERIFY(Shader::compile({vert, frag}));
program.attachShaders({vert, frag});
CORRADE_VERIFY(program.link());
std::ostringstream out;
Warning::setOutput(&out);
program.uniformLocation("nonexistent");
program.uniformLocation(std::string{"another"});
CORRADE_COMPARE(out.str(),
"AbstractShaderProgram: location of uniform 'nonexistent' cannot be retrieved!\n"
"AbstractShaderProgram: location of uniform 'another' cannot be retrieved!\n");
}
namespace { namespace {
struct MyShader: AbstractShaderProgram { struct MyShader: AbstractShaderProgram {
explicit MyShader(); explicit MyShader();

Loading…
Cancel
Save