32 lines
909 B
TypeScript
32 lines
909 B
TypeScript
import {describe, expect, it} from 'bun:test';
|
|
import assertUnreachable from '../../../src/lang/assertUnreachable';
|
|
|
|
describe('assertUnreachable', () => {
|
|
describe('when called with an unexpected value', () => {
|
|
it('should throw an error containing the value', () => {
|
|
const unreachableValue = 'unexpected' as never;
|
|
|
|
expect(() => assertUnreachable(unreachableValue)).toThrow('Unreachable code: unexpected');
|
|
});
|
|
|
|
it('should handle numeric values in the error message', () => {
|
|
const numericValue = 42 as never;
|
|
|
|
expect(() => assertUnreachable(numericValue)).toThrow('Unreachable code: 42');
|
|
});
|
|
|
|
it('should always throw and never return', () => {
|
|
const value = 'test' as never;
|
|
let didThrow = false;
|
|
|
|
try {
|
|
assertUnreachable(value);
|
|
} catch {
|
|
didThrow = true;
|
|
}
|
|
|
|
expect(didThrow).toBe(true);
|
|
});
|
|
});
|
|
});
|