@dominicstop/utils
Version:
Yet another event emitter written in typescript.
86 lines (85 loc) • 3.48 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const geometry_1 = require("../geometry");
describe("Point", () => {
test("constructor == asValue", () => {
const point = new geometry_1.Point({ x: 3, y: 4 });
// `x: 3, y: 4`
expect(point.x).toBeCloseTo(3);
expect(point.y).toBeCloseTo(4);
expect(point.asValue).toEqual({ x: 3, y: 4 });
});
test("createLine == startPoint and endPoint", () => {
const p1 = new geometry_1.Point({ x: 0, y: 0 });
const p2 = new geometry_1.Point({ x: 3, y: 4 });
const line = p1.createLine(p2);
expect(line.startPoint).toBe(p1);
expect(line.endPoint).toBe(p2);
expect(line.distance).toBeCloseTo(5);
});
test("getDistance", () => {
const p1 = new geometry_1.Point({ x: 0, y: 0 });
const p2 = new geometry_1.Point({ x: 3, y: 4 });
expect(p1.getDistance(p2)).toBeCloseTo(5);
});
test("getDelta", () => {
const p1 = new geometry_1.Point({ x: 5, y: 5 });
const p2 = new geometry_1.Point({ x: 2, y: 3 });
const delta = p1.getDelta(p2);
expect(delta.x).toBeCloseTo(3);
expect(delta.y).toBeCloseTo(2);
});
test("zero", () => {
const point = geometry_1.Point.zero;
expect(point.isZero).toBe(true);
expect(point).toEqual(new geometry_1.Point({ x: 0, y: 0 }));
expect(point.asValue).toEqual({ x: 0, y: 0 });
});
test("lerp", () => {
const start = new geometry_1.Point({ x: 0, y: 0 });
const end = new geometry_1.Point({ x: 10, y: 20 });
const mid = geometry_1.Point.lerp(start, end, 0.5);
expect(mid.x).toBeCloseTo(5);
expect(mid.y).toBeCloseTo(10);
});
test("getBoundingBoxForPoints", () => {
const points = [
new geometry_1.Point({ x: 1, y: 2 }),
new geometry_1.Point({ x: 3, y: 6 }),
new geometry_1.Point({ x: -2, y: -1 }),
];
const rect = geometry_1.Point.getBoundingBoxForPoints(points);
// x: -2, y: -1
expect(rect.origin.x).toBeCloseTo(-2);
expect(rect.origin.y).toBeCloseTo(-1);
expect(rect.width).toBeCloseTo(5); // 3 - (-2)
expect(rect.height).toBeCloseTo(7); // 6 - (-1)
});
test("translatePoints", () => {
const points = [
new geometry_1.Point({ x: 1, y: 2 }),
new geometry_1.Point({ x: 3, y: 4 }),
];
const translated = geometry_1.Point.translatePoints({ points, dx: 5, dy: -2 });
expect(translated).toEqual([
new geometry_1.Point({ x: 6, y: 0 }),
new geometry_1.Point({ x: 8, y: 2 }),
]);
});
test("sumOfAllPoints", () => {
const p1 = new geometry_1.Point({ x: 1, y: 2 });
const p2 = new geometry_1.Point({ x: 3, y: 4 });
const p3 = new geometry_1.Point({ x: -1, y: -6 });
const sum = geometry_1.Point.sumOfAllPoints(p1, p2, p3);
const expectedSum = new geometry_1.Point({ x: 3, y: 0 });
expect(sum).toEqual(expectedSum);
});
test("getSum", () => {
const base = new geometry_1.Point({ x: 1, y: 1 });
const p1 = new geometry_1.Point({ x: 2, y: 3 });
const p2 = new geometry_1.Point({ x: -1, y: 4 });
const result = base.getSum(p1, p2);
// (1+2-1, 1+3+4) → (2, 8)
expect(result).toEqual(new geometry_1.Point({ x: 2, y: 8 }));
});
});