| // 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...'); |