mirror of https://github.com/nodejs/node.git
49 lines
1.3 KiB
JavaScript
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',
|
|
});
|
|
}
|