forked from sheetjs/sheetjs
SheetJS
713f5aa417
- merged test repo with xls - travis integration - shifted to Apache 2.0 LICENSE - mocha tests The shift to Apache 2.0 was long overdue. It's becoming clear that compliance requires deeper integration with the xls libraries and other implementations whose specifications are covered under the OSP. It was a grave oversight for the ISO and ECMA people to not try to implement parsers themselves, for if they did I suspect the outcome would have been much different
40 lines
1.5 KiB
JavaScript
40 lines
1.5 KiB
JavaScript
/* vim: set ts=2: */
|
|
var XLSX;
|
|
var fs = require('fs'), assert = require('assert');
|
|
describe('source', function() { it('should load', function() { XLSX = require('./'); }); });
|
|
|
|
var files = (fs.existsSync('tests.lst') ? fs.readFileSync('tests.lst', 'utf-8').split("\n") : fs.readdirSync('test_files')).filter(function(x){return x.substr(-5)==".xlsx" || x.substr(-13)==".xlsx.pending"});
|
|
|
|
function parsetest(x, wb) {
|
|
describe(x + ' should have all bits', function() {
|
|
var sname = './test_files/' + x + '.sheetnames';
|
|
it('should have all sheets', function() {
|
|
wb.SheetNames.forEach(function(y) { assert(wb.Sheets[y], 'bad sheet ' + y); });
|
|
});
|
|
it('should have the right sheet names', fs.existsSync(sname) ? function() {
|
|
var file = fs.readFileSync(sname, 'utf-8');
|
|
var names = wb.SheetNames.join("\n") + "\n";
|
|
assert.equal(file, names);
|
|
} : null);
|
|
});
|
|
describe(x + ' should generate correct output', function() {
|
|
wb.SheetNames.forEach(function(ws, i) {
|
|
var name = ('./test_files/' + x + '.' + i + '.csv');
|
|
it('#' + i + ' (' + ws + ')', fs.existsSync(name) ? function() {
|
|
var file = fs.readFileSync(name, 'utf-8');
|
|
var csv = XLSX.utils.make_csv(wb.Sheets[ws]);
|
|
assert.equal(file.replace(/"/g,""), csv.replace(/"/g,""), "CSV badness");
|
|
} : null);
|
|
});
|
|
});
|
|
}
|
|
|
|
describe('should parse test files', function() {
|
|
files.forEach(function(x) {
|
|
it(x, x.substr(-8) == ".pending" ? null : function() {
|
|
var wb = XLSX.readFile('./test_files/' + x);
|
|
parsetest(x, wb);
|
|
});
|
|
});
|
|
});
|