Buckets:
| import { describe, expect, test } from "bun:test" | |
| import { | |
| disposeIfDisposable, | |
| getHoveredLinkText, | |
| getSpeechRecognitionCtor, | |
| hasSetOption, | |
| isDisposable, | |
| setOptionIfSupported, | |
| } from "./runtime-adapters" | |
| describe("runtime adapters", () => { | |
| test("detects and disposes disposable values", () => { | |
| let count = 0 | |
| const value = { | |
| dispose: () => { | |
| count += 1 | |
| }, | |
| } | |
| expect(isDisposable(value)).toBe(true) | |
| disposeIfDisposable(value) | |
| expect(count).toBe(1) | |
| }) | |
| test("ignores non-disposable values", () => { | |
| expect(isDisposable({ dispose: "nope" })).toBe(false) | |
| expect(() => disposeIfDisposable({ dispose: "nope" })).not.toThrow() | |
| }) | |
| test("sets options only when setter exists", () => { | |
| const calls: Array<[string, unknown]> = [] | |
| const value = { | |
| setOption: (key: string, next: unknown) => { | |
| calls.push([key, next]) | |
| }, | |
| } | |
| expect(hasSetOption(value)).toBe(true) | |
| setOptionIfSupported(value, "fontFamily", "Berkeley Mono") | |
| expect(calls).toEqual([["fontFamily", "Berkeley Mono"]]) | |
| expect(() => setOptionIfSupported({}, "fontFamily", "Berkeley Mono")).not.toThrow() | |
| }) | |
| test("reads hovered link text safely", () => { | |
| expect(getHoveredLinkText({ currentHoveredLink: { text: "https://example.com" } })).toBe("https://example.com") | |
| expect(getHoveredLinkText({ currentHoveredLink: { text: 1 } })).toBeUndefined() | |
| expect(getHoveredLinkText(null)).toBeUndefined() | |
| }) | |
| test("resolves speech recognition constructor with webkit precedence", () => { | |
| // oxlint-disable-next-line no-extraneous-class | |
| class SpeechCtor {} | |
| // oxlint-disable-next-line no-extraneous-class | |
| class WebkitCtor {} | |
| const ctor = getSpeechRecognitionCtor({ | |
| SpeechRecognition: SpeechCtor, | |
| webkitSpeechRecognition: WebkitCtor, | |
| }) | |
| expect(ctor).toBe(WebkitCtor) | |
| }) | |
| test("returns undefined when no valid speech constructor exists", () => { | |
| expect(getSpeechRecognitionCtor({ SpeechRecognition: "nope" })).toBeUndefined() | |
| expect(getSpeechRecognitionCtor(undefined)).toBeUndefined() | |
| }) | |
| }) | |
Xet Storage Details
- Size:
- 2.12 kB
- Xet hash:
- 76cefee3adb5261ef3f28c3b06a0eb27143850ddf2443b585f0f595efeb0c8d3
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.