Update builtin parse test to not use code as URL. (#2245)
This CL changes the test params for the builtin parse test to no longer
have WGSL code in the URL.
diff --git a/src/webgpu/shader/validation/parse/builtin.spec.ts b/src/webgpu/shader/validation/parse/builtin.spec.ts
index 3c684ee..5b3b627 100644
--- a/src/webgpu/shader/validation/parse/builtin.spec.ts
+++ b/src/webgpu/shader/validation/parse/builtin.spec.ts
@@ -1,37 +1,75 @@
export const description = `Validation tests for @builtin`;
import { makeTestGroup } from '../../../../common/framework/test_group.js';
+import { keysOf } from '../../../../common/util/data_tables.js';
import { ShaderValidationTest } from '../shader_validation_test.js';
export const g = makeTestGroup(ShaderValidationTest);
-const kValidBuiltin = new Set([
- `@builtin(position)`,
- `@builtin(position,)`,
- `@ \n builtin(position)`,
- `@/^ comment ^/builtin/^ comment ^/\n\n(\t/^comment^/position/^comment^/)`,
-]);
-const kInvalidBuiltin = new Set([
- `@abuiltin(position)`,
- `@builtin`,
- `@builtin()`,
- `@builtin position`,
- `@builtin position)`,
- `@builtin(position`,
- `@builtin(position, frag_depth)`,
- `@builtin(identifier)`,
- `@builtin(2)`,
-]);
+const kTests = {
+ pos: {
+ src: `@builtin(position)`,
+ pass: true,
+ },
+ trailing_comma: {
+ src: `@builtin(position,)`,
+ pass: true,
+ },
+ newline_in_attr: {
+ src: `@ \n builtin(position)`,
+ pass: true,
+ },
+ whitespace_in_attr: {
+ src: `@/* comment */builtin/* comment */\n\n(\t/*comment*/position/*comment*/)`,
+ pass: true,
+ },
+ invalid_name: {
+ src: `@abuiltin(position)`,
+ pass: false,
+ },
+ no_params: {
+ src: `@builtin`,
+ pass: false,
+ },
+ missing_param: {
+ src: `@builtin()`,
+ pass: false,
+ },
+ missing_parens: {
+ src: `@builtin position`,
+ pass: false,
+ },
+ missing_lparen: {
+ src: `@builtin position)`,
+ pass: false,
+ },
+ missing_rparen: {
+ src: `@builtin(position`,
+ pass: false,
+ },
+ multiple_params: {
+ src: `@builtin(position, frag_depth)`,
+ pass: false,
+ },
+ ident_param: {
+ src: `@builtin(identifier)`,
+ pass: false,
+ },
+ number_param: {
+ src: `@builtin(2)`,
+ pass: false,
+ },
+};
g.test('parse')
.desc(`Test that @builtin is parsed correctly.`)
- .params(u => u.combine('builtin', new Set([...kValidBuiltin, ...kInvalidBuiltin])))
+ .params(u => u.combine('builtin', keysOf(kTests)))
.fn(t => {
- const v = t.params.builtin.replace(/\^/g, '*');
+ const src = kTests[t.params.builtin].src;
const code = `
@vertex
-fn main() -> ${v} vec4<f32> {
+fn main() -> ${src} vec4<f32> {
return vec4<f32>(.4, .2, .3, .1);
}`;
- t.expectCompileResult(kValidBuiltin.has(t.params.builtin), code);
+ t.expectCompileResult(kTests[t.params.builtin].pass, code);
});