From d2ac080f408bdd64baf2eb28cdd18fb308abcbe0 Mon Sep 17 00:00:00 2001 From: Gregg Tavares Date: Fri, 8 Dec 2023 12:04:07 -0800 Subject: [PATCH] Test that constructable objects are actually constructable --- src/webgpu/idl/constructable.spec.ts | 56 ++++++++++++++++++++++++++++ src/webgpu/listing_meta.json | 3 ++ 2 files changed, 59 insertions(+) create mode 100644 src/webgpu/idl/constructable.spec.ts diff --git a/src/webgpu/idl/constructable.spec.ts b/src/webgpu/idl/constructable.spec.ts new file mode 100644 index 000000000000..fc9b2bf3387c --- /dev/null +++ b/src/webgpu/idl/constructable.spec.ts @@ -0,0 +1,56 @@ +export const description = ` +Test that constructable WebGPU objects are actually constructable. +`; + +import { keysOf } from '../../common/util/data_tables.js'; + +import { makeTestGroup } from './../../common/framework/test_group.js'; +import { IDLTest } from './idl_test.js'; + +export const g = makeTestGroup(IDLTest); + +const errors = { + GPUInternalError: globalThis.GPUInternalError, + GPUOutOfMemoryError: globalThis.GPUOutOfMemoryError, + GPUValidationError: globalThis.GPUValidationError, +}; + +g.test('gpu_errors') + .desc('tests that GPUErrors are constructable') + .params(u => u.combine('errorType', keysOf(errors))) + .fn(t => { + const { errorType } = t.params; + const Ctor = errors[errorType]; + const msg = 'this is a test'; + const error = new Ctor(msg); + t.expect(error.message === msg); + }); + +const pipelineErrorOptions: GPUPipelineErrorInit[] = [ + { reason: 'validation' }, + { reason: 'internal' }, +]; + +g.test('pipeline_errors') + .desc('tests that GPUPipelineError is constructable') + .params(u => + u // + .combine('msg', [undefined, 'some msg']) + .combine('options', pipelineErrorOptions) + ) + .fn(t => { + const { msg, options } = t.params; + const error = new GPUPipelineError(msg, options); + const expectedMsg = msg || ''; + t.expect(error.message === expectedMsg); + t.expect(error.reason === options.reason); + }); + +g.test('uncaptured_error_event') + .desc('tests that GPUUncapturedErrorEvent is constructable') + .fn(t => { + const msg = 'this is a test'; + const error = new GPUValidationError(msg); + const event = new GPUUncapturedErrorEvent('uncapturedError', { error }); + t.expect(event.error === error); + }); diff --git a/src/webgpu/listing_meta.json b/src/webgpu/listing_meta.json index 93d0090a1189..1e9398ef63ad 100644 --- a/src/webgpu/listing_meta.json +++ b/src/webgpu/listing_meta.json @@ -870,6 +870,9 @@ "webgpu:idl,constants,flags:ShaderStage,values:*": { "subcaseMS": 0.034 }, "webgpu:idl,constants,flags:TextureUsage,count:*": { "subcaseMS": 0.101 }, "webgpu:idl,constants,flags:TextureUsage,values:*": { "subcaseMS": 0.040 }, + "webgpu:idl,constructable:gpu_errors:*": { "subcaseMS": 0.101 }, + "webgpu:idl,constructable:pipeline_errors:*": { "subcaseMS": 0.101 }, + "webgpu:idl,constructable:uncaptured_error_event:*": { "subcaseMS": 0.101 }, "webgpu:shader,execution,expression,binary,af_addition:scalar:*": { "subcaseMS": 815.300 }, "webgpu:shader,execution,expression,binary,af_addition:scalar_vector:*": { "subcaseMS": 1803.434 }, "webgpu:shader,execution,expression,binary,af_addition:vector:*": { "subcaseMS": 719.600 },