51 lines
1.6 KiB
TypeScript
51 lines
1.6 KiB
TypeScript
import { QuietHours } from './QuietHours';
|
|
|
|
describe('QuietHours', () => {
|
|
it('creates a valid normal-range window', () => {
|
|
const qh = QuietHours.create(9, 17);
|
|
expect(qh.props.startHour).toBe(9);
|
|
expect(qh.props.endHour).toBe(17);
|
|
});
|
|
|
|
it('creates a valid overnight window', () => {
|
|
const qh = QuietHours.create(22, 7);
|
|
expect(qh.props.startHour).toBe(22);
|
|
expect(qh.props.endHour).toBe(7);
|
|
});
|
|
|
|
it('throws when hours are out of range', () => {
|
|
expect(() => QuietHours.create(-1, 10)).toThrow();
|
|
expect(() => QuietHours.create(0, 24)).toThrow();
|
|
});
|
|
|
|
it('throws when start and end are equal', () => {
|
|
expect(() => QuietHours.create(10, 10)).toThrow();
|
|
});
|
|
|
|
it('detects containment for normal range', () => {
|
|
const qh = QuietHours.create(9, 17);
|
|
expect(qh.containsHour(8)).toBe(false);
|
|
expect(qh.containsHour(9)).toBe(true);
|
|
expect(qh.containsHour(12)).toBe(true);
|
|
expect(qh.containsHour(17)).toBe(false);
|
|
});
|
|
|
|
it('detects containment for overnight range', () => {
|
|
const qh = QuietHours.create(22, 7);
|
|
expect(qh.containsHour(21)).toBe(false);
|
|
expect(qh.containsHour(22)).toBe(true);
|
|
expect(qh.containsHour(23)).toBe(true);
|
|
expect(qh.containsHour(0)).toBe(true);
|
|
expect(qh.containsHour(6)).toBe(true);
|
|
expect(qh.containsHour(7)).toBe(false);
|
|
});
|
|
|
|
it('implements value-based equality', () => {
|
|
const a = QuietHours.create(22, 7);
|
|
const b = QuietHours.create(22, 7);
|
|
const c = QuietHours.create(9, 17);
|
|
|
|
expect(a.equals(b)).toBe(true);
|
|
expect(a.equals(c)).toBe(false);
|
|
});
|
|
}); |