[validation] add cts tests for switch

This CL adds wgsl tests for the following rules:
v-switch01: switch statement selector expression must be of a scalar integer type
v-0008: switch statement must have exactly one default clause
v-switch03: the case selector values must have the same type as the selector expression the case selectors for a switch statement
v-switch04: a literal value must not appear more than once in the case selectors for a switch statement
v-switch05: a fallthrough statement must not appear as the last statement in last clause of a switch

Bug: tint: 6
Change-Id: Ia12b7d13d47b01e970a5a1e58d61ef05dd9f3830
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/28320
Commit-Queue: David Neto <dneto@google.com>
Reviewed-by: David Neto <dneto@google.com>
This commit is contained in:
Sarah Mashayekhi 2020-09-10 14:55:17 +00:00 committed by Commit Bot service account
parent 2e9f1f54c8
commit aff58c6cac
7 changed files with 87 additions and 0 deletions

View File

@ -0,0 +1,12 @@
# v-switch03: line 7: the case selector values must have the same type as the selector expression
entry_point vertex = main;
fn main() -> void {
var a: i32 = -2;
switch (a) {
case 2u:{}
default: {}
}
return;
}

View File

@ -0,0 +1,12 @@
# v-switch03: line 7: the case selector values must have the same type as the selector expression
entry_point vertex = main;
fn main() -> void {
var a: u32 = 2;
switch (a) {
case -1:{}
default: {}
}
return;
}

View File

@ -0,0 +1,15 @@
# v-switch04: line 9: a literal value must not appear more than once in the case selectors for a
# switch statement: '0'
entry_point vertex = main;
fn main() -> void {
var a: u32 = 2;
switch (a) {
case 10u: {}
case 10u: {}
case 10u: {}
default: {}
}
return;
}

View File

@ -0,0 +1,13 @@
# v-switch05: line 9: a fallthrough statement must not appear as the last statement in last clause
# of a switch
entry_point vertex = main;
fn main() -> void {
var a: i32 = -2;
switch (a) {
default: {
fallthrough;
}
}
return;
}

View File

@ -0,0 +1,13 @@
# v-0008: line 6: switch statement must have exactly one default clause
entry_point vertex = main;
fn main() -> void {
var a: i32 = 2;
switch (a) {
case 2: {}
default: {}
default: {}
}
return;
}

View File

@ -0,0 +1,11 @@
# v-0008: line 6: switch statement must have exactly one default clause
entry_point vertex = main;
fn main() -> void {
var a: i32 = 2;
switch (a) {
case 2: {}
}
return;
}

View File

@ -0,0 +1,11 @@
# v-switch01: line 6: switch statement selector expression must be of a scalar integer type
entry_point vertex = main;
fn main() -> void {
var a: f32 = 3.14;
switch (a) {
default: {}
}
return;
}