nodejs/test/parallel/test-structuredClone-domexception.js
Chengzhong Wu 5457443210
lib,src: support DOMException ser-des
Added serialization and deserialization support for `DOMException`.

Co-Authored-By: jazelly <xzha4350@gmail.com>
PR-URL: https://github.com/nodejs/node/pull/58649
Fixes: https://github.com/nodejs/node/issues/49181
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Jason Zhang <xzha4350@gmail.com>
2025-06-11 16:11:18 +00:00

49 lines
1.3 KiB
JavaScript

'use strict';
require('../common');
const assert = require('assert');
function assertDOMException(actual, expected) {
assert.strictEqual(actual instanceof DOMException, true);
assert.strictEqual(actual.message, expected.message);
assert.strictEqual(actual.name, expected.name);
assert.strictEqual(actual.code, expected.code);
assert.strictEqual(actual.stack, expected.stack);
}
{
// Clone basic DOMException
const e = new DOMException('test');
const clone = structuredClone(e);
const clone2 = structuredClone(clone);
assertDOMException(clone, e);
assertDOMException(clone2, e);
}
{
// Clone a DOMException with a name
const e = new DOMException('test', 'DataCloneError');
const clone = structuredClone(e);
const clone2 = structuredClone(clone);
assertDOMException(clone, e);
assertDOMException(clone2, e);
}
{
// Clone an arbitrary object with a DOMException prototype
const obj = {};
Object.setPrototypeOf(obj, DOMException.prototype);
const clone = structuredClone(obj);
assert.strictEqual(clone instanceof DOMException, false);
}
{
// Transfer a DOMException. DOMExceptions are not transferable.
const e = new DOMException('test');
assert.throws(() => {
structuredClone(e, { transfer: [e] });
}, {
name: 'DataCloneError',
});
}