????

Your IP : 3.15.26.108


Current Path : C:/inetpub/vhost/invest.gdtsolutions.vn/api/node_modules/@jimp/plugin-rotate/test/
Upload File :
Current File : C:/inetpub/vhost/invest.gdtsolutions.vn/api/node_modules/@jimp/plugin-rotate/test/rotation.test.js

import { Jimp, mkJGD } from "@jimp/test-utils";
import configure from "@jimp/custom";
import blit from "@jimp/plugin-blit";
import crop from "@jimp/plugin-crop";
import resize from "@jimp/plugin-resize";

import rotate from "../src";
import { expectToBeJGD } from "@jimp/test-utils/src";

const jimp = configure({ plugins: [rotate, blit, crop, resize] }, Jimp);

describe("Rotate a image with even size", () => {
  let imgSrc = null;

  before((done) => {
    jimp
      .read(
        mkJGD(
          "▰▴▴▴▪▪▪▰",
          "▴▴▴▴▪▪▪▪",
          "▴▴▴▴▪▪▪▪",
          "▴▴▴▴▪▪▪▪",
          "▪▪▪▪▴▴▴▴",
          "▪▪▪▪▴▴▴▴",
          "▪▪▪▪▴▴▴▴",
          "▦▪▪▪▴▴▴▦"
        )
      )
      .then((imgJimp) => {
        imgSrc = imgJimp;
        done();
      })
      .catch(done);
  });

  it("1 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(1, true).getJGDSync(),
      mkJGD(
        "▰▴▴▴▪▪▪▰  ",
        "▴▴▴▴▪▪▪▪  ",
        "▴▴▴▴▪▪▪▪  ",
        "▴▴▴▴▪▪▪▪  ",
        "▪▪▪▪▴▴▴▴  ",
        "▪▪▪▪▴▴▴▴  ",
        "▪▪▪▪▴▴▴▴  ",
        "▦▪▪▪▴▴▴▦  ",
        "          ",
        "          "
      )
    );
  });

  it("91 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(91, true).getJGDSync(),
      mkJGD(
        "          ",
        "▰▪▪▪▴▴▴▦  ",
        "▪▪▪▪▴▴▴▴  ",
        "▪▪▪▪▴▴▴▴  ",
        "▪▪▪▪▴▴▴▴  ",
        "▴▴▴▴▪▪▪▪  ",
        "▴▴▴▴▪▪▪▪  ",
        "▴▴▴▴▪▪▪▪  ",
        "▰▴▴▴▪▪▪▦  ",
        "          "
      )
    );
  });

  it("30 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(30, true).getJGDSync(),
      mkJGD(
        "     ▰▰     ",
        "   ▪▪▪▪     ",
        "  ▴▪▪▪▪▪    ",
        "▴▴▴▴▪▪▪▪    ",
        "▴▴▴▴▪▪▴▴▴   ",
        "▴▴▴▴▪▴▴▴▴▴  ",
        " ▴▴▪▪▴▴▴▴▦  ",
        " ▪▪▪▪▪▴▴▴   ",
        "  ▪▪▪▪▪     ",
        "   ▪▪▪      ",
        "   ▦        ",
        "            "
      )
    );
  });

  it("45 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(45, true).getJGDSync(),
      mkJGD(
        "              ",
        "     ▰        ",
        "    ▪▪▪       ",
        "   ▪▪▪▪▪      ",
        "  ▴▴▪▪▪▪▴     ",
        " ▴▴▴▴▪▪▴▴▴    ",
        "▰▰▴▴▴▴▴▴▴▴▦   ",
        " ▴▴▴▴▪▪▴▴▴    ",
        "  ▴▴▪▪▪▪▴     ",
        "   ▪▪▪▪▪      ",
        "    ▪▪▪       ",
        "     ▦        ",
        "              ",
        "              "
      )
    );
  });

  it("60 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(60, true).getJGDSync(),
      mkJGD(
        "   ▰        ",
        "   ▪▪▪      ",
        "  ▪▪▪▪▪     ",
        " ▪▪▪▪▪▴▴▴   ",
        " ▴▴▪▪▴▴▴▴▦  ",
        "▴▴▴▴▪▴▴▴▴▴  ",
        "▴▴▴▴▪▪▴▴▴   ",
        "▴▴▴▴▪▪▪▪    ",
        "  ▴▪▪▪▪▪    ",
        "   ▪▪▪▪     ",
        "     ▦▦     ",
        "            "
      )
    );
  });

  it("90 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(90, true).getJGDSync(),
      mkJGD(
        "▰▪▪▪▴▴▴▦",
        "▪▪▪▪▴▴▴▴",
        "▪▪▪▪▴▴▴▴",
        "▪▪▪▪▴▴▴▴",
        "▴▴▴▴▪▪▪▪",
        "▴▴▴▴▪▪▪▪",
        "▴▴▴▴▪▪▪▪",
        "▰▴▴▴▪▪▪▦"
      )
    );
  });

  it("-90 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(-90, true).getJGDSync(),
      mkJGD(
        "▦▪▪▪▴▴▴▰",
        "▪▪▪▪▴▴▴▴",
        "▪▪▪▪▴▴▴▴",
        "▪▪▪▪▴▴▴▴",
        "▴▴▴▴▪▪▪▪",
        "▴▴▴▴▪▪▪▪",
        "▴▴▴▴▪▪▪▪",
        "▦▴▴▴▪▪▪▰"
      )
    );
  });

  it("120 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(120, true).getJGDSync(),
      mkJGD(
        "            ",
        "     ▴▦     ",
        "    ▴▴▴▴    ",
        "  ▪▪▴▴▴▴    ",
        "▰▪▪▪▴▴▴▴▪   ",
        "▰▪▪▪▪▴▴▪▪▪  ",
        " ▪▪▪▪▪▪▪▪▪  ",
        " ▪▪▴▴▴▪▪▪▪▦ ",
        "  ▴▴▴▴▴▪▪   ",
        "   ▴▴▴▴▪    ",
        "   ▴▴▴      ",
        "            "
      )
    );
  });

  it("135 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(135, true).getJGDSync(),
      mkJGD(
        "              ",
        "              ",
        "      ▦       ",
        "     ▴▴▴      ",
        "    ▴▴▴▴▴     ",
        "   ▪▪▴▴▴▪▪    ",
        "  ▪▪▪▪▴▪▪▪▪   ",
        " ▰▪▪▪▪▴▪▪▪▪▦  ",
        "  ▪▪▪▴▴▴▪▪▪   ",
        "   ▪▴▴▴▴▴▪    ",
        "    ▴▴▴▴▴     ",
        "     ▴▰▴      ",
        "      ▰       ",
        "              "
      )
    );
  });

  it("180 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(180, true).getJGDSync(),
      mkJGD(
        "▦▴▴▴▪▪▪▦",
        "▴▴▴▴▪▪▪▪",
        "▴▴▴▴▪▪▪▪",
        "▴▴▴▴▪▪▪▪",
        "▪▪▪▪▴▴▴▴",
        "▪▪▪▪▴▴▴▴",
        "▪▪▪▪▴▴▴▴",
        "▰▪▪▪▴▴▴▰"
      )
    );
  });

  it("225 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(225, true).getJGDSync(),
      mkJGD(
        "              ",
        "       ▦      ",
        "      ▪▪▪     ",
        "     ▪▪▪▪▪    ",
        "    ▴▪▪▪▪▴▴   ",
        "   ▴▴▴▪▪▴▴▴▴  ",
        "  ▦▴▴▴▴▴▴▴▴▰▰ ",
        "   ▴▴▴▪▪▴▴▴▴  ",
        "    ▴▪▪▪▪▴▴   ",
        "     ▪▪▪▪▪    ",
        "      ▪▪▪     ",
        "       ▰      ",
        "              ",
        "              "
      )
    );
  });

  it("270 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(270, true).getJGDSync(),
      mkJGD(
        "▦▪▪▪▴▴▴▰",
        "▪▪▪▪▴▴▴▴",
        "▪▪▪▪▴▴▴▴",
        "▪▪▪▪▴▴▴▴",
        "▴▴▴▴▪▪▪▪",
        "▴▴▴▴▪▪▪▪",
        "▴▴▴▴▪▪▪▪",
        "▦▴▴▴▪▪▪▰"
      )
    );
  });

  it("315 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(315, true).getJGDSync(),
      mkJGD(
        "      ▰       ",
        "     ▴▰▴      ",
        "    ▴▴▴▴▴     ",
        "   ▪▴▴▴▴▴▪    ",
        "  ▪▪▪▴▴▴▪▪▪   ",
        " ▦▪▪▪▪▴▪▪▪▪▰  ",
        "  ▪▪▪▪▴▪▪▪▪   ",
        "   ▪▪▴▴▴▪▪    ",
        "    ▴▴▴▴▴     ",
        "     ▴▴▴      ",
        "      ▦       ",
        "              ",
        "              ",
        "              "
      )
    );
  });

  it("360 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(360, true).getJGDSync(),
      mkJGD(
        "▰▴▴▴▪▪▪▰",
        "▴▴▴▴▪▪▪▪",
        "▴▴▴▴▪▪▪▪",
        "▴▴▴▴▪▪▪▪",
        "▪▪▪▪▴▴▴▴",
        "▪▪▪▪▴▴▴▴",
        "▪▪▪▪▴▴▴▴",
        "▦▪▪▪▴▴▴▦"
      )
    );
  });
});

