opencode/packages/codemode/test/test262-string.md

3.5 KiB

Test262 String Coverage

The String tests adapt Test262 at revision 250f204f23a9249ff204be2baec29600faae7b75. They cover CodeMode's 32 exposed instance methods and two static methods using primitive receivers, accepted argument types, and deterministic behavior. Each executable case names its exact upstream source path. LICENSE.test262 contains the upstream BSD terms.

This is coverage of CodeMode's bounded String surface, not a claim of ECMAScript or Test262 conformance. One upstream file may contain both adapted and inapplicable assertions, so a cited source means only that the represented assertions were adapted.

Inventory

The relevant upstream directories contain 1,048 files: 1,009 core built-in files, 29 Annex B files for exposed methods, and 10 Intl localeCompare files. The executable suite adapts assertions from 298 distinct sources.

API Upstream files Adapted sources
String.fromCharCode 17 6
String.fromCodePoint 11 4
String.prototype.at 11 5
String.prototype.charAt 30 9
String.prototype.charCodeAt 25 4
String.prototype.codePointAt 16 6
String.prototype.concat 22 1
String.prototype.endsWith 27 13
String.prototype.includes 27 12
String.prototype.indexOf 47 8
String.prototype.lastIndexOf 25 1
String.prototype.localeCompare 23 1
String.prototype.match 52 9
String.prototype.matchAll 26 1
String.prototype.normalize 14 3
String.prototype.padEnd 13 4
String.prototype.padStart 13 4
String.prototype.repeat 16 4
String.prototype.replace 56 16
String.prototype.replaceAll 46 12
String.prototype.search 44 10
String.prototype.slice 38 11
String.prototype.split 121 50
String.prototype.startsWith 21 7
String.prototype.substr 15 6
String.prototype.substring 46 12
String.prototype.toLowerCase 30 5
String.prototype.toString 7 1
String.prototype.toUpperCase 26 3
String.prototype.trim 129 66
String.prototype.trimEnd 23 2
String.prototype.trimLeft 4 0
String.prototype.trimRight 4 0
String.prototype.trimStart 23 2

Exclusions

Assertions are not adapted when they test behavior outside CodeMode's documented String surface:

  • Function metadata, property descriptors, constructibility, prototype mutation, or cross-realm identity.
  • The trimLeft/trimRight Test262 files assert prototype function identity, which CodeMode does not expose. Their supported call behavior remains covered by CodeMode-specific tests.
  • Boxed strings, generic receivers, custom coercion objects, Symbols, BigInts, or argument types CodeMode rejects.
  • Symbol-based RegExp dispatch, custom matchers, species constructors, or iterator protocol details. CodeMode materializes matchAll results instead of exposing iterators.
  • Locale selection and options. CodeMode deliberately uses the host default locale and ignores those arguments.
  • Test262 harness behavior or setup syntax unavailable in the confined interpreter.
  • Function-replacer behavior that is covered by CodeMode-specific tests for sequential callbacks, async tool calls, result coercion, diagnostics, and sandbox boundaries.
  • Assertions requiring an exact native error type when CodeMode deliberately exposes only its safe runtime error.

Handwritten tests remain where they specify CodeMode behavior rather than ordinary ECMAScript String semantics.