Checkpoint before integration and package validation. Assisted-by: SurmAgent:unknown [read] [edit] [bash]
24 lines
796 B
JavaScript
24 lines
796 B
JavaScript
import { assert, assertArrayEquals } from "./assert.js";
|
|
|
|
/* Array.fromAsync must create its elements with CreateDataPropertyOrThrow,
|
|
i.e. enumerable own data properties, so they show up in Object.keys and
|
|
spreads. */
|
|
|
|
/* array-like source */
|
|
{
|
|
const arr = await Array.fromAsync([10, 20, 30]);
|
|
assertArrayEquals(Object.keys(arr), ["0", "1", "2"]);
|
|
const d = Object.getOwnPropertyDescriptor(arr, 0);
|
|
assert(d.enumerable, true);
|
|
assert(d.writable, true);
|
|
assert(d.configurable, true);
|
|
}
|
|
|
|
/* async-iterable source */
|
|
{
|
|
const iter = { async *[Symbol.asyncIterator]() { yield "a"; yield "b"; } };
|
|
const arr = await Array.fromAsync(iter);
|
|
assertArrayEquals(Object.keys(arr), ["0", "1"]);
|
|
assert(Object.getOwnPropertyDescriptor(arr, 0).enumerable, true);
|
|
}
|