mirror of
https://github.com/pybricks/pybricks-code.git
synced 2026-09-14 02:24:58 +00:00
This will be used for throwing errors that can be caught and handled without having to parse the message.
36 lines
1.0 KiB
TypeScript
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]');
|
|
});
|
|
});
|