import { expect, test, describe } from "vitest"; import { makeTestImage } from "@jimp/test-utils"; import { HorizontalAlign, VerticalAlign, createJimp } from "@jimp/core"; import { methods } from "./index.js"; const jimp = createJimp({ plugins: [methods] }); describe("All align combinations for contain", () => { const vertical = jimp.fromBitmap( makeTestImage( "▴▴▴▴▸▸▸▸", "▴▴▴▴▸▸▸▸", "▴▴▴▴▸▸▸▸", "▴▴▴▴▸▸▸▸", "▴▴▴▴▸▸▸▸", "▴▴▴▴▸▸▸▸", "▾▾▾▾◆◆◆◆", "▾▾▾▾◆◆◆◆", "▾▾▾▾◆◆◆◆", "▾▾▾▾◆◆◆◆", "▾▾▾▾◆◆◆◆", "▾▾▾▾◆◆◆◆", ), ); // stores the Jimp instances of the JGD images above. const horizontal = jimp.fromBitmap( makeTestImage( "▴▴▴▴▴▴▸▸▸▸▸▸", "▴▴▴▴▴▴▸▸▸▸▸▸", "▴▴▴▴▴▴▸▸▸▸▸▸", "▴▴▴▴▴▴▸▸▸▸▸▸", "▾▾▾▾▾▾◆◆◆◆◆◆", "▾▾▾▾▾▾◆◆◆◆◆◆", "▾▾▾▾▾▾◆◆◆◆◆◆", "▾▾▾▾▾▾◆◆◆◆◆◆", ), ); const tests: Array< [keyof typeof HorizontalAlign, keyof typeof VerticalAlign] > = [ ["LEFT", "TOP"], ["CENTER", "TOP"], ["RIGHT", "TOP"], ["LEFT", "MIDDLE"], ["CENTER", "MIDDLE"], ["RIGHT", "MIDDLE"], ["LEFT", "BOTTOM"], ["CENTER", "BOTTOM"], ["RIGHT", "BOTTOM"], ]; tests.forEach(([horizontalAlign, verticalAlign]) => { const align = horizontalAlign + " " + verticalAlign; const alignValue = // eslint-disable-next-line @typescript-eslint/no-explicit-any (HorizontalAlign as any)[horizontalAlign] | // eslint-disable-next-line @typescript-eslint/no-explicit-any (VerticalAlign as any)[verticalAlign]; test("vertical contain aligned to " + align, () => { expect( vertical.clone().contain({ w: 6, h: 6, align: alignValue }), ).toMatchSnapshot(); }); test("horizontal contain aligned to " + align, () => { expect( horizontal.clone().contain({ w: 6, h: 6, align: alignValue }), ).toMatchSnapshot(); }); }); });