aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/SkSLErrorTest.cpp
diff options
context:
space:
mode:
authorGravatar Ethan Nicholas <ethannicholas@google.com>2017-05-10 15:06:17 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-05-10 19:31:34 +0000
commit5ac13c23628c6ee8c3f6056f38527706b403e502 (patch)
treec8a96588eed9009037bd368bb155a0f990cd4cc3 /tests/SkSLErrorTest.cpp
parent37c5a96bbdeac2000c8b31d40f4786b31c39f2dd (diff)
sksl support for static ifs & switches
Bug: skia: Change-Id: Ic9e01a3a18efddb19bab26e92bfb473cad294fc1 Reviewed-on: https://skia-review.googlesource.com/16144 Commit-Queue: Ethan Nicholas <ethannicholas@google.com> Reviewed-by: Ben Wagner <benjaminwagner@google.com>
Diffstat (limited to 'tests/SkSLErrorTest.cpp')
-rw-r--r--tests/SkSLErrorTest.cpp57
1 files changed, 40 insertions, 17 deletions
diff --git a/tests/SkSLErrorTest.cpp b/tests/SkSLErrorTest.cpp
index d443b1844f..453a8f84c9 100644
--- a/tests/SkSLErrorTest.cpp
+++ b/tests/SkSLErrorTest.cpp
@@ -16,12 +16,7 @@ static void test_failure(skiatest::Reporter* r, const char* src, const char* err
SkSL::Program::Settings settings;
sk_sp<GrShaderCaps> caps = SkSL::ShaderCapsFactory::Default();
settings.fCaps = caps.get();
- std::unique_ptr<SkSL::Program> program = compiler.convertProgram(SkSL::Program::kFragment_Kind,
- SkString(src), settings);
- if (program) {
- SkSL::String ignored;
- compiler.toSPIRV(*program, &ignored);
- }
+ compiler.convertProgram(SkSL::Program::kFragment_Kind, SkString(src), settings);
SkSL::String skError(error);
if (compiler.errorText() != skError) {
SkDebugf("SKSL ERROR:\n source: %s\n expected: %s received: %s", src, error,
@@ -38,8 +33,6 @@ static void test_success(skiatest::Reporter* r, const char* src) {
std::unique_ptr<SkSL::Program> program = compiler.convertProgram(SkSL::Program::kFragment_Kind,
SkString(src), settings);
REPORTER_ASSERT(r, program);
- SkSL::String ignored;
- REPORTER_ASSERT(r, compiler.toSPIRV(*program, &ignored));
}
DEF_TEST(SkSLUndefinedSymbol, r) {
@@ -405,15 +398,6 @@ DEF_TEST(SkSLBadCap, r) {
"error: 1: unknown capability flag 'bugFreeDriver'\n1 error\n");
}
-DEF_TEST(SkSLBadOffset, r) {
- test_failure(r,
- "struct Bad { layout (offset = 5) int x; } bad; void main() { bad.x = 5; }",
- "error: 1: offset of field 'x' must be a multiple of 4\n1 error\n");
- test_failure(r,
- "struct Bad { int x; layout (offset = 0) int y; } bad; void main() { bad.x = 5; }",
- "error: 1: offset of field 'y' must be at least 4\n1 error\n");
-}
-
DEF_TEST(SkSLDivByZero, r) {
test_failure(r,
"int x = 1 / 0;",
@@ -466,4 +450,43 @@ DEF_TEST(SkSLFieldAfterRuntimeArray, r) {
"array\n1 error\n");
}
+DEF_TEST(SkSLStaticIf, r) {
+ test_success(r,
+ "void main() { float x = 5; float y = 10;"
+ "@if (x < y) { sk_FragColor = vec4(1); } }");
+ test_failure(r,
+ "void main() { float x = sqrt(25); float y = 10;"
+ "@if (x < y) { sk_FragColor = vec4(1); } }",
+ "error: 1: static if has non-static test\n1 error\n");
+}
+
+DEF_TEST(SkSLStaticSwitch, r) {
+ test_success(r,
+ "void main() {"
+ "int x = 1;"
+ "@switch (x) {"
+ "case 1: sk_FragColor = vec4(1); break;"
+ "default: sk_FragColor = vec4(0);"
+ "}"
+ "}");
+ test_failure(r,
+ "void main() {"
+ "int x = int(sqrt(1));"
+ "@switch (x) {"
+ "case 1: sk_FragColor = vec4(1); break;"
+ "default: sk_FragColor = vec4(0);"
+ "}"
+ "}",
+ "error: 1: static switch has non-static test\n1 error\n");
+ test_failure(r,
+ "void main() {"
+ "int x = 1;"
+ "@switch (x) {"
+ "case 1: sk_FragColor = vec4(1); if (sqrt(0) < sqrt(1)) break;"
+ "default: sk_FragColor = vec4(0);"
+ "}"
+ "}",
+ "error: 1: static switch contains non-static conditional break\n1 error\n");
+}
+
#endif