diff options
Diffstat (limited to 'cli/js/tests')
-rw-r--r-- | cli/js/tests/url_search_params_test.ts | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/cli/js/tests/url_search_params_test.ts b/cli/js/tests/url_search_params_test.ts index 3e71d2900..7b7dbab76 100644 --- a/cli/js/tests/url_search_params_test.ts +++ b/cli/js/tests/url_search_params_test.ts @@ -243,3 +243,33 @@ unitTest( assertEquals(params1.get("1"), "2"); } ); + +// If a class extends URLSearchParams, override one method should not change another's behavior. +unitTest( + function urlSearchParamsOverridingAppendNotChangeConstructorAndSet(): void { + let overridedAppendCalled = 0; + class CustomSearchParams extends URLSearchParams { + append(name: string, value: string): void { + ++overridedAppendCalled; + super.append(name, value); + } + } + new CustomSearchParams("foo=bar"); + new CustomSearchParams([["foo", "bar"]]); + new CustomSearchParams(new CustomSearchParams({ foo: "bar" })); + new CustomSearchParams().set("foo", "bar"); + assertEquals(overridedAppendCalled, 0); + } +); + +unitTest(function urlSearchParamsOverridingEntriesNotChangeForEach(): void { + class CustomSearchParams extends URLSearchParams { + *entries(): IterableIterator<[string, string]> { + yield* []; + } + } + let loopCount = 0; + const params = new CustomSearchParams({ foo: "bar" }); + params.forEach(() => void ++loopCount); + assertEquals(loopCount, 1); +}); |