@dominicstop/utils
Version:
Yet another event emitter written in typescript.
137 lines (136 loc) • 4.58 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const geometry_1 = require("../geometry");
const geometry_2 = require("../geometry");
describe("BoxedHexagon", () => {
const center = new geometry_2.Point({ x: 0, y: 0 });
test("constructor (relativeToCenter)", () => {
const hex = new geometry_1.BoxedHexagon({
mode: "relativeToCenter",
center,
circumRadius: 10,
});
expect(hex.center).toEqual(center);
expect(hex.circumRadius).toBeCloseTo(10);
});
test("asValue", () => {
const hex = new geometry_1.BoxedHexagon({
mode: "relativeToCenter",
center,
circumRadius: 10,
});
expect(hex.asValue.center).toEqual(center);
expect(hex.asValue.circumRadius).toBeCloseTo(10);
});
test("clone", () => {
const hex = new geometry_1.BoxedHexagon({
mode: "relativeToCenter",
center,
circumRadius: 10,
});
const clone = hex.clone();
expect(clone.asValue).toEqual(hex.asValue);
});
test("translatedByOffset", () => {
const hex = new geometry_1.BoxedHexagon({
mode: "relativeToCenter",
center,
circumRadius: 10,
});
const translated = hex.translatedByOffset({ dx: 5, dy: 5 });
expect(translated.center.x).toBeCloseTo(5);
expect(translated.center.y).toBeCloseTo(5);
});
test("rotatedByAngle", () => {
const hex = new geometry_1.BoxedHexagon({
mode: "relativeToCenter",
center,
circumRadius: 10,
});
const rotated = hex.rotatedByAngle(geometry_1.Angle.initFromDegrees(30));
expect(rotated.startAngleOffset.degrees).toBeCloseTo(hex.startAngleOffset.degrees + 30);
});
test("initFromValue", () => {
const hex = geometry_1.BoxedHexagon.initFromValue({
center,
circumRadius: 10,
});
expect(hex.center).toEqual(center);
expect(hex.circumRadius).toBeCloseTo(10);
});
test("sideLength and perimeter", () => {
const hex = new geometry_1.BoxedHexagon({
mode: "relativeToCenter",
center,
circumRadius: 10,
});
expect(hex.sideLength).toBeGreaterThan(0);
expect(hex.perimeter).toBeCloseTo(hex.sideLength * 6);
});
test("inRadius and apothem", () => {
const hex = new geometry_1.BoxedHexagon({
mode: "relativeToCenter",
center,
circumRadius: 10,
});
expect(hex.inRadius).toBeCloseTo(hex.apothem);
});
test("inCircle and circumCircle", () => {
const hex = new geometry_1.BoxedHexagon({
mode: "relativeToCenter",
center,
circumRadius: 10,
});
expect(hex.inCircle.radius).toBeCloseTo(hex.inRadius);
expect(hex.circumCircle.radius).toBeCloseTo(hex.circumRadius);
});
test("boundingRect contains center", () => {
const hex = new geometry_1.BoxedHexagon({
mode: "relativeToCenter",
center,
circumRadius: 10,
});
const rect = hex.boundingBox;
expect(rect.isPointInside(hex.center)).toBe(true);
});
test("cornerPointsAsArray length", () => {
const hex = new geometry_1.BoxedHexagon({
mode: "relativeToCenter",
center,
circumRadius: 10,
});
expect(hex.cornerPointsAsArray.length).toBe(6);
});
test("edgeLines length", () => {
const hex = new geometry_1.BoxedHexagon({
mode: "relativeToCenter",
center,
circumRadius: 10,
});
expect(hex.edgeLines.length).toBe(6);
});
test("edgeMidpoints length", () => {
const hex = new geometry_1.BoxedHexagon({
mode: "relativeToCenter",
center,
circumRadius: 10,
});
expect(hex.edgeMidpoints.length).toBe(6);
});
test("area is positive", () => {
const hex = new geometry_1.BoxedHexagon({
mode: "relativeToCenter",
center,
circumRadius: 10,
});
expect(hex.area).toBeGreaterThan(0);
});
test("isPointInside center", () => {
const hex = new geometry_1.BoxedHexagon({
mode: "relativeToCenter",
center,
circumRadius: 10,
});
expect(hex.isPointInside(center)).toBe(true);
});
});