This commit is contained in:
Kevin McIntyre
2025-06-18 01:00:00 -04:00
commit f84b511895
228 changed files with 42509 additions and 0 deletions

View File

@@ -0,0 +1,97 @@
"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;