chore: add jimp dependency, icon padding script, and update configuration
This commit is contained in:
+408
@@ -0,0 +1,408 @@
|
||||
import { Jimp, mkJGD } from "@jimp/test-utils";
|
||||
import configure from "@jimp/custom";
|
||||
|
||||
import crop from "../src";
|
||||
import { expectToBeJGD } from "@jimp/test-utils/src";
|
||||
|
||||
const jimp = configure({ plugins: [crop] }, Jimp);
|
||||
|
||||
describe("Autocrop", () => {
|
||||
it("image with transparent surround color", async () => {
|
||||
const imgSrc = await jimp.read(
|
||||
mkJGD(
|
||||
" ",
|
||||
" ◆◆ ",
|
||||
" ◆▦▦◆ ",
|
||||
" ◆▦▦▦▦◆ ",
|
||||
" ◆▦▦◆ ",
|
||||
" ◆◆ ",
|
||||
" "
|
||||
)
|
||||
);
|
||||
|
||||
expectToBeJGD(
|
||||
imgSrc.autocrop().getJGDSync(),
|
||||
mkJGD(" ◆◆ ", " ◆▦▦◆ ", "◆▦▦▦▦◆", " ◆▦▦◆ ", " ◆◆ ")
|
||||
);
|
||||
});
|
||||
|
||||
it("image with opaque surround color", async () => {
|
||||
const imgSrc = await jimp.read(
|
||||
mkJGD(
|
||||
"▥▥▥▥▥▥▥▥▥▥",
|
||||
"▥▥▥▥◆◆▥▥▥▥",
|
||||
"▥▥▥◆▦▦◆▥▥▥",
|
||||
"▥▥◆▦▦▦▦◆▥▥",
|
||||
"▥▥▥◆▦▦◆▥▥▥",
|
||||
"▥▥▥▥◆◆▥▥▥▥",
|
||||
"▥▥▥▥▥▥▥▥▥▥"
|
||||
)
|
||||
);
|
||||
|
||||
expectToBeJGD(
|
||||
imgSrc.autocrop().getJGDSync(),
|
||||
mkJGD("▥▥◆◆▥▥", "▥◆▦▦◆▥", "◆▦▦▦▦◆", "▥◆▦▦◆▥", "▥▥◆◆▥▥")
|
||||
);
|
||||
});
|
||||
|
||||
it("image with one color border", async () => {
|
||||
const imgSrc = await jimp.read(
|
||||
mkJGD(
|
||||
"▥▥▥▥▥▥▥▥▥▥▥▥",
|
||||
"▥▥▥▥▥▥▥▥▥▥▥▥",
|
||||
"▥▥ ◆◆ ▥▥",
|
||||
"▥▥ ◆▦▦◆ ▥▥",
|
||||
"▥▥ ◆▦▦▦▦◆ ▥▥",
|
||||
"▥▥ ◆▦▦◆ ▥▥",
|
||||
"▥▥ ◆◆ ▥▥",
|
||||
"▥▥▥▥▥▥▥▥▥▥▥▥",
|
||||
"▥▥▥▥▥▥▥▥▥▥▥▥"
|
||||
)
|
||||
);
|
||||
|
||||
expectToBeJGD(
|
||||
imgSrc.autocrop().getJGDSync(),
|
||||
mkJGD(" ◆◆ ", " ◆▦▦◆ ", " ◆▦▦▦▦◆ ", " ◆▦▦◆ ", " ◆◆ ")
|
||||
);
|
||||
});
|
||||
|
||||
it("image border with small variation", async () => {
|
||||
const imgSrc = await jimp.read(
|
||||
mkJGD(
|
||||
"323232323232",
|
||||
"232323232323",
|
||||
"32 ◆◆ 32",
|
||||
"23 ◆▦▦◆ 23",
|
||||
"32 ◆▦▦▦▦◆ 32",
|
||||
"23 ◆▦▦◆ 23",
|
||||
"32 ◆◆ 32",
|
||||
"232323232323",
|
||||
"323232323232"
|
||||
)
|
||||
);
|
||||
expectToBeJGD(
|
||||
imgSrc.clone().autocrop().getJGDSync(),
|
||||
mkJGD(
|
||||
"323232323232",
|
||||
"232323232323",
|
||||
"32 ◆◆ 32",
|
||||
"23 ◆▦▦◆ 23",
|
||||
"32 ◆▦▦▦▦◆ 32",
|
||||
"23 ◆▦▦◆ 23",
|
||||
"32 ◆◆ 32",
|
||||
"232323232323",
|
||||
"323232323232"
|
||||
)
|
||||
);
|
||||
expectToBeJGD(
|
||||
imgSrc.clone().autocrop(0.005).getJGDSync(),
|
||||
mkJGD(" ◆◆ ", " ◆▦▦◆ ", " ◆▦▦▦▦◆ ", " ◆▦▦◆ ", " ◆◆ ")
|
||||
);
|
||||
});
|
||||
|
||||
it("image border with small variation configured by options", async () => {
|
||||
const imgSrc = await Jimp.read(
|
||||
mkJGD(
|
||||
"323232323232",
|
||||
"232323232323",
|
||||
"32 ◆◆ 32",
|
||||
"23 ◆▦▦◆ 23",
|
||||
"32 ◆▦▦▦▦◆ 32",
|
||||
"23 ◆▦▦◆ 23",
|
||||
"32 ◆◆ 32",
|
||||
"232323232323",
|
||||
"323232323232"
|
||||
)
|
||||
);
|
||||
expectToBeJGD(
|
||||
imgSrc.clone().autocrop().getJGDSync(),
|
||||
mkJGD(
|
||||
"323232323232",
|
||||
"232323232323",
|
||||
"32 ◆◆ 32",
|
||||
"23 ◆▦▦◆ 23",
|
||||
"32 ◆▦▦▦▦◆ 32",
|
||||
"23 ◆▦▦◆ 23",
|
||||
"32 ◆◆ 32",
|
||||
"232323232323",
|
||||
"323232323232"
|
||||
)
|
||||
);
|
||||
expectToBeJGD(
|
||||
imgSrc.clone().autocrop({ tolerance: 0.005 }).getJGDSync(),
|
||||
mkJGD(" ◆◆ ", " ◆▦▦◆ ", " ◆▦▦▦▦◆ ", " ◆▦▦◆ ", " ◆◆ ")
|
||||
);
|
||||
});
|
||||
|
||||
it("image without frame", async () => {
|
||||
const imgSrc = await Jimp.read(
|
||||
mkJGD(
|
||||
"▥▥ ◆◆ ",
|
||||
"▥▥ ◆▦▦◆ ",
|
||||
"▥▥ ◆▦▦▦▦◆ ",
|
||||
"▥▥ ◆▦▦◆ ",
|
||||
"▥▥ ◆◆ ",
|
||||
"▥▥▥▥▥▥▥▥▥▥",
|
||||
"▥▥▥▥▥▥▥▥▥▥"
|
||||
)
|
||||
);
|
||||
|
||||
expectToBeJGD(
|
||||
imgSrc.autocrop(false).getJGDSync(),
|
||||
mkJGD(" ◆◆ ", " ◆▦▦◆ ", " ◆▦▦▦▦◆ ", " ◆▦▦◆ ", " ◆◆ ")
|
||||
);
|
||||
});
|
||||
|
||||
it("image without frame configured by options", async () => {
|
||||
const imgSrc = await Jimp.read(
|
||||
mkJGD(
|
||||
"▥▥ ◆◆ ",
|
||||
"▥▥ ◆▦▦◆ ",
|
||||
"▥▥ ◆▦▦▦▦◆ ",
|
||||
"▥▥ ◆▦▦◆ ",
|
||||
"▥▥ ◆◆ ",
|
||||
"▥▥▥▥▥▥▥▥▥▥",
|
||||
"▥▥▥▥▥▥▥▥▥▥"
|
||||
)
|
||||
);
|
||||
|
||||
expectToBeJGD(
|
||||
imgSrc.autocrop({ cropOnlyFrames: false }).getJGDSync(),
|
||||
mkJGD(" ◆◆ ", " ◆▦▦◆ ", " ◆▦▦▦▦◆ ", " ◆▦▦◆ ", " ◆◆ ")
|
||||
);
|
||||
});
|
||||
|
||||
it("image with symmetric border configured by options", async () => {
|
||||
const imgSrc = await Jimp.read(
|
||||
mkJGD(
|
||||
"▥▥▥▥▥▥▥▥▥▥▥▥▥▥",
|
||||
"▥▥ ◆◆ ▥▥▥▥",
|
||||
"▥▥ ◆▦▦◆ ▥▥▥▥",
|
||||
"▥▥ ◆▦▦▦▦◆ ▥▥▥▥",
|
||||
"▥▥ ◆▦▦◆ ▥▥▥▥",
|
||||
"▥▥ ◆◆ ▥▥▥▥",
|
||||
"▥▥▥▥▥▥▥▥▥▥▥▥▥▥",
|
||||
"▥▥▥▥▥▥▥▥▥▥▥▥▥▥"
|
||||
)
|
||||
);
|
||||
|
||||
expectToBeJGD(
|
||||
imgSrc.autocrop({ cropSymmetric: true }).getJGDSync(),
|
||||
mkJGD(
|
||||
" ◆◆ ▥▥",
|
||||
" ◆▦▦◆ ▥▥",
|
||||
" ◆▦▦▦▦◆ ▥▥",
|
||||
" ◆▦▦◆ ▥▥",
|
||||
" ◆◆ ▥▥",
|
||||
"▥▥▥▥▥▥▥▥▥▥"
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
it("image without frame and with symmetric border configured by options", async () => {
|
||||
const imgSrc = await Jimp.read(
|
||||
mkJGD(
|
||||
"▥▥ ◆◆ ▥▥▥▥",
|
||||
"▥▥ ◆▦▦◆ ▥▥▥▥",
|
||||
"▥▥ ◆▦▦▦▦◆ ▥▥▥▥",
|
||||
"▥▥ ◆▦▦◆ ▥▥▥▥",
|
||||
"▥▥ ◆◆ ▥▥▥▥",
|
||||
"▥▥▥▥▥▥▥▥▥▥▥▥▥▥",
|
||||
"▥▥▥▥▥▥▥▥▥▥▥▥▥▥"
|
||||
)
|
||||
);
|
||||
expectToBeJGD(
|
||||
imgSrc
|
||||
.autocrop({ cropSymmetric: true, cropOnlyFrames: false })
|
||||
.getJGDSync(),
|
||||
mkJGD(
|
||||
" ◆◆ ▥▥",
|
||||
" ◆▦▦◆ ▥▥",
|
||||
" ◆▦▦▦▦◆ ▥▥",
|
||||
" ◆▦▦◆ ▥▥",
|
||||
" ◆◆ ▥▥",
|
||||
"▥▥▥▥▥▥▥▥▥▥",
|
||||
"▥▥▥▥▥▥▥▥▥▥"
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
it("image without frame and with some border left", async () => {
|
||||
const imgSrc = await Jimp.read(
|
||||
mkJGD(
|
||||
"323232323232",
|
||||
"232323232323",
|
||||
"32 ◆◆ 32",
|
||||
"23 ◆▦▦◆ 23",
|
||||
"32 ◆▦▦▦▦◆ 32",
|
||||
"23 ◆▦▦◆ 23",
|
||||
"32 ◆◆ 32",
|
||||
"232323232323",
|
||||
"323232323232"
|
||||
)
|
||||
);
|
||||
|
||||
expectToBeJGD(
|
||||
imgSrc
|
||||
.autocrop({
|
||||
tolerance: 0.005,
|
||||
leaveBorder: 1,
|
||||
})
|
||||
.getJGDSync(),
|
||||
mkJGD(
|
||||
"3232323232",
|
||||
"2 ◆◆ 3",
|
||||
"3 ◆▦▦◆ 2",
|
||||
"2 ◆▦▦▦▦◆ 3",
|
||||
"3 ◆▦▦◆ 2",
|
||||
"2 ◆◆ 3",
|
||||
"3232323232"
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
it('image not cropped given an out of bounds "leaveBorder" value ', async () => {
|
||||
const imgSrc = await Jimp.read(
|
||||
mkJGD(
|
||||
"323232323232",
|
||||
"232323232323",
|
||||
"32 ◆◆ 32",
|
||||
"23 ◆▦▦◆ 23",
|
||||
"32 ◆▦▦▦▦◆ 32",
|
||||
"23 ◆▦▦◆ 23",
|
||||
"32 ◆◆ 32",
|
||||
"232323232323",
|
||||
"323232323232"
|
||||
)
|
||||
);
|
||||
expectToBeJGD(
|
||||
imgSrc
|
||||
.autocrop({
|
||||
tolerance: 0.005,
|
||||
leaveBorder: 100,
|
||||
})
|
||||
.getJGDSync(),
|
||||
mkJGD(
|
||||
"323232323232",
|
||||
"232323232323",
|
||||
"32 ◆◆ 32",
|
||||
"23 ◆▦▦◆ 23",
|
||||
"32 ◆▦▦▦▦◆ 32",
|
||||
"23 ◆▦▦◆ 23",
|
||||
"32 ◆◆ 32",
|
||||
"232323232323",
|
||||
"323232323232"
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
it("image with top and bottom frame and leaveBorder", async () => {
|
||||
const imgSrc = await Jimp.read(
|
||||
mkJGD(
|
||||
"▥▥▥▥▥▥▥▥",
|
||||
"▥▥▥▥▥▥▥▥",
|
||||
"▥▥▥▥▥▥▥▥",
|
||||
" ◆◆ ",
|
||||
" ◆▦▦◆ ",
|
||||
" ◆▦▦▦▦◆ ",
|
||||
" ◆▦▦◆ ",
|
||||
" ◆◆ ",
|
||||
"▥▥▥▥▥▥▥▥",
|
||||
"▥▥▥▥▥▥▥▥",
|
||||
"▥▥▥▥▥▥▥▥"
|
||||
)
|
||||
);
|
||||
expectToBeJGD(
|
||||
imgSrc
|
||||
.autocrop({
|
||||
cropSymmetric: true,
|
||||
cropOnlyFrames: false,
|
||||
leaveBorder: 2,
|
||||
})
|
||||
.getJGDSync(),
|
||||
mkJGD(
|
||||
"▥▥▥▥▥▥▥▥",
|
||||
"▥▥▥▥▥▥▥▥",
|
||||
" ◆◆ ",
|
||||
" ◆▦▦◆ ",
|
||||
" ◆▦▦▦▦◆ ",
|
||||
" ◆▦▦◆ ",
|
||||
" ◆◆ ",
|
||||
"▥▥▥▥▥▥▥▥",
|
||||
"▥▥▥▥▥▥▥▥"
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
it("ignore sides north", async () => {
|
||||
const imgSrc = await jimp.read(
|
||||
mkJGD(
|
||||
" ",
|
||||
" ◆◆ ",
|
||||
" ◆▦▦◆ ",
|
||||
" ◆▦▦▦▦◆ ",
|
||||
" ◆▦▦◆ ",
|
||||
" ◆◆ ",
|
||||
" "
|
||||
)
|
||||
);
|
||||
expectToBeJGD(
|
||||
imgSrc
|
||||
.autocrop({ cropOnlyFrames: false, ignoreSides: { north: true } })
|
||||
.getJGDSync(),
|
||||
mkJGD(" ", " ◆◆ ", " ◆▦▦◆ ", "◆▦▦▦▦◆", " ◆▦▦◆ ", " ◆◆ ")
|
||||
);
|
||||
});
|
||||
|
||||
it("ignore sides south and west", async () => {
|
||||
const imgSrc = await jimp.read(
|
||||
mkJGD(
|
||||
" ",
|
||||
" ◆◆ ",
|
||||
" ◆▦▦◆ ",
|
||||
" ◆▦▦▦▦◆ ",
|
||||
" ◆▦▦◆ ",
|
||||
" ◆◆ ",
|
||||
" "
|
||||
)
|
||||
);
|
||||
|
||||
expectToBeJGD(
|
||||
imgSrc
|
||||
.autocrop({
|
||||
cropOnlyFrames: false,
|
||||
ignoreSides: { west: true, south: true },
|
||||
})
|
||||
.getJGDSync(),
|
||||
mkJGD(
|
||||
" ◆◆ ",
|
||||
" ◆▦▦◆ ",
|
||||
" ◆▦▦▦▦◆",
|
||||
" ◆▦▦◆ ",
|
||||
" ◆◆ ",
|
||||
" "
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
it("ignore sides east", async () => {
|
||||
const imgSrc = await jimp.read(
|
||||
mkJGD(
|
||||
" ",
|
||||
" ◆◆ ",
|
||||
" ◆▦▦◆ ",
|
||||
" ◆▦▦▦▦◆ ",
|
||||
" ◆▦▦◆ ",
|
||||
" ◆◆ ",
|
||||
" "
|
||||
)
|
||||
);
|
||||
|
||||
expectToBeJGD(
|
||||
imgSrc
|
||||
.autocrop({ cropOnlyFrames: false, ignoreSides: { east: true } })
|
||||
.getJGDSync(),
|
||||
mkJGD(" ◆◆ ", " ◆▦▦◆ ", "◆▦▦▦▦◆ ", " ◆▦▦◆ ", " ◆◆ ")
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user