Index: gpu/command_buffer/service/shader_translator_unittest.cc |
diff --git a/gpu/command_buffer/service/shader_translator_unittest.cc b/gpu/command_buffer/service/shader_translator_unittest.cc |
index 6b3c6828c99f8d9400f82fbb2c9f66462fb35c1a..f489626b59988c351f8fefe1f5f92f212c7e996c 100644 |
--- a/gpu/command_buffer/service/shader_translator_unittest.cc |
+++ b/gpu/command_buffer/service/shader_translator_unittest.cc |
@@ -36,17 +36,6 @@ class ShaderTranslatorTest : public testing::Test { |
GL_FRAGMENT_SHADER, SH_GLES2_SPEC, &resources, |
ShaderTranslatorInterface::kGlsl, |
static_cast<ShCompileOptions>(0))); |
- // Post-init the results must be empty. |
- // Vertex translator results. |
- EXPECT_TRUE(vertex_translator_->translated_shader() == NULL); |
- EXPECT_TRUE(vertex_translator_->info_log() == NULL); |
- EXPECT_TRUE(vertex_translator_->attrib_map().empty()); |
- EXPECT_TRUE(vertex_translator_->uniform_map().empty()); |
- // Fragment translator results. |
- EXPECT_TRUE(fragment_translator_->translated_shader() == NULL); |
- EXPECT_TRUE(fragment_translator_->info_log() == NULL); |
- EXPECT_TRUE(fragment_translator_->attrib_map().empty()); |
- EXPECT_TRUE(fragment_translator_->uniform_map().empty()); |
} |
virtual void TearDown() { |
vertex_translator_ = NULL; |
@@ -64,15 +53,26 @@ TEST_F(ShaderTranslatorTest, ValidVertexShader) { |
"}"; |
// A valid shader should be successfully translated. |
- EXPECT_TRUE(vertex_translator_->Translate(shader)); |
+ std::string info_log, translated_source; |
+ ShaderTranslatorInterface::VariableMap attrib_map, uniform_map, varying_map; |
+ ShaderTranslatorInterface::NameMap name_map; |
+ EXPECT_TRUE(vertex_translator_->Translate(shader, |
+ &info_log, |
+ &translated_source, |
+ &attrib_map, |
+ &uniform_map, |
+ &varying_map, |
+ &name_map)); |
// Info log must be NULL. |
- EXPECT_TRUE(vertex_translator_->info_log() == NULL); |
+ EXPECT_TRUE(info_log.empty()); |
// Translated shader must be valid and non-empty. |
- ASSERT_TRUE(vertex_translator_->translated_shader() != NULL); |
- EXPECT_GT(strlen(vertex_translator_->translated_shader()), 0u); |
- // There should be no attributes or uniforms. |
- EXPECT_TRUE(vertex_translator_->attrib_map().empty()); |
- EXPECT_TRUE(vertex_translator_->uniform_map().empty()); |
+ ASSERT_FALSE(translated_source.empty()); |
+ // There should be no attributes, uniforms, varyings. |
+ EXPECT_TRUE(attrib_map.empty()); |
+ EXPECT_TRUE(uniform_map.empty()); |
+ EXPECT_TRUE(varying_map.empty()); |
+ // There should be no name mapping. |
+ EXPECT_TRUE(name_map.empty()); |
} |
TEST_F(ShaderTranslatorTest, InvalidVertexShader) { |
@@ -83,21 +83,37 @@ TEST_F(ShaderTranslatorTest, InvalidVertexShader) { |
"}"; |
// An invalid shader should fail. |
- EXPECT_FALSE(vertex_translator_->Translate(bad_shader)); |
+ std::string info_log, translated_source; |
+ ShaderTranslatorInterface::VariableMap attrib_map, uniform_map, varying_map; |
+ ShaderTranslatorInterface::NameMap name_map; |
+ EXPECT_FALSE(vertex_translator_->Translate(bad_shader, |
+ &info_log, |
+ &translated_source, |
+ &attrib_map, |
+ &uniform_map, |
+ &varying_map, |
+ &name_map)); |
// Info log must be valid and non-empty. |
- ASSERT_TRUE(vertex_translator_->info_log() != NULL); |
- EXPECT_GT(strlen(vertex_translator_->info_log()), 0u); |
+ ASSERT_FALSE(info_log.empty()); |
// Translated shader must be NULL. |
- EXPECT_TRUE(vertex_translator_->translated_shader() == NULL); |
- // There should be no attributes or uniforms. |
- EXPECT_TRUE(vertex_translator_->attrib_map().empty()); |
- EXPECT_TRUE(vertex_translator_->uniform_map().empty()); |
+ EXPECT_TRUE(translated_source.empty()); |
+ // There should be no attributes, uniforms, varyings, or name mapping. |
+ EXPECT_TRUE(attrib_map.empty()); |
+ EXPECT_TRUE(uniform_map.empty()); |
+ EXPECT_TRUE(varying_map.empty()); |
+ EXPECT_TRUE(name_map.empty()); |
// Try a good shader after bad. |
- EXPECT_TRUE(vertex_translator_->Translate(good_shader)); |
- EXPECT_TRUE(vertex_translator_->info_log() == NULL); |
- ASSERT_TRUE(vertex_translator_->translated_shader() != NULL); |
- EXPECT_GT(strlen(vertex_translator_->translated_shader()), 0u); |
+ info_log.clear(); |
+ EXPECT_TRUE(vertex_translator_->Translate(good_shader, |
+ &info_log, |
+ &translated_source, |
+ &attrib_map, |
+ &uniform_map, |
+ &varying_map, |
+ &name_map)); |
+ EXPECT_TRUE(info_log.empty()); |
+ EXPECT_FALSE(translated_source.empty()); |
} |
TEST_F(ShaderTranslatorTest, ValidFragmentShader) { |
@@ -107,30 +123,50 @@ TEST_F(ShaderTranslatorTest, ValidFragmentShader) { |
"}"; |
// A valid shader should be successfully translated. |
- EXPECT_TRUE(fragment_translator_->Translate(shader)); |
+ std::string info_log, translated_source; |
+ ShaderTranslatorInterface::VariableMap attrib_map, uniform_map, varying_map; |
+ ShaderTranslatorInterface::NameMap name_map; |
+ EXPECT_TRUE(fragment_translator_->Translate(shader, |
+ &info_log, |
+ &translated_source, |
+ &attrib_map, |
+ &uniform_map, |
+ &varying_map, |
+ &name_map)); |
// Info log must be NULL. |
- EXPECT_TRUE(fragment_translator_->info_log() == NULL); |
+ EXPECT_TRUE(info_log.empty()); |
// Translated shader must be valid and non-empty. |
- ASSERT_TRUE(fragment_translator_->translated_shader() != NULL); |
- EXPECT_GT(strlen(fragment_translator_->translated_shader()), 0u); |
- // There should be no attributes or uniforms. |
- EXPECT_TRUE(fragment_translator_->attrib_map().empty()); |
- EXPECT_TRUE(fragment_translator_->uniform_map().empty()); |
+ ASSERT_FALSE(translated_source.empty()); |
+ // There should be no attributes, uniforms, varyings, or name mapping. |
+ EXPECT_TRUE(attrib_map.empty()); |
+ EXPECT_TRUE(uniform_map.empty()); |
+ EXPECT_TRUE(varying_map.empty()); |
+ EXPECT_TRUE(name_map.empty()); |
} |
TEST_F(ShaderTranslatorTest, InvalidFragmentShader) { |
const char* shader = "foo-bar"; |
+ std::string info_log, translated_source; |
+ ShaderTranslatorInterface::VariableMap attrib_map, uniform_map, varying_map; |
+ ShaderTranslatorInterface::NameMap name_map; |
// An invalid shader should fail. |
- EXPECT_FALSE(fragment_translator_->Translate(shader)); |
+ EXPECT_FALSE(fragment_translator_->Translate(shader, |
+ &info_log, |
+ &translated_source, |
+ &attrib_map, |
+ &uniform_map, |
+ &varying_map, |
+ &name_map)); |
// Info log must be valid and non-empty. |
- ASSERT_TRUE(fragment_translator_->info_log() != NULL); |
- EXPECT_GT(strlen(fragment_translator_->info_log()), 0u); |
+ EXPECT_FALSE(info_log.empty()); |
// Translated shader must be NULL. |
- EXPECT_TRUE(fragment_translator_->translated_shader() == NULL); |
+ EXPECT_TRUE(translated_source.empty()); |
// There should be no attributes or uniforms. |
- EXPECT_TRUE(fragment_translator_->attrib_map().empty()); |
- EXPECT_TRUE(fragment_translator_->uniform_map().empty()); |
+ EXPECT_TRUE(attrib_map.empty()); |
+ EXPECT_TRUE(uniform_map.empty()); |
+ EXPECT_TRUE(varying_map.empty()); |
+ EXPECT_TRUE(name_map.empty()); |
} |
TEST_F(ShaderTranslatorTest, GetAttributes) { |
@@ -140,18 +176,24 @@ TEST_F(ShaderTranslatorTest, GetAttributes) { |
" gl_Position = vPosition;\n" |
"}"; |
- EXPECT_TRUE(vertex_translator_->Translate(shader)); |
+ std::string info_log, translated_source; |
+ ShaderTranslatorInterface::VariableMap attrib_map, uniform_map, varying_map; |
+ ShaderTranslatorInterface::NameMap name_map; |
+ EXPECT_TRUE(vertex_translator_->Translate(shader, |
+ &info_log, |
+ &translated_source, |
+ &attrib_map, |
+ &uniform_map, |
+ &varying_map, |
+ &name_map)); |
// Info log must be NULL. |
- EXPECT_TRUE(vertex_translator_->info_log() == NULL); |
+ EXPECT_TRUE(info_log.empty()); |
// Translated shader must be valid and non-empty. |
- ASSERT_TRUE(vertex_translator_->translated_shader() != NULL); |
- EXPECT_GT(strlen(vertex_translator_->translated_shader()), 0u); |
+ EXPECT_FALSE(translated_source.empty()); |
// There should be no uniforms. |
- EXPECT_TRUE(vertex_translator_->uniform_map().empty()); |
+ EXPECT_TRUE(uniform_map.empty()); |
// There should be one attribute with following characteristics: |
// name:vPosition type:GL_FLOAT_VEC4 size:1. |
- const ShaderTranslator::VariableMap& attrib_map = |
- vertex_translator_->attrib_map(); |
EXPECT_EQ(1u, attrib_map.size()); |
ShaderTranslator::VariableMap::const_iterator iter = |
attrib_map.find("vPosition"); |
@@ -175,19 +217,25 @@ TEST_F(ShaderTranslatorTest, GetUniforms) { |
" gl_FragColor = bar[0].foo.color[0] + bar[1].foo.color[0];\n" |
"}"; |
- EXPECT_TRUE(fragment_translator_->Translate(shader)); |
+ std::string info_log, translated_source; |
+ ShaderTranslatorInterface::VariableMap attrib_map, uniform_map, varying_map; |
+ ShaderTranslatorInterface::NameMap name_map; |
+ EXPECT_TRUE(fragment_translator_->Translate(shader, |
+ &info_log, |
+ &translated_source, |
+ &attrib_map, |
+ &uniform_map, |
+ &varying_map, |
+ &name_map)); |
// Info log must be NULL. |
- EXPECT_TRUE(fragment_translator_->info_log() == NULL); |
+ EXPECT_TRUE(info_log.empty()); |
// Translated shader must be valid and non-empty. |
- ASSERT_TRUE(fragment_translator_->translated_shader() != NULL); |
- EXPECT_GT(strlen(fragment_translator_->translated_shader()), 0u); |
+ EXPECT_FALSE(translated_source.empty()); |
// There should be no attributes. |
- EXPECT_TRUE(fragment_translator_->attrib_map().empty()); |
+ EXPECT_TRUE(attrib_map.empty()); |
// There should be two uniforms with following characteristics: |
// 1. name:bar[0].foo.color[0] type:GL_FLOAT_VEC4 size:1 |
// 2. name:bar[1].foo.color[0] type:GL_FLOAT_VEC4 size:1 |
- const ShaderTranslator::VariableMap& uniform_map = |
- fragment_translator_->uniform_map(); |
EXPECT_EQ(2u, uniform_map.size()); |
// First uniform. |
ShaderTranslator::VariableMap::const_iterator iter = |
@@ -214,12 +262,21 @@ TEST_F(ShaderTranslatorTest, BuiltInFunctionEmulation) { |
" gl_Position = vec4(dot(1.0, 1.0), 1.0, 1.0, 1.0);\n" |
"}"; |
- EXPECT_TRUE(vertex_translator_->Translate(shader)); |
+ std::string info_log, translated_source; |
+ ShaderTranslatorInterface::VariableMap attrib_map, uniform_map, varying_map; |
+ ShaderTranslatorInterface::NameMap name_map; |
+ EXPECT_TRUE(vertex_translator_->Translate(shader, |
+ &info_log, |
+ &translated_source, |
+ &attrib_map, |
+ &uniform_map, |
+ &varying_map, |
+ &name_map)); |
// Info log must be NULL. |
- EXPECT_TRUE(vertex_translator_->info_log() == NULL); |
+ EXPECT_TRUE(info_log.empty()); |
// Translated shader must be valid and non-empty. |
- ASSERT_TRUE(vertex_translator_->translated_shader() != NULL); |
- EXPECT_TRUE(strstr(vertex_translator_->translated_shader(), |
+ ASSERT_FALSE(translated_source.empty()); |
+ EXPECT_TRUE(strstr(translated_source.c_str(), |
"webgl_dot_emu") != NULL); |
} |
#endif |