diff options
Diffstat (limited to 'dom/webgpu/tests/cts/checkout/src/webgpu/shader/validation/parse/comments.spec.ts')
-rw-r--r-- | dom/webgpu/tests/cts/checkout/src/webgpu/shader/validation/parse/comments.spec.ts | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/dom/webgpu/tests/cts/checkout/src/webgpu/shader/validation/parse/comments.spec.ts b/dom/webgpu/tests/cts/checkout/src/webgpu/shader/validation/parse/comments.spec.ts new file mode 100644 index 0000000000..af49c49619 --- /dev/null +++ b/dom/webgpu/tests/cts/checkout/src/webgpu/shader/validation/parse/comments.spec.ts @@ -0,0 +1,75 @@ +export const description = `Validation tests for comments`; + +import { makeTestGroup } from '../../../../common/framework/test_group.js'; +import { ShaderValidationTest } from '../shader_validation_test.js'; + +export const g = makeTestGroup(ShaderValidationTest); + +g.test('comments') + .desc(`Test that valid comments are handled correctly, including nesting.`) + .fn(t => { + const code = ` +/** + * Here is my shader. + * + * /* I can nest /**/ comments. */ + * // I can nest line comments too. + **/ +@fragment // This is the stage +fn main(/* +no +parameters +*/) -> @location(0) vec4<f32> { + return/*block_comments_delimit_tokens*/vec4<f32>(.4, .2, .3, .1); +}/* terminated block comments are OK at EOF...*/`; + t.expectCompileResult(true, code); + }); + +g.test('line_comment_eof') + .desc(`Test that line comments can come at EOF.`) + .fn(t => { + const code = ` +@fragment +fn main() -> @location(0) vec4<f32> { + return vec4<f32>(.4, .2, .3, .1); +} +// line comments are OK at EOF...`; + t.expectCompileResult(true, code); + }); + +g.test('line_comment_terminators') + .desc(`Test that line comments are terminated by any blankspace other than space and \t`) + .params(u => + u + .combine('blankspace', [ + [' ', 'space'], + ['\t', 'tab'], + ['\u000a', 'line_feed'], + ['\u000b', 'vertical_tab'], + ['\u000c', 'form_feed'], + ['\u000d', 'carriage_return'], + ['\u000d\u000a', 'carriage_return_line_feed'], + ['\u0085', 'next_line'], + ['\u2028', 'line_separator'], + ['\u2029', 'paragraph_separator'], + ]) + .beginSubcases() + ) + .fn(t => { + const code = `// Line comment${t.params.blankspace[0]}const invalid_outside_comment = should_fail`; + + t.expectCompileResult([' ', '\t'].includes(t.params.blankspace[0]), code); + }); + +g.test('unterminated_block_comment') + .desc(`Test that unterminated block comments cause an error`) + .params(u => u.combine('terminated', [true, false]).beginSubcases()) + .fn(t => { + const code = ` +/** + * Unterminated block comment. + * + ${t.params.terminated ? '*/' : ''}`; + + t.expectCompileResult(t.params.terminated, code); + }); |