97 lines
2.6 KiB
JavaScript
97 lines
2.6 KiB
JavaScript
"use strict";
|
|
|
|
const assert = require("assert");
|
|
const tap = require("tap");
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
const { PNG } = require("pngjs");
|
|
|
|
const expectedDir = path.join(__dirname, "expected");
|
|
|
|
function equal(obj1, obj2) {
|
|
try {
|
|
assert.deepStrictEqual(obj1, obj2);
|
|
return true;
|
|
} catch (e) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
function test(jdenticon, icon, style) {
|
|
jdenticon.configure(style);
|
|
|
|
// PNG
|
|
{
|
|
const actual = jdenticon.toPng(icon, 50);
|
|
const expected = fs.readFileSync(path.join(expectedDir, icon +".png"));
|
|
|
|
const actualDecoded = PNG.sync.read(actual);
|
|
const expectedDecoded = PNG.sync.read(expected);
|
|
|
|
if (!equal(actualDecoded, expectedDecoded)) {
|
|
actualDecoded.data = "...";
|
|
expectedDecoded.data = "...";
|
|
fs.writeFileSync(path.join(expectedDir, icon +".metadata.json"), JSON.stringify(expectedDecoded, undefined, 2));
|
|
fs.writeFileSync(path.join(expectedDir, icon +"-actual.metadata.json"), JSON.stringify(actualDecoded, undefined, 2));
|
|
fs.writeFileSync(path.join(expectedDir, icon +"-actual.png"), actual);
|
|
tap.ok(false, "Icon '" + icon + "' failed PNG test.");
|
|
}
|
|
else {
|
|
tap.ok(true);
|
|
}
|
|
}
|
|
|
|
// SVG
|
|
{
|
|
const actual = jdenticon.toSvg(icon, 50);
|
|
const expected = fs.readFileSync(path.join(expectedDir, icon +".svg"));
|
|
|
|
if (actual !== expected.toString()) {
|
|
fs.writeFileSync(path.join(expectedDir, icon + "-actual.svg"), actual);
|
|
tap.ok(false, "Icon '" + icon + "' failed SVG test.");
|
|
console.log(expected.toString());
|
|
console.log(actual);
|
|
}
|
|
else {
|
|
tap.ok(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
function testIcons(jdenticon) {
|
|
test(jdenticon, 73, {
|
|
backColor: "#fff"
|
|
});
|
|
|
|
test(jdenticon, 76, {
|
|
hues: [ 134 /*green*/, 0 /*red*/, 60 /*yellow*/ ],
|
|
lightness: {
|
|
color: [0.29, 0.53],
|
|
grayscale: [0.19, 0.40]
|
|
},
|
|
saturation: {
|
|
color: 0.45,
|
|
grayscale: 0.72
|
|
},
|
|
backColor: "#0000002a"
|
|
});
|
|
|
|
test(jdenticon, 39, {
|
|
hues: [ 134 /*green*/, 0 /*red*/, 60 /*yellow*/ ],
|
|
lightness: {
|
|
color: [0.65, 0.86],
|
|
grayscale: [0.00, 1.00]
|
|
},
|
|
saturation: {
|
|
color: 0.34,
|
|
grayscale: 0.10
|
|
},
|
|
backColor: "#ffffffff"
|
|
});
|
|
|
|
test(jdenticon, 50, {
|
|
backColor: "#fff"
|
|
});
|
|
}
|
|
|
|
module.exports = testIcons; |