2013-10-30 19:26:07 +00:00
/* 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" } ) ;
2013-12-27 03:15:16 +00:00
function normalizecsv ( x ) { return x . replace ( /\t/g , "," ) . replace ( /#{255}/g , "" ) . replace ( /"/g , "" ) . replace ( /[\n\r]+/g , "\n" ) . replace ( /\n*$/ , "" ) ; }
2013-10-30 19:26:07 +00:00
function parsetest ( x , wb ) {
describe ( x + ' should have all bits' , function ( ) {
2013-12-27 03:15:16 +00:00
var sname = './test_files/2011/' + x + '.sheetnames' ;
2013-10-30 19:26:07 +00:00
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" ;
2013-12-27 03:15:16 +00:00
assert . equal ( names , file ) ;
2013-10-30 19:26:07 +00:00
} : 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 ] ) ;
2013-12-27 03:15:16 +00:00
assert . equal ( normalizecsv ( csv ) , normalizecsv ( file ) , "CSV badness" ) ;
2013-10-30 19:26:07 +00:00
} : 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 ) ;
} ) ;
} ) ;
} ) ;
2014-01-15 07:26:00 +00:00
describe ( 'should have comment as part of cell\'s properties' , function ( ) {
2014-01-18 13:45:49 +00:00
var ws ;
before ( function ( ) {
XLSX = require ( './xlsx' ) ;
2014-01-16 03:42:25 +00:00
var wb = XLSX . readFile ( './test_files/apachepoi_SimpleWithComments.xlsx' ) ;
2014-01-15 07:26:00 +00:00
var sheetName = 'Sheet1' ;
2014-01-18 13:45:49 +00:00
ws = wb . Sheets [ sheetName ] ;
} ) ;
it ( 'Parse comments.xml and insert into cell' , function ( ) {
2014-01-15 07:26:00 +00:00
assert . equal ( ws . B1 . c . length , 1 , "must have 1 comment" ) ;
2014-01-18 13:45:49 +00:00
assert . equal ( ws . B1 . c [ 0 ] . t , "Yegor Kozlov:\r\nfirst cell" , "must have the concatenated texts" ) ;
assert . equal ( ws . B1 . c [ 0 ] . r , '<span style="font-weight: bold;">Yegor Kozlov:</span><span style=""><br/>first cell</span>' , "must have the html representation" ) ;
assert . equal ( ws . B1 . c [ 0 ] . a , "Yegor Kozlov" , "must have the same author" ) ;
2014-01-15 07:26:00 +00:00
} ) ;
} ) ;