describe("Rotate a image with odd size", () => {
  let imgSrc = null;
  before((done) => {
    jimp
      .read(
        mkJGD(
          "▴▴▴▦▪▪▪",
          "▴▴▴▦▪▪▪",
          "▴▴▴▦▪▪▪",
          "▦▦▦▦▦▦▦",
          "▴▴▴▦▴▴▴",
          "▴▴▴▦▴▴▴",
          "▴▴▴▦▴▴▴"
        )
      )
      .then((imgJimp) => {
        imgSrc = imgJimp;
        done();
      })
      .catch(done);
  });

  it("45 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(45, true).getJGDSync(),
      mkJGD(
        "            ",
        "     ▪      ",
        "    ▪▪▪     ",
        "   ▦▪▪▪▦    ",
        "  ▴▴▦▪▦▴▴   ",
        " ▴▴▴▴▦▴▴▴▴  ",
        "  ▴▴▦▴▦▴▴   ",
        "   ▦▴▴▴▦    ",
        "    ▴▴▴     ",
        "     ▴      ",
        "            ",
        "            "
      )
    );
  });

  it("135 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(135, true).getJGDSync(),
      mkJGD(
        "            ",
        "     ▴      ",
        "    ▴▴▴     ",
        "   ▦▴▴▴▦    ",
        "  ▪▪▦▴▦▴▴   ",
        " ▪▪▪▪▦▴▴▴▴  ",
        "  ▪▪▦▴▦▴▴   ",
        "   ▦▴▴▴▦    ",
        "    ▴▴▴     ",
        "     ▴      ",
        "            ",
        "            "
      )
    );
  });

  it("225 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(225, true).getJGDSync(),
      mkJGD(
        "            ",
        "     ▴      ",
        "    ▴▴▴     ",
        "   ▦▴▴▴▦    ",
        "  ▴▴▦▴▦▴▴   ",
        " ▴▴▴▴▦▴▴▴▴  ",
        "  ▴▴▦▪▦▴▴   ",
        "   ▦▪▪▪▦    ",
        "    ▪▪▪     ",
        "     ▪      ",
        "            ",
        "            "
      )
    );
  });

  it("315 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(315, true).getJGDSync(),
      mkJGD(
        "            ",
        "     ▴      ",
        "    ▴▴▴     ",
        "   ▦▴▴▴▦    ",
        "  ▴▴▦▴▦▪▪   ",
        " ▴▴▴▴▦▪▪▪▪  ",
        "  ▴▴▦▴▦▪▪   ",
        "   ▦▴▴▴▦    ",
        "    ▴▴▴     ",
        "     ▴      ",
        "            ",
        "            "
      )
    );
  });
});

