node-libpng
Version:
Unofficial bindings for node to libpng.
56 lines (51 loc) • 1.91 kB
text/typescript
import { rect, isRect } from "../rect";
import { xy } from "../xy";
describe("Rectangle utilities", () => {
describe("rect", () => {
it("creates a rect from 4 numbers", () => {
const result = rect(5, 5, 10, 10);
expect(result).toEqual([5, 5, 10, 10]);
expect(result.x).toBe(5);
expect(result.y).toBe(5);
expect(result.width).toBe(10);
expect(result.height).toBe(10);
expect(result.offset).toEqual([5, 5]);
expect(result.dimensions).toEqual([10, 10]);
});
it("creates a rect from two sets of coordinates", () => {
const result = rect(xy(5, 5), xy(10, 10));
expect(result).toEqual([5, 5, 10, 10]);
expect(result.x).toBe(5);
expect(result.y).toBe(5);
expect(result.width).toBe(10);
expect(result.height).toBe(10);
expect(result.offset).toEqual([5, 5]);
expect(result.dimensions).toEqual([10, 10]);
});
});
describe("isRect", () => {
[
undefined,
null,
10,
"string",
false,
true,
[],
{},
[1, 2, 3, 4],
Object.assign([1, 2, 3, 4], { x: 1 }),
Object.assign([1, 2, 3, 4], { x: 1, y: 2 }),
Object.assign([1, 2, 3, 4], { x: 1, y: 2, width: 3 }),
Object.assign([1, 2, 3, 4], { x: 1, y: 2, width: 3, height: 4 }),
Object.assign([1, 2, 3, 4], { x: 1, y: 2, width: 3, height: 4, offset: xy(1, 2) }),
].forEach(input => {
it(`detects "${JSON.stringify(input)}" as false`, () => {
expect(isRect(input)).toBe(false);
});
});
it("detects a rect as true", () => {
expect(isRect(rect(1, 2, 3, 4))).toBe(true);
});
});
});