You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
1 year ago
|
import { rangeIntersection, rangesOverlap, rotate } from "./math";
|
||
5 years ago
|
|
||
|
describe("rotate", () => {
|
||
|
it("should rotate over (x2, y2) and return the rotated coordinates for (x1, y1)", () => {
|
||
|
const x1 = 10;
|
||
|
const y1 = 20;
|
||
|
const x2 = 20;
|
||
|
const y2 = 30;
|
||
|
const angle = Math.PI / 2;
|
||
|
const [rotatedX, rotatedY] = rotate(x1, y1, x2, y2, angle);
|
||
|
expect([rotatedX, rotatedY]).toEqual([30, 20]);
|
||
|
const res2 = rotate(rotatedX, rotatedY, x2, y2, -angle);
|
||
|
expect(res2).toEqual([x1, x2]);
|
||
|
});
|
||
|
});
|
||
1 year ago
|
|
||
|
describe("range overlap", () => {
|
||
|
it("should overlap when range a contains range b", () => {
|
||
|
expect(rangesOverlap([1, 4], [2, 3])).toBe(true);
|
||
|
expect(rangesOverlap([1, 4], [1, 4])).toBe(true);
|
||
|
expect(rangesOverlap([1, 4], [1, 3])).toBe(true);
|
||
|
expect(rangesOverlap([1, 4], [2, 4])).toBe(true);
|
||
|
});
|
||
|
|
||
|
it("should overlap when range b contains range a", () => {
|
||
|
expect(rangesOverlap([2, 3], [1, 4])).toBe(true);
|
||
|
expect(rangesOverlap([1, 3], [1, 4])).toBe(true);
|
||
|
expect(rangesOverlap([2, 4], [1, 4])).toBe(true);
|
||
|
});
|
||
|
|
||
|
it("should overlap when range a and b intersect", () => {
|
||
|
expect(rangesOverlap([1, 4], [2, 5])).toBe(true);
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe("range intersection", () => {
|
||
|
it("should intersect completely with itself", () => {
|
||
|
expect(rangeIntersection([1, 4], [1, 4])).toEqual([1, 4]);
|
||
|
});
|
||
|
|
||
|
it("should intersect irrespective of order", () => {
|
||
|
expect(rangeIntersection([1, 4], [2, 3])).toEqual([2, 3]);
|
||
|
expect(rangeIntersection([2, 3], [1, 4])).toEqual([2, 3]);
|
||
|
expect(rangeIntersection([1, 4], [3, 5])).toEqual([3, 4]);
|
||
|
expect(rangeIntersection([3, 5], [1, 4])).toEqual([3, 4]);
|
||
|
});
|
||
|
|
||
|
it("should intersect at the edge", () => {
|
||
|
expect(rangeIntersection([1, 4], [4, 5])).toEqual([4, 4]);
|
||
|
});
|
||
|
|
||
|
it("should not intersect", () => {
|
||
|
expect(rangeIntersection([1, 4], [5, 7])).toEqual(null);
|
||
|
});
|
||
|
});
|