Spaces:
Sleeping
Sleeping
| import { expect, test, describe } from "vitest"; | |
| import { colorDiff, scan } from "./index.js"; | |
| import { JimpClass } from "@jimp/types"; | |
| // Convert [0..1] float to a percent value with only one decimal. | |
| const pct = (n: number) => ((n * 1000) << 0) / 10; | |
| describe("colorDiff", () => { | |
| test("totally opaque (no alpha defined)", () => { | |
| expect(colorDiff({ r: 255, g: 0, b: 0 }, { r: 255, g: 0, b: 0 })).toEqual( | |
| 0 | |
| ); | |
| expect( | |
| pct(colorDiff({ r: 255, g: 0, b: 0 }, { r: 0, g: 0, b: 0 })) | |
| ).toEqual(33.3); | |
| expect( | |
| pct(colorDiff({ r: 255, g: 0, b: 0 }, { r: 0, g: 255, b: 0 })) | |
| ).toEqual(66.6); | |
| expect(colorDiff({ r: 255, g: 0, b: 0 }, { r: 0, g: 255, b: 255 })).toEqual( | |
| 1 | |
| ); | |
| expect(colorDiff({ r: 0, g: 0, b: 0 }, { r: 255, g: 255, b: 255 })).toEqual( | |
| 1 | |
| ); | |
| }); | |
| test("totally transparent", () => { | |
| expect( | |
| colorDiff({ r: 255, g: 0, b: 0, a: 0 }, { r: 255, g: 0, b: 0, a: 0 }) | |
| ).toEqual(0); | |
| expect( | |
| colorDiff({ r: 0, g: 0, b: 0, a: 0 }, { r: 255, g: 255, b: 255, a: 0 }) | |
| ).toEqual(1); | |
| }); | |
| test("different alpha", () => { | |
| expect( | |
| pct( | |
| colorDiff( | |
| { r: 255, g: 0, b: 0, a: 100 }, | |
| { r: 255, g: 0, b: 0, a: 150 } | |
| ) | |
| ) | |
| ).toEqual(3.8); | |
| expect( | |
| colorDiff({ r: 0, g: 0, b: 0, a: 0 }, { r: 255, g: 255, b: 255, a: 255 }) | |
| ).toEqual(1); | |
| }); | |
| }); | |
| describe("scan", () => { | |
| class TestImage { | |
| public bitmap = { | |
| height: 3, | |
| width: 3, | |
| data: Buffer.from([ | |
| 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, | |
| 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, | |
| ]), | |
| }; | |
| } | |
| const img = new TestImage() as JimpClass; | |
| test("scan", () => { | |
| let count = 0; | |
| scan(img, function (_, __, idx) { | |
| count++; | |
| expect(img.bitmap.data[idx]).toBe(this.bitmap.data[idx]); | |
| }); | |
| expect(count).toBe(img.bitmap.width * img.bitmap.height); | |
| }); | |
| }); | |