mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
5.7 KiB
153 lines
5.7 KiB
'use strict';
|
|
|
|
const common = require('../../common');
|
|
const test_error = require(`./build/${common.buildType}/test_error`);
|
|
const assert = require('assert');
|
|
const theError = new Error('Some error');
|
|
const theTypeError = new TypeError('Some type error');
|
|
const theSyntaxError = new SyntaxError('Some syntax error');
|
|
const theRangeError = new RangeError('Some type error');
|
|
const theReferenceError = new ReferenceError('Some reference error');
|
|
const theURIError = new URIError('Some URI error');
|
|
const theEvalError = new EvalError('Some eval error');
|
|
|
|
class MyError extends Error { }
|
|
const myError = new MyError('Some MyError');
|
|
|
|
// Test that native error object is correctly classed
|
|
assert.strictEqual(test_error.checkError(theError), true,
|
|
'Error object correctly classed by napi_is_error');
|
|
|
|
// Test that native type error object is correctly classed
|
|
assert.strictEqual(test_error.checkError(theTypeError), true,
|
|
'Type error object correctly classed by napi_is_error');
|
|
|
|
// Test that native syntax error object is correctly classed
|
|
assert.strictEqual(test_error.checkError(theSyntaxError), true,
|
|
'Syntax error object correctly classed by napi_is_error');
|
|
|
|
// Test that native range error object is correctly classed
|
|
assert.strictEqual(test_error.checkError(theRangeError), true,
|
|
'Range error object correctly classed by napi_is_error');
|
|
|
|
// Test that native reference error object is correctly classed
|
|
assert.strictEqual(test_error.checkError(theReferenceError), true,
|
|
'Reference error object correctly classed by' +
|
|
' napi_is_error');
|
|
|
|
// Test that native URI error object is correctly classed
|
|
assert.strictEqual(test_error.checkError(theURIError), true,
|
|
'URI error object correctly classed by napi_is_error');
|
|
|
|
// Test that native eval error object is correctly classed
|
|
assert.strictEqual(test_error.checkError(theEvalError), true,
|
|
'Eval error object correctly classed by napi_is_error');
|
|
|
|
// Test that class derived from native error is correctly classed
|
|
assert.strictEqual(test_error.checkError(myError), true,
|
|
'Class derived from native error correctly classed by' +
|
|
' napi_is_error');
|
|
|
|
// Test that non-error object is correctly classed
|
|
assert.strictEqual(test_error.checkError({}), false,
|
|
'Non-error object correctly classed by napi_is_error');
|
|
|
|
// Test that non-error primitive is correctly classed
|
|
assert.strictEqual(test_error.checkError('non-object'), false,
|
|
'Non-error primitive correctly classed by napi_is_error');
|
|
|
|
assert.throws(() => {
|
|
test_error.throwExistingError();
|
|
}, /^Error: existing error$/);
|
|
|
|
assert.throws(() => {
|
|
test_error.throwError();
|
|
}, /^Error: error$/);
|
|
|
|
assert.throws(() => {
|
|
test_error.throwRangeError();
|
|
}, /^RangeError: range error$/);
|
|
|
|
assert.throws(() => {
|
|
test_error.throwTypeError();
|
|
}, /^TypeError: type error$/);
|
|
|
|
assert.throws(
|
|
() => test_error.throwErrorCode(),
|
|
common.expectsError({
|
|
code: 'ERR_TEST_CODE',
|
|
message: 'Error [error]'
|
|
})
|
|
);
|
|
|
|
assert.throws(
|
|
() => test_error.throwRangeErrorCode(),
|
|
common.expectsError({
|
|
code: 'ERR_TEST_CODE',
|
|
message: 'RangeError [range error]'
|
|
})
|
|
);
|
|
|
|
assert.throws(
|
|
() => test_error.throwTypeErrorCode(),
|
|
common.expectsError({
|
|
code: 'ERR_TEST_CODE',
|
|
message: 'TypeError [type error]'
|
|
})
|
|
);
|
|
|
|
let error = test_error.createError();
|
|
assert.ok(error instanceof Error, 'expected error to be an instance of Error');
|
|
assert.strictEqual(error.message, 'error', 'expected message to be "error"');
|
|
|
|
error = test_error.createRangeError();
|
|
assert.ok(error instanceof RangeError,
|
|
'expected error to be an instance of RangeError');
|
|
assert.strictEqual(error.message,
|
|
'range error',
|
|
'expected message to be "range error"');
|
|
|
|
error = test_error.createTypeError();
|
|
assert.ok(error instanceof TypeError,
|
|
'expected error to be an instance of TypeError');
|
|
assert.strictEqual(error.message,
|
|
'type error',
|
|
'expected message to be "type error"');
|
|
|
|
error = test_error.createErrorCode();
|
|
assert.ok(error instanceof Error, 'expected error to be an instance of Error');
|
|
assert.strictEqual(error.code,
|
|
'ERR_TEST_CODE',
|
|
'expected code to be "ERR_TEST_CODE"');
|
|
assert.strictEqual(error.message,
|
|
'Error [error]',
|
|
'expected message to be "Error [error]"');
|
|
assert.strictEqual(error.name,
|
|
'Error [ERR_TEST_CODE]',
|
|
'expected name to be "Error [ERR_TEST_CODE]"');
|
|
|
|
error = test_error.createRangeErrorCode();
|
|
assert.ok(error instanceof RangeError,
|
|
'expected error to be an instance of RangeError');
|
|
assert.strictEqual(error.message,
|
|
'RangeError [range error]',
|
|
'expected message to be "RangeError [range error]"');
|
|
assert.strictEqual(error.code,
|
|
'ERR_TEST_CODE',
|
|
'expected code to be "ERR_TEST_CODE"');
|
|
assert.strictEqual(error.name,
|
|
'RangeError [ERR_TEST_CODE]',
|
|
'expected name to be "RangeError[ERR_TEST_CODE]"');
|
|
|
|
error = test_error.createTypeErrorCode();
|
|
assert.ok(error instanceof TypeError,
|
|
'expected error to be an instance of TypeError');
|
|
assert.strictEqual(error.message,
|
|
'TypeError [type error]',
|
|
'expected message to be "TypeError [type error]"');
|
|
assert.strictEqual(error.code,
|
|
'ERR_TEST_CODE',
|
|
'expected code to be "ERR_TEST_CODE"');
|
|
assert.strictEqual(error.name,
|
|
'TypeError [ERR_TEST_CODE]',
|
|
'expected name to be "TypeError[ERR_TEST_CODE]"');
|
|
|