@oleksii-pavlov/ranges
Version:
The Ranges utils
70 lines (69 loc) • 4.1 kB
JavaScript
import { Range, mapValueToRange } from '../ranges';
test('mapValueToRange should map a single value to RangeValues with min and max equal to the value', () => {
const value = 5;
const rangeValues = mapValueToRange(value);
expect(rangeValues).toEqual({ min: value, max: value });
});
const range = new Range({ min: 1, max: 10 });
test('getValues should return the correct range values', () => {
expect(range.getValues()).toEqual({ min: 1, max: 10 });
});
test('within should constrain values within the range', () => {
expect(range.within(0)).toBe(1);
expect(range.within(5)).toBe(5);
expect(range.within(15)).toBe(10);
});
test('isGreaterThanMinAndLessThanMax should check if value is within (min, max)', () => {
expect(range.isGreaterThanMinAndLessThanMax(0)).toBe(false);
expect(range.isGreaterThanMinAndLessThanMax(1)).toBe(false);
expect(range.isGreaterThanMinAndLessThanMax(5)).toBe(true);
expect(range.isGreaterThanMinAndLessThanMax(10)).toBe(false);
expect(range.isGreaterThanMinAndLessThanMax(11)).toBe(false);
});
test('isGreaterThanMinOrEqualAndLessThanMax should check if value is within [min, max)', () => {
expect(range.isGreaterThanMinOrEqualAndLessThanMax(0)).toBe(false);
expect(range.isGreaterThanMinOrEqualAndLessThanMax(1)).toBe(true);
expect(range.isGreaterThanMinOrEqualAndLessThanMax(5)).toBe(true);
expect(range.isGreaterThanMinOrEqualAndLessThanMax(10)).toBe(false);
expect(range.isGreaterThanMinOrEqualAndLessThanMax(11)).toBe(false);
});
test('isGreaterThanMinAndLessThanMaxOrEqual should check if value is within (min, max]', () => {
expect(range.isGreaterThanMinAndLessThanMaxOrEqual(0)).toBe(false);
expect(range.isGreaterThanMinAndLessThanMaxOrEqual(1)).toBe(false);
expect(range.isGreaterThanMinAndLessThanMaxOrEqual(5)).toBe(true);
expect(range.isGreaterThanMinAndLessThanMaxOrEqual(10)).toBe(true);
expect(range.isGreaterThanMinAndLessThanMaxOrEqual(11)).toBe(false);
});
test('isGreaterThanMinOrEqualAndLessThanMaxOrEqual should check if value is within [min, max]', () => {
expect(range.isGreaterThanMinOrEqualAndLessThanMaxOrEqual(0)).toBe(false);
expect(range.isGreaterThanMinOrEqualAndLessThanMaxOrEqual(1)).toBe(true);
expect(range.isGreaterThanMinOrEqualAndLessThanMaxOrEqual(5)).toBe(true);
expect(range.isGreaterThanMinOrEqualAndLessThanMaxOrEqual(10)).toBe(true);
expect(range.isGreaterThanMinOrEqualAndLessThanMaxOrEqual(11)).toBe(false);
});
test('getIntersection should return the correct intersection range or null', () => {
const intersectionRange1 = range.getIntersection({ min: 5, max: 15 });
expect(intersectionRange1 === null || intersectionRange1 === void 0 ? void 0 : intersectionRange1.getValues()).toEqual({ min: 5, max: 10 });
const intersectionRange2 = range.getIntersection({ min: -5, max: 5 });
expect(intersectionRange2 === null || intersectionRange2 === void 0 ? void 0 : intersectionRange2.getValues()).toEqual({ min: 1, max: 5 });
const intersectionRange3 = range.getIntersection({ min: 15, max: 20 });
expect(intersectionRange3).toBeNull();
});
test('isInRangeOf should check if current range is within another range', () => {
expect(range.isInRangeOf({ min: 0, max: 20 })).toBe(true);
expect(range.isInRangeOf({ min: 1, max: 10 })).toBe(true);
expect(range.isInRangeOf({ min: 5, max: 15 })).toBe(false);
expect(range.isInRangeOf({ min: 0, max: 5 })).toBe(false);
});
test('containsRange should check if current range contains another range', () => {
expect(range.containsRange({ min: 2, max: 8 })).toBe(true);
expect(range.containsRange({ min: 1, max: 10 })).toBe(true);
expect(range.containsRange({ min: 0, max: 5 })).toBe(false);
expect(range.containsRange({ min: 5, max: 15 })).toBe(false);
});
test('containsValue should check if current range contains value', () => {
expect(range.containsValue(2)).toBe(true);
expect(range.containsValue(3)).toBe(true);
expect(range.containsValue(11)).toBe(false);
expect(range.containsValue(12)).toBe(false);
});