import { Rectangle, Vector2D } from '@/components/rects/rectangles'; import { expect } from "chai"; describe("Vector2D Tests", () => { const v = new Vector2D(1, 2); it("should create a vector", () => { expect(v.x).to.equal(1); expect(v.y).to.equal(2); }); it("should add vectors", () => { const v2 = v.plus(new Vector2D(3, 4)); expect(v2.x).to.equal(4); expect(v2.y).to.equal(6); }); it("should subtract vectors", () => { const v2 = v.minus(new Vector2D(3, 4)); expect(v2.x).to.equal(-2); expect(v2.y).to.equal(-2); }); }); describe("Rectangle Tests", () => { const v1 = new Vector2D(1, 2); const v2 = new Vector2D(4, 6); const r1 = new Rectangle(v1, v2); const r2 = new Rectangle(v2, v1); it("should create a rectangle", () => { expect(r1.left).to.equal(1); expect(r1.top).to.equal(2); expect(r1.width).to.equal(3); expect(r1.height).to.equal(4); }); it("should create the same rectangle backwards", () => { expect(r2.left).to.equal(1); expect(r2.top).to.equal(2); expect(r2.width).to.equal(3); expect(r2.height).to.equal(4); }); it("should create the same rectangle transposed", () => { const v1t = new Vector2D(v1.x, v2.y); const v2t = new Vector2D(v2.x, v1.y); const rt = new Rectangle(v1t, v2t); expect(rt.left).to.equal(1); expect(rt.top).to.equal(2); expect(rt.width).to.equal(3); expect(rt.height).to.equal(4); }); it("should contain itself", () => { expect(r1.contains(v1)).true; expect(r1.contains(v2)).true; expect(r1.contains(r1.origin)).to.be.true; expect(r1.contains(r1.corner)).to.be.true; const vmid = new Vector2D((v1.x + v2.x) / 2, (v1.y + v2.y) / 2); expect(r1.contains(vmid)).to.be.true; }); it("should not contain certain points", () => { expect(r1.contains(new Vector2D(0, 0))).to.be.false; expect(r1.contains(new Vector2D(100, 100))).to.be.false; }); });