MasatoMakino/canvas-particle-waypoint

View on GitHub
__test__/Canvas2DParticle.spec.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { describe, it, expect } from "vitest";
import { Canvas2DParticle } from "../src/index.js";
import { getImageElement } from "./TestImage.js";
import { initCanvas, generateParticle } from "./Common.js";

describe("Canvas2DParticle", () => {
  it("should create a Canvas2DParticle instance correctly", () => {
    const particle = generateParticle();
    expect(particle).toBeInstanceOf(Canvas2DParticle);
    expect(particle).toBeTruthy();
  });

  it("should dispose the Canvas2DParticle instance correctly", () => {
    const particle = generateParticle();
    particle.dispose();
    particle.draw(); //dispose後の描画はスキップされる
  });

  it("should update the Canvas2DParticle instance correctly", () => {
    const particle = generateParticle();
    const testPosition = (t: number, n: number) => {
      const pos = particle.update(t);
      expect(pos).toBe(n);
    };
    testPosition(0.0, 0);
    testPosition(0.5, 0.5);
    testPosition(1.0, 1);
  });

  it("should init the Canvas2DParticle instance correctly", async () => {
    const canvas = initCanvas();
    const ctx = canvas.getContext("2d");
    const image = await getImageElement();
    const particle = generateParticle();
    particle.init(ctx!, image, 3.0, 1.0);
    particle.update(0.3);
    particle.draw();
  });
});