Files
pybricks-code/src/utils/customError.test.ts
T
David Lechner 348d6e90d9 add CustomError class
This will be used for throwing errors that can be caught and handled without having to parse the message.
2022-05-20 11:13:55 -05:00

36 lines
1.0 KiB
TypeScript

// SPDX-License-Identifier: MIT
// Copyright (c) 2022 The Pybricks Authors
import { CustomError } from './customError';
// all subclasses should be declared like this:
type TestErrorName = 'Test';
class TestError extends CustomError<TestErrorName> {}
describe('CustomError', () => {
it('should work with instanceof', () => {
expect(new TestError('Test', 'test')).toBeInstanceOf(TestError);
});
it('should override name', () => {
expect(new TestError('Test', 'test')).toHaveProperty('name', 'Test');
});
it('should pass cause', () => {
const testCause = new Error('test cause');
expect(() => {
throw new TestError('Test', 'test', testCause);
}).toThrow({ name: 'Test', message: 'test', cause: testCause });
});
it('should serialize to something useful', () => {
expect(JSON.stringify(new TestError('Test', 'test'))).toBe(
'"[TestError: Test]"',
);
expect(`${new TestError('Test', 'test')}`).toBe('[TestError: Test]');
});
});