// META: global=window,worker function runTests(data) { for (let entry of data) { test(function () { const pattern = new URLPattern(entry.pattern); if (entry.expected === null) { assert_throws_js(TypeError, _ => pattern.generate(entry.component, entry.groups), 'generate() should fail with TypeError'); return; } const result = pattern.generate(entry.component, entry.groups); assert_equals(result, entry.expected); }, `Pattern: ${JSON.stringify(entry.pattern)} ` + `Component: ${entry.component} ` + `Groups: ${JSON.stringify(entry.groups)}`); } } promise_test(async function () { const response = await fetch('resources/urlpattern-generate-test-data.json'); const data = await response.json(); runTests(data); }, 'Loading data...');