diff options
author | Yoshiya Hinosawa <stibium121@gmail.com> | 2023-02-21 00:35:04 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-20 16:35:04 +0100 |
commit | 6915a9b7a701dde0e1078867961c9a91811c1850 (patch) | |
tree | e6822f2b8400c7c7941d3cb9ace59842389b5bc9 /cli/tests/node_compat/test/parallel/test-buffer-from.js | |
parent | a1cd2a5915c13f6a9b8eafa3807e143a02616bc1 (diff) |
test(ext/node): more node compat tests (#17827)
This PR adds the remaining ~650 Node.js compat test cases from std/node.
Among these 650 cases, about 130 cases are now failing. These failing
cases are prefixed with `TODO:` in `tests/node_compat/config.json`.
These will be addressed in later PRs.
Diffstat (limited to 'cli/tests/node_compat/test/parallel/test-buffer-from.js')
-rw-r--r-- | cli/tests/node_compat/test/parallel/test-buffer-from.js | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/cli/tests/node_compat/test/parallel/test-buffer-from.js b/cli/tests/node_compat/test/parallel/test-buffer-from.js new file mode 100644 index 000000000..ef023cf0b --- /dev/null +++ b/cli/tests/node_compat/test/parallel/test-buffer-from.js @@ -0,0 +1,74 @@ +// deno-fmt-ignore-file +// deno-lint-ignore-file + +// Copyright Joyent and Node contributors. All rights reserved. MIT license. +// Taken from Node 16.13.0 +// This file is automatically generated by "node/_tools/setup.ts". Do not modify this file manually + +'use strict'; + +const common = require('../common'); +const { deepStrictEqual, throws } = require('assert'); +const { runInNewContext } = require('vm'); + +const checkString = 'test'; + +const check = Buffer.from(checkString); + +class MyString extends String { + constructor() { + super(checkString); + } +} + +class MyPrimitive { + [Symbol.toPrimitive]() { + return checkString; + } +} + +class MyBadPrimitive { + [Symbol.toPrimitive]() { + return 1; + } +} + +deepStrictEqual(Buffer.from(new String(checkString)), check); +deepStrictEqual(Buffer.from(new MyString()), check); +deepStrictEqual(Buffer.from(new MyPrimitive()), check); + +// TODO(Soremwar) +// Enable once again when vm works correctly +// deepStrictEqual( +// Buffer.from(runInNewContext('new String(checkString)', { checkString })), +// check +// ); + +[ + {}, + new Boolean(true), + { valueOf() { return null; } }, + { valueOf() { return undefined; } }, + { valueOf: null }, + Object.create(null), + new Number(true), + new MyBadPrimitive(), + Symbol(), + 5n, + (one, two, three) => {}, + undefined, + null, +].forEach((input) => { + const errObj = { + code: 'ERR_INVALID_ARG_TYPE', + name: 'TypeError', + message: 'The first argument must be of type string or an instance of ' + + 'Buffer, ArrayBuffer, or Array or an Array-like Object.' + + common.invalidArgTypeHelper(input) + }; + throws(() => Buffer.from(input), errObj); + throws(() => Buffer.from(input, 'hex'), errObj); +}); + +Buffer.allocUnsafe(10); // Should not throw. +Buffer.from('deadbeaf', 'hex'); // Should not throw. |