aboutsummaryrefslogtreecommitdiff
path: root/src/amberscript/parser_run_test.cc
diff options
context:
space:
mode:
authorasuonpaa <34128694+asuonpaa@users.noreply.github.com>2020-03-19 14:50:24 +0200
committerGitHub <noreply@github.com>2020-03-19 08:50:24 -0400
commitf4ea9d7ffdd88c0ea0fff58470ec521353e5e41c (patch)
treeb5b9589db3ae2867f670af39c11f5a08b064e1c4 /src/amberscript/parser_run_test.cc
parentc360eb6162d55cc80b33d48c6e03313fb3f5b072 (diff)
downloadamber-f4ea9d7ffdd88c0ea0fff58470ec521353e5e41c.tar.gz
Parser: Check index buffer size for indexed draws (#822)
Fixes #821
Diffstat (limited to 'src/amberscript/parser_run_test.cc')
-rw-r--r--src/amberscript/parser_run_test.cc58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/amberscript/parser_run_test.cc b/src/amberscript/parser_run_test.cc
index 4911414..4d2d69c 100644
--- a/src/amberscript/parser_run_test.cc
+++ b/src/amberscript/parser_run_test.cc
@@ -1404,6 +1404,64 @@ RUN my_pipeline DRAW_ARRAY AS TRIANGLE_LIST START_IDX 1 COUNT 9)";
r.Error());
}
+TEST_F(AmberScriptParserTest, RunDrawArraysIndexedStartIdxTooLarge) {
+ std::string in = R"(
+SHADER vertex my_shader PASSTHROUGH
+SHADER fragment my_fragment GLSL
+# GLSL Shader
+END
+BUFFER vtex_buf DATA_TYPE vec3<float> DATA
+1 2 3
+END
+BUFFER indices DATA_TYPE int32 DATA
+0 1 2 1 2 0
+END
+
+PIPELINE graphics my_pipeline
+ ATTACH my_shader
+ ATTACH my_fragment
+ VERTEX_DATA vtex_buf LOCATION 0
+ INDEX_DATA indices
+END
+
+RUN my_pipeline DRAW_ARRAY AS TRIANGLE_LIST INDEXED START_IDX 6 COUNT 1)";
+
+ Parser parser;
+ Result r = parser.Parse(in);
+ ASSERT_FALSE(r.IsSuccess());
+ EXPECT_EQ("20: START_IDX plus COUNT exceeds index buffer data size",
+ r.Error());
+}
+
+TEST_F(AmberScriptParserTest, RunDrawArraysIndexedCountTooLarge) {
+ std::string in = R"(
+SHADER vertex my_shader PASSTHROUGH
+SHADER fragment my_fragment GLSL
+# GLSL Shader
+END
+BUFFER vtex_buf DATA_TYPE vec3<float> DATA
+1 2 3
+END
+BUFFER indices DATA_TYPE int32 DATA
+0 1 2 1 2 0
+END
+
+PIPELINE graphics my_pipeline
+ ATTACH my_shader
+ ATTACH my_fragment
+ VERTEX_DATA vtex_buf LOCATION 0
+ INDEX_DATA indices
+END
+
+RUN my_pipeline DRAW_ARRAY AS TRIANGLE_LIST INDEXED START_IDX 1 COUNT 6)";
+
+ Parser parser;
+ Result r = parser.Parse(in);
+ ASSERT_FALSE(r.IsSuccess());
+ EXPECT_EQ("20: START_IDX plus COUNT exceeds index buffer data size",
+ r.Error());
+}
+
TEST_F(AmberScriptParserTest, RunDrawArraysInvalidCountValueFormat) {
std::string in = R"(
SHADER vertex my_shader PASSTHROUGH