"use strict";
const assert = require("assert");
const { cellValue, compareRows } = require("./index.js");
{
const row = {
dataset: { name: "foo", codediff: "3", unix_diff: "7", total_lines: "123" },
};
assert.strictEqual(cellValue(row, "name", "string"), "foo");
assert.strictEqual(cellValue(row, "codediff", "number"), 3);
assert.strictEqual(cellValue(row, "unix_diff", "number"), 7);
assert.strictEqual(cellValue(row, "total_lines", "number"), 123);
}
{
const rows = [
{ dataset: { name: "c", codediff: "1", unix_diff: "9", total_lines: "300" } },
{ dataset: { name: "a", codediff: "3", unix_diff: "1", total_lines: "100" } },
{ dataset: { name: "b", codediff: "2", unix_diff: "5", total_lines: "200" } },
];
const columns = [
["name", "string"],
["codediff", "number"],
["unix_diff", "number"],
["total_lines", "number"],
];
for (const [key, type] of columns) {
const ascending = [...rows].sort((a, b) => compareRows(a, b, key, type, true));
const ascendingValues = ascending.map((r) => cellValue(r, key, type));
const expectedAscending = [...ascendingValues].sort((a, b) =>
type === "number" ? a - b : String(a).localeCompare(String(b)),
);
assert.deepStrictEqual(
ascendingValues,
expectedAscending,
`${key} (ascending) did not sort: ${JSON.stringify(ascendingValues)}`,
);
const descending = [...rows].sort((a, b) => compareRows(a, b, key, type, false));
const descendingValues = descending.map((r) => cellValue(r, key, type));
assert.deepStrictEqual(
descendingValues,
[...expectedAscending].reverse(),
`${key} (descending) did not sort: ${JSON.stringify(descendingValues)}`,
);
}
}
console.log("index.test.js: all assertions passed");