2023-11-13 11:03:35 +00:00
|
|
|
/* eslint-env mocha, node, es6 */
|
|
|
|
const fs = require("fs"), assert = require("assert");
|
|
|
|
|
|
|
|
const DTA = require("./");
|
|
|
|
const XLSX = require("xlsx");
|
|
|
|
DTA.set_utils(XLSX.utils);
|
|
|
|
|
|
|
|
const test_folders = [
|
|
|
|
"test_files"
|
|
|
|
];
|
|
|
|
for(let tF of test_folders) describe(tF, () => {
|
|
|
|
const test_files = fs.readdirSync(tF);
|
|
|
|
for(let tf of test_files) {
|
|
|
|
if(tf.endsWith("csv")) it(`${tf.replace(".csv", "")} [CSV]`, () => {
|
|
|
|
const buf = fs.readFileSync(`${tF}/${tf.replace(".csv", "")}`);
|
|
|
|
const wb = DTA.parse(buf);
|
|
|
|
assert(wb.SheetNames.length > 0);
|
|
|
|
/* stata will represent unspecified values as single spaces */
|
2023-12-05 08:19:42 +00:00
|
|
|
//wb.Sheets[wb.SheetNames[0]]["!data"].forEach(row => row.forEach(cell => {if(cell.t == "z") {cell.t = "s"; cell.v = " ";}}));
|
2023-11-13 11:03:35 +00:00
|
|
|
const csvstr = XLSX.utils.sheet_to_csv(wb.Sheets[wb.SheetNames[0]]);
|
|
|
|
const baseline = fs.readFileSync(`${tF}/${tf}`, "utf8").replace(/[\r\n]+/g,"\n");
|
|
|
|
assert.equal(csvstr.trim(), baseline.trim());
|
|
|
|
});
|
|
|
|
if(!tf.endsWith("dta")) continue;
|
|
|
|
it(tf, () => {
|
|
|
|
const buf = fs.readFileSync(`${tF}/${tf}`);
|
|
|
|
const wb = DTA.parse(buf);
|
|
|
|
assert(wb.SheetNames.length > 0);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|