Spaces:
Sleeping
Sleeping
| import { describe, expect, test } from "vitest"; | |
| import { createJimp } from "@jimp/core"; | |
| import { makeTestImage } from "@jimp/test-utils"; | |
| import { methods } from "./index.js"; | |
| const jimp = createJimp({ plugins: [methods] }); | |
| describe("Rotate a image with even size", () => { | |
| const imgSrc = jimp.fromBitmap( | |
| makeTestImage( | |
| "▰▴▴▴▪▪▪▰", | |
| "▴▴▴▴▪▪▪▪", | |
| "▴▴▴▴▪▪▪▪", | |
| "▴▴▴▴▪▪▪▪", | |
| "▪▪▪▪▴▴▴▴", | |
| "▪▪▪▪▴▴▴▴", | |
| "▪▪▪▪▴▴▴▴", | |
| "▦▪▪▪▴▴▴▦", | |
| ), | |
| ); | |
| const angles = [ | |
| 1, 91, 30, 45, 60, 90, -90, 120, 135, 180, 225, 270, 315, 360, | |
| ]; | |
| angles.forEach((angle) => { | |
| test(`${angle} degrees`, () => { | |
| expect(imgSrc.clone().rotate(angle)).toMatchSnapshot(); | |
| }); | |
| }); | |
| }); | |
| describe("Rotate a image with odd size", () => { | |
| const imgSrc = jimp.fromBitmap( | |
| makeTestImage( | |
| "▴▴▴▦▪▪▪", | |
| "▴▴▴▦▪▪▪", | |
| "▴▴▴▦▪▪▪", | |
| "▦▦▦▦▦▦▦", | |
| "▴▴▴▦▴▴▴", | |
| "▴▴▴▦▴▴▴", | |
| "▴▴▴▦▴▴▴", | |
| ), | |
| ); | |
| const angles = [45, 135, 225, 315]; | |
| angles.forEach((angle) => { | |
| test(`${angle} degrees`, () => { | |
| expect(imgSrc.clone().rotate(angle)).toMatchSnapshot(); | |
| }); | |
| }); | |
| }); | |
| describe("Rotate a non-square image", () => { | |
| const imgSrc = jimp.fromBitmap( | |
| makeTestImage("▴▴▴▴▪▪▪▪", "▴▴▴▴▪▪▪▪", "▦▦▦▦▴▴▴▴", "▦▦▦▦▴▴▴▴"), | |
| ); | |
| const angles = [1, 10, 30, 45, 90, -90, 135, 180, 225, 315, -180, -270]; | |
| angles.forEach((angle) => { | |
| test(`${angle} degrees`, () => { | |
| expect(imgSrc.clone().rotate(angle)).toMatchSnapshot(); | |
| }); | |
| }); | |
| }); | |
| describe("Rotate a non-square image without resizing", () => { | |
| const imgSrc = jimp.fromBitmap( | |
| makeTestImage("□□□□□□□□", "▹▹▹▹▹▹▹▹", "▿▿▿▿▿▿▿▿", "□□□□□□□□"), | |
| ); | |
| const angles = [90, 180, 270, 45]; | |
| angles.forEach((angle) => { | |
| test(`${angle} degrees`, () => { | |
| expect( | |
| imgSrc.clone().rotate({ deg: angle, mode: false }), | |
| ).toMatchSnapshot(); | |
| }); | |
| }); | |
| }); | |