describe("Rotate a non-square image", () => {
  let imgSrc = null;
  before((done) => {
    jimp
      .read(mkJGD("▴▴▴▴▪▪▪▪", "▴▴▴▴▪▪▪▪", "▦▦▦▦▴▴▴▴", "▦▦▦▦▴▴▴▴"))
      .then((imgJimp) => {
        imgSrc = imgJimp;
        done();
      })
      .catch(done);
  });

  it("1 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(1, true).getJGDSync(),
      mkJGD(
        "▴▴▴▴▪▪▪▪  ",
        "▴▴▴▴▪▪▪▪  ",
        "▦▦▦▦▴▴▴▴  ",
        "▦▦▦▦▴▴▴▴  ",
        "          ",
        "          "
      )
    );
  });

  it("10 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(10, true).getJGDSync(),
      mkJGD(
        "       ▪  ",
        " ▴▴▴▪▪▪▪  ",
        "▴▴▴▴▪▪▪▴  ",
        "▴▴▦▦▴▴▴▴  ",
        "▦▦▦▦▴▴▴   ",
        "▦▦        ",
        "          ",
        "          "
      )
    );
  });

  it("30 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(30, true).getJGDSync(),
      mkJGD(
        "          ",
        "     ▪▪   ",
        "   ▪▪▪▪   ",
        " ▴▴▪▪▴▴▴  ",
        "▴▴▴▦▴▴▴   ",
        "▴▴▦▦▴▴    ",
        "▦▦▦▦      ",
        " ▦        ",
        "          ",
        "          "
      )
    );
  });

  it("45 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(45, true).getJGDSync(),
      mkJGD(
        "          ",
        "    ▪▪    ",
        "   ▪▪▪▴   ",
        "  ▴▪▪▴▴▴  ",
        " ▴▴▴▴▴▴   ",
        "▴▴▴▦▦▴    ",
        "▴▴▦▦▦     ",
        " ▦▦▦      ",
        "  ▦       ",
        "          "
      )
    );
  });

  it("90 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(90, true).getJGDSync(),
      mkJGD("▪▪▴▴", "▪▪▴▴", "▪▪▴▴", "▪▪▴▴", "▴▴▦▦", "▴▴▦▦", "▴▴▦▦", "▴▴▦▦")
    );
  });

  it("-90 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(-90, true).getJGDSync(),
      mkJGD("▦▦▴▴", "▦▦▴▴", "▦▦▴▴", "▦▦▴▴", "▴▴▪▪", "▴▴▪▪", "▴▴▪▪", "▴▴▪▪")
    );
  });

  it("135 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(135, true).getJGDSync(),
      mkJGD(
        "          ",
        "   ▴      ",
        "  ▴▴▴     ",
        " ▪▪▴▴▴    ",
        " ▪▪▪▴▦▦   ",
        "  ▪▪▴▦▦▦  ",
        "   ▴▴▴▦▦▦ ",
        "    ▴▴▴▦  ",
        "     ▴▴   ",
        "          "
      )
    );
  });

  it("180 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(180, true).getJGDSync(),
      mkJGD("▴▴▴▴▦▦▦▦", "▴▴▴▴▦▦▦▦", "▪▪▪▪▴▴▴▴", "▪▪▪▪▴▴▴▴")
    );
  });

  it("225 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(225, true).getJGDSync(),
      mkJGD(
        "      ▦   ",
        "     ▦▦▦  ",
        "    ▦▦▦▴▴ ",
        "   ▴▦▦▴▴▴ ",
        "  ▴▴▴▴▴▴  ",
        " ▴▴▴▪▪▴   ",
        "  ▴▪▪▪    ",
        "   ▪▪     ",
        "          ",
        "          "
      )
    );
  });

  it("315 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(315, true).getJGDSync(),
      mkJGD(
        "  ▴▴      ",
        " ▦▴▴▴     ",
        "▦▦▦▴▴▴    ",
        " ▦▦▦▴▪▪   ",
        "  ▦▦▴▪▪▪  ",
        "   ▴▴▴▪▪  ",
        "    ▴▴▴   ",
        "     ▴    ",
        "          ",
        "          "
      )
    );
  });
  it("-180 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(-180, true).getJGDSync(),
      mkJGD("▴▴▴▴▦▦▦▦", "▴▴▴▴▦▦▦▦", "▪▪▪▪▴▴▴▴", "▪▪▪▪▴▴▴▴")
    );
  });

  it("-270 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(-270, true).getJGDSync(),
      mkJGD("▪▪▴▴", "▪▪▴▴", "▪▪▴▴", "▪▪▴▴", "▴▴▦▦", "▴▴▦▦", "▴▴▦▦", "▴▴▦▦")
    );
  });
});

describe("Rotate a non-square image without resizing", () => {
  let imgSrc = null;
  before((done) => {
    jimp
      .read(mkJGD("□□□□□□□□", "▹▹▹▹▹▹▹▹", "▿▿▿▿▿▿▿▿", "□□□□□□□□"))
      .then((imgJimp) => {
        imgSrc = imgJimp;
        done();
      })
      .catch(done);
  });

  it("90 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(90, false).getJGDSync(),
      mkJGD(" □▹▿□   ", " □▹▿□   ", " □▹▿□   ", " □▹▿□   ")
    );
  });

  it("180 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(180, false).getJGDSync(),
      mkJGD("□□□□□□□□", "▿▿▿▿▿▿▿▿", "▹▹▹▹▹▹▹▹", "□□□□□□□□")
    );
  });

  it("270 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(270, false).getJGDSync(),
      mkJGD("  □▿▹□  ", "  □▿▹□  ", "  □▿▹□  ", "  □▿▹□  ")
    );
  });

  it("45 degrees", () => {
    expectToBeJGD(
      imgSrc.clone().rotate(45, false).getJGDSync(),
      mkJGD(" □▹▹▿□□ ", "□▹▹▿□□  ", "▹▹▿□□   ", "▹▿□□    ")
    );
  });
});