2013-10-30 19:26:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/* vim: set ts=2: */  
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/*jshint loopfunc:true, eqnull:true */  
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  X ;  
						 
					
						
							
								
									
										
										
										
											2014-06-29 18:29:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  modp  =  './' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//var modp = 'xlsx';
  
						 
					
						
							
								
									
										
										
										
											2013-10-30 19:26:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								var  fs  =  require ( 'fs' ) ,  assert  =  require ( 'assert' ) ;  
						 
					
						
							
								
									
										
										
										
											2014-06-29 18:29:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								describe ( 'source' , function ( ) { it ( 'should load' , function ( ) { X = require ( modp ) ; } ) ; } ) ;  
						 
					
						
							
								
									
										
										
										
											2017-04-30 16:27:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  DIF _XL  =  true ;  
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  opts  =  { cellNF :  true } ;  
						 
					
						
							
								
									
										
										
										
											2014-06-05 07:06:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( process . env . WTF )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									opts . WTF  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									opts . cellStyles  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2017-05-09 18:07:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  fullex  =  [ ".xlsb" ,  /*".xlsm",*/  ".xlsx" /*, ".xlml"*/ ] ;  
						 
					
						
							
								
									
										
										
										
											2017-04-01 07:32:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  ofmt  =  [ "xlsb" ,  "xlsm" ,  "xlsx" ,  "ods" ,  "biff2" ,  "xlml" ,  "sylk" ,  "dif" ] ;  
						 
					
						
							
								
									
										
										
										
											2017-03-10 08:39:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  ex  =  fullex . slice ( ) ;  ex  =  ex . concat ( [ ".ods" ,  ".xls" ,  ".xml" ,  ".fods" ] ) ;  
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( process . env . FMTS  ===  "full" )  process . env . FMTS  =  ex . join ( ":" ) ;  
						 
					
						
							
								
									
										
										
										
											2014-02-13 06:22:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								if ( process . env . FMTS )  ex = process . env . FMTS . split ( ":" ) . map ( function ( x ) { return  x [ 0 ] === "." ? x : "." + x ; } ) ;  
						 
					
						
							
								
									
										
										
										
											2014-02-12 06:09:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  exp  =  ex . map ( function ( x ) {  return  x  +  ".pending" ;  } ) ;  
						 
					
						
							
								
									
										
										
										
											2014-10-10 02:22:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  test _file ( x ) {  return  ex . indexOf ( x . substr ( - 5 ) ) >= 0 || exp . indexOf ( x . substr ( - 13 ) ) >= 0  ||  ex . indexOf ( x . substr ( - 4 ) ) >= 0 || exp . indexOf ( x . substr ( - 12 ) ) >= 0 ;  }  
						 
					
						
							
								
									
										
										
										
											2014-01-28 16:38:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-24 10:39:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  files  =  ( fs . existsSync ( 'tests.lst' )  ?  fs . readFileSync ( 'tests.lst' ,  'utf-8' ) . split ( "\n" ) . map ( function ( x )  {  return  x . trim ( ) ;  } )  :  fs . readdirSync ( 'test_files' ) ) . filter ( test _file ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  fileA  =  ( fs . existsSync ( 'testA.lst' )  ?  fs . readFileSync ( 'testA.lst' ,  'utf-8' ) . split ( "\n" ) . map ( function ( x )  {  return  x . trim ( ) ;  } )  :  [ ] ) . filter ( test _file ) ;  
						 
					
						
							
								
									
										
										
										
											2013-10-30 19:26:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-23 06:20:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* Excel enforces 31 character sheet limit, although technical file limit is 255 */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  fixsheetname ( x )  {  return  x . substr ( 0 , 31 ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-06-29 18:29:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  stripbom ( x )  {  return  x . replace ( /^\ufeff/ , "" ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  fixcsv ( x )  {  return  stripbom ( x ) . replace ( /\t/g , "," ) . replace ( /#{255}/g , "" ) . replace ( /"/g , "" ) . replace ( /[\n\r]+/g , "\n" ) . replace ( /\n*$/ , "" ) ;  }  
						 
					
						
							
								
									
										
										
										
											2014-05-03 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  fixjson ( x )  {  return  x . replace ( /[\r\n]+$/ , "" ) ;  }  
						 
					
						
							
								
									
										
										
										
											2013-12-27 03:15:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  dir  =  "./test_files/" ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  paths  =  {  
						 
					
						
							
								
									
										
										
										
											2017-04-10 05:10:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									afxls :   dir  +  'AutoFilter.xls' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									afxml :   dir  +  'AutoFilter.xml' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									afods :   dir  +  'AutoFilter.ods' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									afxlsx :   dir  +  'AutoFilter.xlsx' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									afxlsb :   dir  +  'AutoFilter.xlsb' , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 01:29:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									cpxls :   dir  +  'custom_properties.xls' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									cpxml :   dir  +  'custom_properties.xls.xml' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									cpxlsx :   dir  +  'custom_properties.xlsx' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									cpxlsb :   dir  +  'custom_properties.xlsb' , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 01:29:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									cssxls :  dir  +  'cell_style_simple.xls' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									cssxml :  dir  +  'cell_style_simple.xml' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									cssxlsx :  dir  +  'cell_style_simple.xlsx' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									cssxlsb :  dir  +  'cell_style_simple.xlsb' , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 01:29:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									cstxls :  dir  +  'comments_stress_test.xls' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									cstxml :  dir  +  'comments_stress_test.xls.xml' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									cstxlsx :  dir  +  'comments_stress_test.xlsx' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									cstxlsb :  dir  +  'comments_stress_test.xlsb' , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-02 06:47:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									cstods :  dir  +  'comments_stress_test.ods' , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 01:29:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									cwxls :   dir  +  'column_width.xls' , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 01:29:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									cwxls5 :   dir  +  'column_width.biff5' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									cwxml :   dir  +  'column_width.xml' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									cwxlsx :   dir  +  'column_width.xlsx' , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									cwxlsb :   dir  +  'column_width.xlsb' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									cwslk :   dir  +  'column_width.slk' , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 01:29:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-11 22:15:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									dnsxls :  dir  +  'defined_names_simple.xls' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									dnsxml :  dir  +  'defined_names_simple.xml' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									dnsxlsx :  dir  +  'defined_names_simple.xlsx' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									dnsxlsb :  dir  +  'defined_names_simple.xlsb' , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 01:29:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									dtxls :   dir  +  'xlsx-stream-d-date-cell.xls' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									dtxml :   dir  +  'xlsx-stream-d-date-cell.xls.xml' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									dtxlsx :   dir  +  'xlsx-stream-d-date-cell.xlsx' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									dtxlsb :   dir  +  'xlsx-stream-d-date-cell.xlsb' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									fstxls :  dir  +  'formula_stress_test.xls' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fstxml :  dir  +  'formula_stress_test.xls.xml' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fstxlsx :  dir  +  'formula_stress_test.xlsx' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fstxlsb :  dir  +  'formula_stress_test.xlsb' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									fstods :  dir  +  'formula_stress_test.ods' , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 01:29:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									hlxls :   dir  +  'hyperlink_stress_test_2011.xls' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									hlxml :   dir  +  'hyperlink_stress_test_2011.xml' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									hlxlsx :   dir  +  'hyperlink_stress_test_2011.xlsx' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									hlxlsb :   dir  +  'hyperlink_stress_test_2011.xlsb' , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 01:29:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									lonxls :  dir  +  'LONumbers.xls' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									lonxlsx :  dir  +  'LONumbers.xlsx' , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 01:29:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									mcxls :   dir  +  'merge_cells.xls' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									mcxml :   dir  +  'merge_cells.xls.xml' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									mcxlsx :   dir  +  'merge_cells.xlsx' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									mcxlsb :   dir  +  'merge_cells.xlsb' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									mcods :   dir  +  'merge_cells.ods' , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 01:29:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									nfxls :   dir  +  'number_format.xls' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									nfxml :   dir  +  'number_format.xls.xml' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									nfxlsx :   dir  +  'number_format.xlsm' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									nfxlsb :   dir  +  'number_format.xlsb' , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 01:29:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									pmxls :   dir  +  'page_margins_2016.xls' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									pmxls5 :  dir  +  'page_margins_2016_5.xls' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									pmxml :   dir  +  'page_margins_2016.xml' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									pmxlsx :  dir  +  'page_margins_2016.xlsx' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									pmxlsb :  dir  +  'page_margins_2016.xlsb' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									rhxls :   dir  +  'row_height.xls' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									rhxls5 :   dir  +  'row_height.biff5' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									rhxml :   dir  +  'row_height.xml' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									rhxlsx :   dir  +  'row_height.xlsx' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									rhxlsb :   dir  +  'row_height.xlsb' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									rhslk :   dir  +  'row_height.slk' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-31 18:46:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									svxls :   dir  +  'sheet_visibility.xls' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									svxls5 :  dir  +  'sheet_visibility.xls' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									svxml :   dir  +  'sheet_visibility.xml' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									svxlsx :  dir  +  'sheet_visibility.xlsx' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									svxlsb :  dir  +  'sheet_visibility.xlsb' , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 01:29:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									swcxls :  dir  +  'apachepoi_SimpleWithComments.xls' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									swcxml :  dir  +  '2011/apachepoi_SimpleWithComments.xls.xml' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									swcxlsx :  dir  +  'apachepoi_SimpleWithComments.xlsx' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									swcxlsb :  dir  +  '2013/apachepoi_SimpleWithComments.xlsx.xlsb' 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  FSTPaths  =  [ paths . fstxls ,  paths . fstxml ,  paths . fstxlsx ,  paths . fstxlsb ,  paths . fstods ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  NFPaths  =  [ paths . nfxls ,  paths . nfxml ,  paths . nfxlsx ,  paths . nfxlsb ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  DTPaths  =  [ paths . dtxls ,  paths . dtxml ,  paths . dtxlsx ,  paths . dtxlsb ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  N1  =  'XLSX' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  N2  =  'XLSB' ;  
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  N3  =  'XLS' ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  N4  =  'XML' ;  
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  parsetest ( x ,  wb ,  full ,  ext )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ext  =  ( ext  ?  " ["  +  ext  +  "]" :  "" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( ! full  &&  ext )  return ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( x  +  ext  +  ' should have all bits' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-27 21:35:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  sname  =  dir  +  '2016/'  +  x . substr ( x . lastIndexOf ( '/' ) + 1 )  +  '.sheetnames' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( ! fs . existsSync ( sname ) )  sname  =  dir  +  '2011/'  +  x . substr ( x . lastIndexOf ( '/' ) + 1 )  +  '.sheetnames' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( ! fs . existsSync ( sname ) )  sname  =  dir  +  '2013/'  +  x . substr ( x . lastIndexOf ( '/' ) + 1 )  +  '.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 ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-27 21:35:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( fs . existsSync ( sname ) )  it ( 'should have the right sheet names' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-30 01:09:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  file  =  fs . readFileSync ( sname ,  'utf-8' ) . replace ( /\r/g , "" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-23 06:20:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  names  =  wb . SheetNames . map ( fixsheetname ) . join ( "\n" )  +  "\n" ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 18:21:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if ( file . length  &&  ! x . match ( /artifacts/ ) )  assert . equal ( names ,  file ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-27 21:35:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-30 19:26:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( x  +  ext  +  ' should generate CSV' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-23 06:20:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										wb . SheetNames . forEach ( function ( ws ,  i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											it ( '#'  +  i  +  ' ('  +  ws  +  ')' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-03 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												X . utils . make _csv ( wb . Sheets [ ws ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-23 06:20:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( x  +  ext  +  ' should generate JSON' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-23 15:55:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										wb . SheetNames . forEach ( function ( ws ,  i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											it ( '#'  +  i  +  ' ('  +  ws  +  ')' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												X . utils . sheet _to _json ( wb . Sheets [ ws ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-23 15:55:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( x  +  ext  +  ' should generate formulae' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-23 15:55:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										wb . SheetNames . forEach ( function ( ws ,  i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											it ( '#'  +  i  +  ' ('  +  ws  +  ')' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-03 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												X . utils . get _formulae ( wb . Sheets [ ws ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-23 15:55:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-15 09:04:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( ! full )  return ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-03 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  getfile  =  function ( dir ,  x ,  i ,  type )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  name  =  ( dir  +  x  +  '.'  +  i  +  type ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-03 20:50:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  root  =  "" ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-10 02:22:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( x . substr ( - 5 )  ===  ".xlsb" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											root  =  x . slice ( 0 , - 5 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-03 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if ( ! fs . existsSync ( name ) )  name = ( dir  +  root  +  '.xlsx.'  +  i  +  type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( ! fs . existsSync ( name ) )  name = ( dir  +  root  +  '.xlsm.'  +  i  +  type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( ! fs . existsSync ( name ) )  name = ( dir  +  root  +  '.xls.'   +  i  +  type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( x . substr ( - 4 )  ===  ".xls" )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											root  =  x . slice ( 0 , - 4 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( ! fs . existsSync ( name ) )  name = ( dir  +  root  +  '.xlsx.'  +  i  +  type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( ! fs . existsSync ( name ) )  name = ( dir  +  root  +  '.xlsm.'  +  i  +  type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( ! fs . existsSync ( name ) )  name = ( dir  +  root  +  '.xlsb.'  +  i  +  type ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-03 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( x  +  ext  +  ' should generate correct CSV output' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-30 19:26:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										wb . SheetNames . forEach ( function ( ws ,  i )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-03 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  name  =  getfile ( dir ,  x ,  i ,  ".csv" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-27 21:35:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if ( fs . existsSync ( name ) )  it ( '#'  +  i  +  ' ('  +  ws  +  ')' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-30 19:26:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
												var  file  =  fs . readFileSync ( name ,  'utf-8' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												var  csv  =  X . utils . make _csv ( wb . Sheets [ ws ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-03 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert . equal ( fixcsv ( csv ) ,  fixcsv ( file ) ,  "CSV badness" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-27 21:35:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-30 19:26:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( x  +  ext  +  ' should generate correct JSON output' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-03 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										wb . SheetNames . forEach ( function ( ws ,  i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  rawjson  =  getfile ( dir ,  x ,  i ,  ".rawjson" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( fs . existsSync ( rawjson ) )  it ( '#'  +  i  +  ' ('  +  ws  +  ')' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  file  =  fs . readFileSync ( rawjson ,  'utf-8' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  json  =  X . utils . make _json ( wb . Sheets [ ws ] , { raw : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( JSON . stringify ( json ) ,  fixjson ( file ) ,  "JSON badness" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  jsonf  =  getfile ( dir ,  x ,  i ,  ".json" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( fs . existsSync ( jsonf ) )  it ( '#'  +  i  +  ' ('  +  ws  +  ')' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  file  =  fs . readFileSync ( jsonf ,  'utf-8' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  json  =  X . utils . make _json ( wb . Sheets [ ws ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( JSON . stringify ( json ) ,  fixjson ( file ) ,  "JSON badness" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( fs . existsSync ( dir  +  '2011/'  +  x  +  '.xml' ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									describe ( x  +  ext  +  '.xml from 2011' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should parse' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb  =  X . readFile ( dir  +  '2011/'  +  x  +  '.xml' ,  opts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-22 20:15:47 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( fs . existsSync ( dir  +  '2013/'  +  x  +  '.xlsb' ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( x  +  ext  +  '.xlsb from 2013' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-17 08:44:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should parse' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  wb  =  X . readFile ( dir  +  '2013/'  +  x  +  '.xlsb' ,  opts ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-17 08:44:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( fs . existsSync ( dir  +  x  +  '.xml'  +  ext ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									describe ( x  +  '.xml' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should parse' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb  =  X . readFile ( dir  +  x  +  '.xml' ,  opts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-30 19:26:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  wbtable  =  { } ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-30 19:26:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								describe ( 'should parse test files' ,  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									files . forEach ( function ( x )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-27 21:35:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( x . slice ( - 8 )  ==  ".pending"  ||  ! fs . existsSync ( dir  +  x ) )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( x ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  wb  =  X . readFile ( dir  +  x ,  opts ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											wbtable [ dir  +  x ]  =  wb ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-03 22:51:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											parsetest ( x ,  wb ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										fullex . forEach ( function ( ext ,  idx )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											it ( x  +  ' ['  +  ext  +  ']' ,  function ( ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb  =  wbtable [ dir  +  x ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if ( ! wb )  wb  =  X . readFile ( dir  +  x ,  opts ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-19 06:50:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												wb  =  X . read ( X . write ( wb ,  { type : "buffer" ,  bookType : ext . replace ( /\./ , "" ) } ) ,  { WTF : opts . WTF ,  cellNF :  true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												parsetest ( x ,  wb ,  ext . replace ( /\./ , "" )  !==  "xlsb" ,  ext ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-03 22:51:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-15 09:04:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									fileA . forEach ( function ( x )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-27 21:35:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( x . slice ( - 8 )  ==  ".pending"  ||  ! fs . existsSync ( dir  +  x ) )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( x ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-03 22:51:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  wb  =  X . readFile ( dir  +  x ,  { WTF : opts . wtf ,  sheetRows : 10 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											parsetest ( x ,  wb ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-30 19:26:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
									
										
										
										
											2014-01-15 07:26:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  get _cell ( ws /*:Worksheet*/ ,  addr /*:string*/ )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ! Array . isArray ( ws ) )  return  ws [ addr ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  a  =  X . utils . decode _cell ( addr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ( ws [ a . r ] || [ ] ) [ a . c ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  each _cell ( ws ,  f )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( Array . isArray ( ws ) )  ws . forEach ( function ( row )  {  if ( row )  row . forEach ( f ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  Object . keys ( ws ) . forEach ( function ( addr )  {  if ( addr [ 0 ]  ===  "!"  ||  ! ws . hasOwnProperty ( addr ) )  return ;  f ( ws [ addr ] ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-02 06:47:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* comments_stress_test family */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  check _comments ( wb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  ws0  =  wb . Sheets . Sheet2 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									assert . equal ( get _cell ( ws0 , "A1" ) . c [ 0 ] . a ,  'Author' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( get _cell ( ws0 , "A1" ) . c [ 0 ] . t ,  'Author:\nGod thinks this is good' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( get _cell ( ws0 , "C1" ) . c [ 0 ] . a ,  'Author' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( get _cell ( ws0 , "C1" ) . c [ 0 ] . t ,  'I really hope that xlsx decides not to use magic like rPr' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-02 06:47:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  ws3  =  wb . Sheets . Sheet4 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									assert . equal ( get _cell ( ws3 , "B1" ) . c [ 0 ] . a ,  'Author' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( get _cell ( ws3 , "B1" ) . c [ 0 ] . t ,  'The next comment is empty' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( get _cell ( ws3 , "B2" ) . c [ 0 ] . a ,  'Author' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( get _cell ( ws3 , "B2" ) . c [ 0 ] . t ,  '' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-02 06:47:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								describe ( 'parse options' ,  function ( )  {  
						 
					
						
							
								
									
										
										
										
											2014-02-12 06:09:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  html _cell _types  =  [ 's' ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 01:09:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  bef  =  ( function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-29 18:29:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X  =  require ( modp ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-12 06:09:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 01:09:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( typeof  before  !=  'undefined' )  before ( bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  it ( 'before' ,  bef ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'cell' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'XLSX should generate HTML by default' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb  =  X . readFile ( paths . cstxlsx ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  ws  =  wb . Sheets . Sheet1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											each _cell ( ws ,  function ( cell )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert ( html _cell _types . indexOf ( cell . t )  ===  - 1  ||  cell . h ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-13 06:22:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'XLSX should not generate HTML when requested' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb  =  X . readFile ( paths . cstxlsx ,  { cellHTML : false } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  ws  =  wb . Sheets . Sheet1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											each _cell ( ws ,  function ( cell )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert ( typeof  cell . h  ===  'undefined' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-13 06:22:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should generate formulae by default' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-26 02:27:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											FSTPaths . forEach ( function ( p )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  found  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												wb . SheetNames . forEach ( function ( s )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													var  ws  =  wb . Sheets [ s ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													each _cell ( ws ,  function ( cell )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														if ( typeof  cell . f  !==  'undefined' )  return  ( found  =  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert ( found ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-13 08:48:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should not generate formulae when requested' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-26 02:27:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											FSTPaths . forEach ( function ( p )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												var  wb  = X . readFile ( p , { cellFormula : false } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												wb . SheetNames . forEach ( function ( s )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													var  ws  =  wb . Sheets [ s ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													each _cell ( ws ,  function ( cell )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														assert ( typeof  cell . f  ===  'undefined' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-26 02:27:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should generate formatted text by default' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											FSTPaths . forEach ( function ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  found  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												wb . SheetNames . forEach ( function ( s )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													var  ws  =  wb . Sheets [ s ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													each _cell ( ws ,  function ( cell )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														if ( typeof  cell . w  !==  'undefined' )  return  ( found  =  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert ( found ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should not generate formatted text when requested' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											FSTPaths . forEach ( function ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb  = X . readFile ( p , { cellText : false } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												wb . SheetNames . forEach ( function ( s )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													var  ws  =  wb . Sheets [ s ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													each _cell ( ws ,  function ( cell )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														assert ( typeof  cell . w  ===  'undefined' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should not generate number formats by default' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											NFPaths . forEach ( function ( p )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												wb . SheetNames . forEach ( function ( s )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													var  ws  =  wb . Sheets [ s ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													each _cell ( ws ,  function ( cell )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														assert ( typeof  cell . z  ===  'undefined' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-13 08:48:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should generate number formats when requested' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											NFPaths . forEach ( function ( p )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( p ,  { cellNF :  true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												wb . SheetNames . forEach ( function ( s )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													var  ws  =  wb . Sheets [ s ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													each _cell ( ws ,  function ( cell )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														assert ( cell . t !==  'n'  ||  typeof  cell . z  !==  'undefined' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should not generate cell styles by default' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ paths . cssxlsx ,  paths . cssxlsb ,  paths . cssxls ,  paths . cssxml ] . forEach ( function ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												wb . SheetNames . forEach ( function ( s )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													var  ws  =  wb . Sheets [ s ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													each _cell ( ws ,  function ( cell )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														assert ( typeof  cell . s  ===  'undefined' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should generate cell styles when requested' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											/* TODO: XLS / XLML */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ paths . cssxlsx  /*, paths.cssxlsb, paths.cssxls, paths.cssxml*/ ] . forEach ( function ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( p ,  { cellStyles : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  found  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												wb . SheetNames . forEach ( function ( s )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													var  ws  =  wb . Sheets [ s ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													each _cell ( ws ,  function ( cell )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														if ( typeof  cell . s  !==  'undefined' )  return  ( found  =  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert ( found ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 05:26:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should not generate cell dates by default' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											DTPaths . forEach ( function ( p )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												wb . SheetNames . forEach ( function ( s )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													var  ws  =  wb . Sheets [ s ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													each _cell ( ws ,  function ( cell )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														assert ( cell . t  !==  'd' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 05:26:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should generate cell dates when requested' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											DTPaths . forEach ( function ( p )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-30 20:37:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( p ,  { cellDates :  true } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												var  found  =  false ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												wb . SheetNames . forEach ( function ( s )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													var  ws  =  wb . Sheets [ s ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													each _cell ( ws ,  function ( cell )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
														if ( cell . t  ===  'd' )  return  ( found  =  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 05:26:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert ( found ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 05:26:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									describe ( 'sheet' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should not generate sheet stubs by default' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ paths . mcxlsx ,  paths . mcxlsb ,  paths . mcods ,  paths . mcxls ,  paths . mcxml ] . forEach ( function ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( p ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert . throws ( function ( )  {  return  get _cell ( wb . Sheets . Merge ,  "A2" ) . v ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should generate sheet stubs when requested' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-15 08:19:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ paths . mcxlsx ,  paths . mcxlsb ,  paths . mcods ,  paths . mcxls ,  paths . mcxml ] . forEach ( function ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( p ,  { sheetStubs : true } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert ( get _cell ( wb . Sheets . Merge ,  "A2" ) . t  ==  'z' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-15 08:19:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should handle stub cells' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ paths . mcxlsx ,  paths . mcxlsb ,  paths . mcods ,  paths . mcxls ,  paths . mcxml ] . forEach ( function ( p )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( p ,  { sheetStubs : true } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-15 08:19:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												X . utils . sheet _to _csv ( wb . Sheets . Merge ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												X . utils . sheet _to _json ( wb . Sheets . Merge ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												X . utils . sheet _to _formulae ( wb . Sheets . Merge ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												ofmt . forEach ( function ( f )  {  X . write ( wb ,  { type : "binary" ,  bookType : f } ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 02:05:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										function  checkcells ( wb ,  A46 ,  B26 ,  C16 ,  D2 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert ( ( typeof  get _cell ( wb . Sheets . Text ,  "A46" )  !==  'undefined' )  ==  A46 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert ( ( typeof  get _cell ( wb . Sheets . Text ,  "B26" )  !==  'undefined' )  ==  B26 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert ( ( typeof  get _cell ( wb . Sheets . Text ,  "C16" )  !==  'undefined' )  ==  C16 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert ( ( typeof  get _cell ( wb . Sheets . Text ,  "D2" )   !==  'undefined' )  ==  D2 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 02:05:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-19 03:03:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should read all cells by default' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ paths . fstxlsx ,  paths . fstxlsb ,  paths . fstods ,  paths . fstxls ,  paths . fstxml ] . forEach ( function ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												checkcells ( X . readFile ( p ) ,  true ,  true ,  true ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-19 03:03:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'sheetRows n=20' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ paths . fstxlsx ,  paths . fstxlsb ,  paths . fstods ,  paths . fstxls ,  paths . fstxml ] . forEach ( function ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												checkcells ( X . readFile ( p ,  { sheetRows : 20 } ) ,  false ,  false ,  true ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-19 03:03:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'sheetRows n=10' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ paths . fstxlsx ,  paths . fstxlsb ,  paths . fstods ,  paths . fstxls ,  paths . fstxml ] . forEach ( function ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												checkcells ( X . readFile ( p ,  { sheetRows : 10 } ) ,  false ,  false ,  false ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-19 03:03:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-13 08:48:41 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-14 06:25:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'book' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'bookSheets should not generate sheets' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ paths . mcxlsx ,  paths . mcxlsb ,  paths . mcxls ,  paths . mcxml ] . forEach ( function ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( p ,  { bookSheets : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert ( typeof  wb . Sheets  ===  'undefined' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-14 06:25:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'bookProps should not generate sheets' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ paths . nfxlsx ,  paths . nfxlsb ,  paths . nfxls ,  paths . nfxml ] . forEach ( function ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( p ,  { bookProps : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert ( typeof  wb . Sheets  ===  'undefined' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-14 06:25:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'bookProps && bookSheets should not generate sheets' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ paths . lonxlsx ,  paths . lonxls ] . forEach ( function ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( p ,  { bookProps : true ,  bookSheets : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert ( typeof  wb . Sheets  ===  'undefined' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-14 06:25:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should not generate deps by default' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ paths . fstxlsx ,  paths . fstxlsb ,  paths . fstxls ,  paths . fstxml ] . forEach ( function ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( p ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert ( typeof  wb . Deps  ===  'undefined'  ||  ! ( wb . Deps  &&  wb . Deps . length > 0 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-17 08:44:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'bookDeps should generate deps (XLSX/XLSB)' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ paths . fstxlsx ,  paths . fstxlsb ] . forEach ( function ( p )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( p ,  { bookDeps : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert ( typeof  wb . Deps  !==  'undefined'  &&  wb . Deps . length  >  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  ckf  =  function ( wb ,  fields ,  exists )  {  fields . forEach ( function ( f )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert ( ( typeof  wb [ f ]  !==  'undefined' )  ==  exists ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ;  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should not generate book files by default' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  wb ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb  =  X . readFile ( paths . fstxlsx ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											ckf ( wb ,  [ 'files' ,  'keys' ] ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											wb  =  X . readFile ( paths . fstxlsb ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											ckf ( wb ,  [ 'files' ,  'keys' ] ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											wb  =  X . readFile ( paths . fstxls ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ckf ( wb ,  [ 'cfb' ] ,  false ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'bookFiles should generate book files' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  wb ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb  =  X . readFile ( paths . fstxlsx ,  { bookFiles : true } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											ckf ( wb ,  [ 'files' ,  'keys' ] ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											wb  =  X . readFile ( paths . fstxlsb ,  { bookFiles : true } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											ckf ( wb ,  [ 'files' ,  'keys' ] ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											wb  =  X . readFile ( paths . fstxls ,  { bookFiles : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ckf ( wb ,  [ 'cfb' ] ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-03 22:51:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should not generate VBA by default' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  wb  =  X . readFile ( paths . nfxlsx ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-03 22:51:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert ( typeof  wb . vbaraw  ===  'undefined' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											wb  =  X . readFile ( paths . nfxlsb ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-03 22:51:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert ( typeof  wb . vbaraw  ===  'undefined' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'bookVBA should generate vbaraw (XLSX/XLSB)' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb  =  X . readFile ( paths . nfxlsx , { bookVBA : true } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-14 12:00:33 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert ( wb . vbaraw ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											wb  =  X . readFile ( paths . nfxlsb , { bookVBA : true } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-14 12:00:33 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert ( wb . vbaraw ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-03 22:51:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-14 06:25:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								describe ( 'input formats' ,  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									it ( 'should read binary strings' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstxlsx ,  'binary' ) ,  { type :  'binary' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstxlsb ,  'binary' ) ,  { type :  'binary' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstxls ,  'binary' ) ,  { type :  'binary' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstxml ,  'binary' ) ,  { type :  'binary' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 07:29:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstods ,  'binary' ) ,  { type :  'binary' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-14 06:25:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									it ( 'should read base64 strings' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstxls ,  'base64' ) ,  { type :  'base64' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstxml ,  'base64' ) ,  { type :  'base64' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 07:29:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstods ,  'base64' ) ,  { type :  'base64' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstxlsx ,  'base64' ) ,  { type :  'base64' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstxlsb ,  'base64' ) ,  { type :  'base64' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-14 06:25:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									it ( 'should read buffers' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstxls ) ,  { type :  'buffer' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstxml ) ,  { type :  'buffer' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 07:29:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstods ) ,  { type :  'buffer' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstxlsx ) ,  { type :  'buffer' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstxlsb ) ,  { type :  'buffer' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									it ( 'should read array' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . mcxls ,  'binary' ) . split ( "" ) . map ( function ( x )  {  return  x . charCodeAt ( 0 ) ;  } ) ,  { type : 'array' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . mcxml ,  'binary' ) . split ( "" ) . map ( function ( x )  {  return  x . charCodeAt ( 0 ) ;  } ) ,  { type : 'array' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . mcxlsx ,  'binary' ) . split ( "" ) . map ( function ( x )  {  return  x . charCodeAt ( 0 ) ;  } ) ,  { type : 'array' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . mcxlsb ,  'binary' ) . split ( "" ) . map ( function ( x )  {  return  x . charCodeAt ( 0 ) ;  } ) ,  { type : 'array' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . mcods ,  'binary' ) . split ( "" ) . map ( function ( x )  {  return  x . charCodeAt ( 0 ) ;  } ) ,  { type : 'array' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									it ( 'should throw if format is unknown' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . throws ( function ( )  {  X . read ( fs . readFileSync ( paths . cstxls ) ,  { type :  'dafuq' } ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . throws ( function ( )  {  X . read ( fs . readFileSync ( paths . cstxml ) ,  { type :  'dafuq' } ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 07:29:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . throws ( function ( )  {  X . read ( fs . readFileSync ( paths . cstods ) ,  { type :  'dafuq' } ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . throws ( function ( )  {  X . read ( fs . readFileSync ( paths . cstxlsx ) ,  { type :  'dafuq' } ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . throws ( function ( )  {  X . read ( fs . readFileSync ( paths . cstxlsb ) ,  { type :  'dafuq' } ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									it ( 'should infer buffer type' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstxls ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstxml ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 07:29:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstods ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstxlsx ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( fs . readFileSync ( paths . cstxlsb ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								describe ( 'output formats' ,  function ( )  {  
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  wb1 ,  wb2 ,  wb3 ,  wb4 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 01:09:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  bef  =  ( function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 05:26:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X  =  require ( modp ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										wb1  =  X . readFile ( paths . cpxlsx ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										wb2  =  X . readFile ( paths . cpxlsb ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										wb3  =  X . readFile ( paths . cpxls ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										wb4  =  X . readFile ( paths . cpxml ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 01:09:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( typeof  before  !=  'undefined' )  before ( bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  it ( 'before' ,  bef ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									it ( 'should write binary strings' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 01:09:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( ! wb1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb1  =  X . readFile ( paths . cpxlsx ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb2  =  X . readFile ( paths . cpxlsb ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb3  =  X . readFile ( paths . cpxls ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb4  =  X . readFile ( paths . cpxml ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . write ( wb1 ,  { type :  'binary' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . write ( wb2 ,  { type :  'binary' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . write ( wb3 ,  { type :  'binary' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . write ( wb4 ,  { type :  'binary' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . read ( X . write ( wb1 ,  { type :  'binary' } ) ,  { type :  'binary' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( X . write ( wb2 ,  { type :  'binary' } ) ,  { type :  'binary' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . read ( X . write ( wb3 ,  { type :  'binary' } ) ,  { type :  'binary' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( X . write ( wb4 ,  { type :  'binary' } ) ,  { type :  'binary' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									it ( 'should write base64 strings' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . write ( wb1 ,  { type :  'base64' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . write ( wb2 ,  { type :  'base64' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . write ( wb3 ,  { type :  'base64' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . write ( wb4 ,  { type :  'base64' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . read ( X . write ( wb1 ,  { type :  'base64' } ) ,  { type :  'base64' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( X . write ( wb2 ,  { type :  'base64' } ) ,  { type :  'base64' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . read ( X . write ( wb3 ,  { type :  'base64' } ) ,  { type :  'base64' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( X . write ( wb4 ,  { type :  'base64' } ) ,  { type :  'base64' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									it ( 'should write buffers' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . write ( wb1 ,  { type :  'buffer' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . write ( wb2 ,  { type :  'buffer' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . write ( wb3 ,  { type :  'buffer' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . write ( wb4 ,  { type :  'buffer' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . read ( X . write ( wb1 ,  { type :  'buffer' } ) ,  { type :  'buffer' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( X . write ( wb2 ,  { type :  'buffer' } ) ,  { type :  'buffer' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . read ( X . write ( wb3 ,  { type :  'buffer' } ) ,  { type :  'buffer' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . read ( X . write ( wb4 ,  { type :  'buffer' } ) ,  { type :  'buffer' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									it ( 'should throw if format is unknown' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . throws ( function ( )  {  X . write ( wb1 ,  { type :  'dafuq' } ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . throws ( function ( )  {  X . write ( wb2 ,  { type :  'dafuq' } ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . throws ( function ( )  {  X . write ( wb3 ,  { type :  'dafuq' } ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . throws ( function ( )  {  X . write ( wb4 ,  { type :  'dafuq' } ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-12 06:09:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
									
										
										
										
											2014-02-14 03:39:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 18:21:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  eqarr ( a , b )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( a . length ,  b . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									a . forEach ( function ( x ,  i )  {  assert . equal ( x ,  b [ i ] ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								describe ( 'API' ,  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									it ( 'book_append_sheet' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  wb  =  X . utils . book _new ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . utils . book _append _sheet ( wb ,  X . utils . aoa _to _sheet ( [ [ 1 , 2 , 3 ] , [ 4 ] , [ 5 ] ] ) ,  "A" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . utils . book _append _sheet ( wb ,  X . utils . aoa _to _sheet ( [ [ 1 , 2 , 3 ] , [ 4 ] , [ 5 ] ] ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . utils . book _append _sheet ( wb ,  X . utils . aoa _to _sheet ( [ [ 1 , 2 , 3 ] , [ 4 ] , [ 5 ] ] ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . utils . book _append _sheet ( wb ,  X . utils . aoa _to _sheet ( [ [ 1 , 2 , 3 ] , [ 4 ] , [ 5 ] ] ) ,  "B" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . utils . book _append _sheet ( wb ,  X . utils . aoa _to _sheet ( [ [ 1 , 2 , 3 ] , [ 4 ] , [ 5 ] ] ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										eqarr ( wb . SheetNames ,  [ "A" , "Sheet1" , "Sheet2" , "B" , "Sheet3" ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  coreprop ( wb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( wb . Props . Title ,  'Example with properties' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( wb . Props . Subject ,  'Test it before you code it' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( wb . Props . Author ,  'Pony Foo' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( wb . Props . Manager ,  'Despicable Drew' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( wb . Props . Company ,  'Vector Inc' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( wb . Props . Category ,  'Quirky' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( wb . Props . Keywords ,  'example humor' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( wb . Props . Comments ,  'some comments' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( wb . Props . LastAuthor ,  'Hugues' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  custprop ( wb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( wb . Custprops [ 'I am a boolean' ] ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( wb . Custprops [ 'Date completed' ] . toISOString ( ) ,  '1967-03-09T16:30:00.000Z' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( wb . Custprops . Status ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( wb . Custprops . Counter ,  - 3.14 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  cmparr ( x ) {  for ( var  i = 1 ; i != x . length ; ++ i )  assert . deepEqual ( x [ 0 ] ,  x [ i ] ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  deepcmp ( x , y , k , m , c )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  s  =  k . indexOf ( "." ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									m  =  ( m || "" )  +  "|"  +  ( s  >  - 1  ?  k . substr ( 0 , s )  :  k ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( s  <  0 )  return  assert [ c < 0 ? 'notEqual' : 'equal' ] ( x [ k ] ,  y [ k ] ,  m ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  deepcmp ( x [ k . substr ( 0 , s ) ] , y [ k . substr ( 0 , s ) ] , k . substr ( s + 1 ) , m , c ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  styexc  =  [  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									'A2|H10|bgColor.rgb' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									'F6|H1|patternType' 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								] ;  
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  stykeys  =  [  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"patternType" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"fgColor.rgb" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"bgColor.rgb" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  diffsty ( ws ,  r1 , r2 )  {  
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  c1  =  get _cell ( ws , r1 ) . s ,  c2  =  get _cell ( ws , r2 ) . s ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									stykeys . forEach ( function ( m )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  c  =  - 1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( styexc . indexOf ( r1 + "|" + r2 + "|" + m )  >  - 1 )  c  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  if ( styexc . indexOf ( r2 + "|" + r1 + "|" + m )  >  - 1 )  c  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										deepcmp ( c1 , c2 , m , r1 + "," + r2 , c ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-28 22:03:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  hlink ( wb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  ws  =  wb . Sheets . Sheet1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									assert . equal ( get _cell ( ws ,  "A1" ) . l . Target ,  "http://www.sheetjs.com" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( get _cell ( ws ,  "A2" ) . l . Target ,  "http://oss.sheetjs.com" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( get _cell ( ws ,  "A3" ) . l . Target ,  "http://oss.sheetjs.com#foo" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( get _cell ( ws ,  "A4" ) . l . Target ,  "mailto:dev@sheetjs.com" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( get _cell ( ws ,  "A5" ) . l . Target ,  "mailto:dev@sheetjs.com?subject=hyperlink" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( get _cell ( ws ,  "A6" ) . l . Target ,  "../../sheetjs/Documents/Test.xlsx" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( get _cell ( ws ,  "A7" ) . l . Target ,  "http://sheetjs.com" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( get _cell ( ws ,  "A7" ) . l . Tooltip ,  "foo bar baz" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-28 22:03:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-17 02:28:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  check _margin ( margins ,  exp )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( margins . left ,  exp [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( margins . right ,  exp [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( margins . top ,  exp [ 2 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( margins . bottom ,  exp [ 3 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( margins . header ,  exp [ 4 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									assert . equal ( margins . footer ,  exp [ 5 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
										
											2017-03-28 22:03:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								describe ( 'parse features' ,  function ( )  {  
						 
					
						
							
								
									
										
										
										
											2017-03-31 18:46:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'sheet visibility' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  wb1 ,  wb2 ,  wb3 ,  wb4 ,  wb5 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  bef  =  ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb1  =  X . readFile ( paths . svxls ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb2  =  X . readFile ( paths . svxls5 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb3  =  X . readFile ( paths . svxml ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb4  =  X . readFile ( paths . svxlsx ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb5  =  X . readFile ( paths . svxlsb ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( typeof  before  !=  'undefined' )  before ( bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  it ( 'before' ,  bef ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 02:05:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-31 18:46:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should detect visible sheets' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ wb1 ,  wb2 ,  wb3 ,  wb4 ,  wb5 ] . forEach ( function ( wb )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert ( ! wb . Workbook . Sheets [ 0 ] . Hidden ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should detect all hidden sheets' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ wb1 ,  wb2 ,  wb3 ,  wb4 ,  wb5 ] . forEach ( function ( wb )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert ( wb . Workbook . Sheets [ 1 ] . Hidden ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert ( wb . Workbook . Sheets [ 2 ] . Hidden ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should distinguish very hidden sheets' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ wb1 ,  wb2 ,  wb3 ,  wb4 ,  wb5 ] . forEach ( function ( wb )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( wb . Workbook . Sheets [ 1 ] . Hidden , 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( wb . Workbook . Sheets [ 2 ] . Hidden , 2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									describe ( 'comments' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( fs . existsSync ( paths . swcxlsx ) )  it ( 'should have comment as part of cell properties' ,  function ( ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  X  =  require ( modp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  sheet  =  'Sheet1' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb1 = X . readFile ( paths . swcxlsx ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb2 = X . readFile ( paths . swcxlsb ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb3 = X . readFile ( paths . swcxls ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb4 = X . readFile ( paths . swcxml ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ wb1 , wb2 , wb3 , wb4 ] . map ( function ( wb )  {  return  wb . Sheets [ sheet ] ;  } ) . forEach ( function ( ws ,  i )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert . equal ( get _cell ( ws ,  "B1" ) . c . length ,  1 , "must have 1 comment" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( get _cell ( ws ,  "B1" ) . c [ 0 ] . a ,  "Yegor Kozlov" , "must have the same author" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( get _cell ( ws ,  "B1" ) . c [ 0 ] . t ,  "Yegor Kozlov:\nfirst cell" ,  "must have the concatenated texts" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-31 18:46:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if ( i  >  0 )  return ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert . equal ( get _cell ( ws ,  "B1" ) . c [ 0 ] . r ,  '<r><rPr><b/><sz val="8"/><color indexed="81"/><rFont val="Tahoma"/></rPr><t>Yegor Kozlov:</t></r><r><rPr><sz val="8"/><color indexed="81"/><rFont val="Tahoma"/></rPr><t xml:space="preserve">\r\nfirst cell</t></r>' ,  "must have the rich text representation" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-20 03:24:48 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert . equal ( get _cell ( ws ,  "B1" ) . c [ 0 ] . h ,  '<span style="font-size:8;"><b>Yegor Kozlov:</b></span><span style="font-size:8;"><br/>first cell</span>' ,  "must have the html representation" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-31 18:46:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-02 06:47:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										[ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlsx' ,  paths . cstxlsx ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlsb' ,  paths . cstxlsb ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xls' ,  paths . cstxls ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlml' ,  paths . cstxml ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'ods' ,  paths . cstods ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										] . forEach ( function ( m )  {  it ( m [ 0 ]  +  ' stress test' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb  =  X . readFile ( m [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											check _comments ( wb ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  ws0  =  wb . Sheets . Sheet2 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert . equal ( get _cell ( ws0 , "A1" ) . c [ 0 ] . a ,  'Author' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( get _cell ( ws0 , "A1" ) . c [ 0 ] . t ,  'Author:\nGod thinks this is good' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( get _cell ( ws0 , "C1" ) . c [ 0 ] . a ,  'Author' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( get _cell ( ws0 , "C1" ) . c [ 0 ] . t ,  'I really hope that xlsx decides not to use magic like rPr' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-02 06:47:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-14 03:39:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 03:15:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-02-19 03:03:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'should parse core properties and custom properties' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-18 23:25:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  wb1 ,  wb2 ,  wb3 ,  wb4 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 01:09:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  bef  =  ( function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											wb1  =  X . readFile ( paths . cpxlsx ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb2  =  X . readFile ( paths . cpxlsb ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb3  =  X . readFile ( paths . cpxls ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb4  =  X . readFile ( paths . cpxml ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 05:08:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 01:09:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( typeof  before  !=  'undefined' )  before ( bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  it ( 'before' ,  bef ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 02:05:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( N1  +  ' should parse core properties' ,  function ( )  {  coreprop ( wb1 ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( N2  +  ' should parse core properties' ,  function ( )  {  coreprop ( wb2 ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( N3  +  ' should parse core properties' ,  function ( )  {  coreprop ( wb3 ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( N4  +  ' should parse core properties' ,  function ( )  {  coreprop ( wb4 ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( N1  +  ' should parse custom properties' ,  function ( )  {  custprop ( wb1 ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( N2  +  ' should parse custom properties' ,  function ( )  {  custprop ( wb2 ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( N3  +  ' should parse custom properties' ,  function ( )  {  custprop ( wb3 ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( N4  +  ' should parse custom properties' ,  function ( )  {  custprop ( wb4 ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 03:15:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-19 03:03:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									describe ( 'sheetRows' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should use original range if not set' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 02:05:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  opts  =  { } ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  wb1  =  X . readFile ( paths . fstxlsx ,  opts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb2  =  X . readFile ( paths . fstxlsb ,  opts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb3  =  X . readFile ( paths . fstxls ,  opts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb4  =  X . readFile ( paths . fstxml ,  opts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ wb1 ,  wb2 ,  wb3 ,  wb4 ] . forEach ( function ( wb )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 02:05:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert . equal ( wb . Sheets . Text [ "!ref" ] , "A1:F49" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-19 03:03:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should adjust range if set' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 02:05:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  opts  =  { sheetRows : 10 } ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  wb1  =  X . readFile ( paths . fstxlsx ,  opts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb2  =  X . readFile ( paths . fstxlsb ,  opts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb3  =  X . readFile ( paths . fstxls ,  opts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb4  =  X . readFile ( paths . fstxml ,  opts ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 07:29:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  wb5  =  X . readFile ( paths . fstods ,  opts ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											/* TODO */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 07:29:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ wb1 ,  wb2  /*, wb3, wb4, wb5 */ ] . forEach ( function ( wb )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 02:05:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert . equal ( wb . Sheets . Text [ "!fullref" ] , "A1:F49" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( wb . Sheets . Text [ "!ref" ] , "A1:F10" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-19 03:03:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should not generate comment cells' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 02:05:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  opts  =  { sheetRows : 10 } ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  wb1  =  X . readFile ( paths . cstxlsx ,  opts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb2  =  X . readFile ( paths . cstxlsb ,  opts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb3  =  X . readFile ( paths . cstxls ,  opts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb4  =  X . readFile ( paths . cstxml ,  opts ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 07:29:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  wb5  =  X . readFile ( paths . cstods ,  opts ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											/* TODO */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 07:29:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ wb1 ,  wb2  /*, wb3, wb4, wb5 */ ] . forEach ( function ( wb )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 02:05:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert . equal ( wb . Sheets . Sheet7 [ "!fullref" ] , "A1:N34" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-03 18:51:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert . equal ( wb . Sheets . Sheet7 [ "!ref" ] , "A1" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 02:05:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-19 03:03:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-23 21:30:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-20 09:02:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'column properties' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  wb1 ,  wb2 ,  wb3 ,  wb4 ,  wb5 ,  wb6 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-20 09:02:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  bef  =  ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											X  =  require ( modp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb1  =  X . readFile ( paths . cwxlsx ,  { cellStyles : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb2  =  X . readFile ( paths . cwxlsb ,  { cellStyles : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb3  =  X . readFile ( paths . cwxls ,  { cellStyles : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb4  =  X . readFile ( paths . cwxls5 ,  { cellStyles : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb5  =  X . readFile ( paths . cwxml ,  { cellStyles : true } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											wb6  =  X . readFile ( paths . cwslk ,  { cellStyles : true } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-20 09:02:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( typeof  before  !=  'undefined' )  before ( bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  it ( 'before' ,  bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should have "!cols"' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ wb1 ,  wb2 ,  wb3 ,  wb4 ,  wb5 ,  wb6 ] . forEach ( function ( wb )  {  assert ( wb . Sheets . Sheet1 [ '!cols' ] ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-20 09:02:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should have correct widths' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											/* SYLK rounds wch so skip non-integral */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-20 09:02:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ wb1 ,  wb2 ,  wb3 ,  wb4 ,  wb5 ] . map ( function ( x )  {  return  x . Sheets . Sheet1 [ '!cols' ] ;  } ) . forEach ( function ( x )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( x [ 1 ] . width ,  0.1640625 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( x [ 2 ] . width ,  16.6640625 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( x [ 3 ] . width ,  1.6640625 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ wb1 ,  wb2 ,  wb3 ,  wb4 ,  wb5 ,  wb6 ] . map ( function ( x )  {  return  x . Sheets . Sheet1 [ '!cols' ] ;  } ) . forEach ( function ( x )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-20 09:02:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert . equal ( x [ 4 ] . width ,  4.83203125 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( x [ 5 ] . width ,  8.83203125 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( x [ 6 ] . width ,  12.83203125 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( x [ 7 ] . width ,  16.83203125 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should have correct pixels' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											/* SYLK rounds wch so skip non-integral */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-20 09:02:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ wb1 ,  wb2 ,  wb3 ,  wb4 ,  wb5 ] . map ( function ( x )  {  return  x . Sheets . Sheet1 [ '!cols' ] ;  } ) . forEach ( function ( x )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( x [ 1 ] . wpx ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( x [ 2 ] . wpx ,  100 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( x [ 3 ] . wpx ,  10 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ wb1 ,  wb2 ,  wb3 ,  wb4 ,  wb5 ,  wb6 ] . map ( function ( x )  {  return  x . Sheets . Sheet1 [ '!cols' ] ;  } ) . forEach ( function ( x )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-20 09:02:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert . equal ( x [ 4 ] . wpx ,  29 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( x [ 5 ] . wpx ,  53 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( x [ 6 ] . wpx ,  77 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( x [ 7 ] . wpx ,  101 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'row properties' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  wb1 ,  wb2 ,  wb3 ,  wb4 ,  wb5 ,  wb6 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  bef  =  ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											X  =  require ( modp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb1  =  X . readFile ( paths . rhxlsx ,  { cellStyles : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb2  =  X . readFile ( paths . rhxlsb ,  { cellStyles : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb3  =  X . readFile ( paths . rhxls ,  { cellStyles : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb4  =  X . readFile ( paths . rhxls5 ,  { cellStyles : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb5  =  X . readFile ( paths . rhxml ,  { cellStyles : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb6  =  X . readFile ( paths . rhslk ,  { cellStyles : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( typeof  before  !=  'undefined' )  before ( bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  it ( 'before' ,  bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should have "!rows"' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ wb1 ,  wb2 ,  wb3 ,  wb4 ,  wb5 ,  wb6 ] . forEach ( function ( wb )  {  assert ( wb . Sheets . Sheet1 [ '!rows' ] ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should have correct points' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ wb1 ,  wb2 ,  wb3 ,  wb4 ,  wb5 ,  wb6 ] . map ( function ( x )  {  return  x . Sheets . Sheet1 [ '!rows' ] ;  } ) . forEach ( function ( x )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( x [ 1 ] . hpt ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( x [ 2 ] . hpt ,  10 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( x [ 3 ] . hpt ,  100 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should have correct pixels' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ wb1 ,  wb2 ,  wb3 ,  wb4 ,  wb5 ,  wb6 ] . map ( function ( x )  {  return  x . Sheets . Sheet1 [ '!rows' ] ;  } ) . forEach ( function ( x )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												/* note: at 96 PPI hpt == hpx */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( x [ 1 ] . hpx ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( x [ 2 ] . hpx ,  10 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( x [ 3 ] . hpx ,  100 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-23 21:30:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'merge cells' , function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 01:09:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  wb1 ,  wb2 ,  wb3 ,  wb4 ,  wb5 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  bef  =  ( function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-29 18:29:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											X  =  require ( modp ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											wb1  =  X . readFile ( paths . mcxlsx ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb2  =  X . readFile ( paths . mcxlsb ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb3  =  X . readFile ( paths . mcods ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb4  =  X . readFile ( paths . mcxls ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb5  =  X . readFile ( paths . mcxml ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-23 21:30:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 01:09:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( typeof  before  !=  'undefined' )  before ( bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  it ( 'before' ,  bef ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-23 21:30:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should have !merges' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert ( wb1 . Sheets . Merge [ '!merges' ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert ( wb2 . Sheets . Merge [ '!merges' ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 05:26:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert ( wb3 . Sheets . Merge [ '!merges' ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert ( wb4 . Sheets . Merge [ '!merges' ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert ( wb5 . Sheets . Merge [ '!merges' ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  m  =  [ wb1 ,  wb2 ,  wb3 ,  wb4 ,  wb5 ] . map ( function ( x )  {  return  x . Sheets . Merge [ '!merges' ] . map ( function ( y )  {  return  X . utils . encode _range ( y ) ;  } ) ; } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-23 21:30:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert . deepEqual ( m [ 0 ] . sort ( ) , m [ 1 ] . sort ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 05:26:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert . deepEqual ( m [ 0 ] . sort ( ) , m [ 2 ] . sort ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert . deepEqual ( m [ 0 ] . sort ( ) , m [ 3 ] . sort ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . deepEqual ( m [ 0 ] . sort ( ) , m [ 4 ] . sort ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-23 21:30:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-04-15 09:04:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'should find hyperlinks' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 01:09:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  wb1 ,  wb2 ,  wb3 ,  wb4 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  bef  =  ( function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-29 18:29:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											X  =  require ( modp ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											wb1  =  X . readFile ( paths . hlxlsx ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb2  =  X . readFile ( paths . hlxlsb ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb3  =  X . readFile ( paths . hlxls ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb4  =  X . readFile ( paths . hlxml ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-15 09:04:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 01:09:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( typeof  before  !=  'undefined' )  before ( bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  it ( 'before' ,  bef ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-15 09:04:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( N1 ,  function ( )  {  hlink ( wb1 ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( N2 ,  function ( )  {  hlink ( wb2 ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( N3 ,  function ( )  {  hlink ( wb3 ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( N4 ,  function ( )  {  hlink ( wb4 ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-04-15 09:04:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'should parse cells with date type (XLSX/XLSM)' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 05:26:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'Must have read the date' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb ,  ws ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  sheetName  =  'Sheet1' ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											wb  =  X . readFile ( paths . dtxlsx ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											ws  =  wb . Sheets [ sheetName ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  sheet  =  X . utils . sheet _to _json ( ws ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert . equal ( sheet [ 3 ] [ 'てすと' ] ,  '2/14/14' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 05:26:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'cellDates should not affect formatted text' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb1 ,  ws1 ,  wb2 ,  ws2 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  sheetName  =  'Sheet1' ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											wb1  =  X . readFile ( paths . dtxlsx ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 05:26:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											ws1  =  wb1 . Sheets [ sheetName ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											wb2  =  X . readFile ( paths . dtxlsb ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 05:26:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											ws2  =  wb2 . Sheets [ sheetName ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( X . utils . sheet _to _csv ( ws1 ) , X . utils . sheet _to _csv ( ws2 ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 22:53:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-21 20:44:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'cellDates' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  fmts  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											/* desc     path        sheet     cell   formatted */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'XLSX' ,  paths . dtxlsx ,  'Sheet1' ,   'B5' ,   '2/14/14' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'XLSB' ,  paths . dtxlsb ,  'Sheet1' ,   'B5' ,   '2/14/14' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'XLS' ,   paths . dtxls ,   'Sheet1' ,   'B5' ,   '2/14/14' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'XLML' ,  paths . dtxml ,   'Sheet1' ,   'B5' ,   '2/14/14' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'XLSM' ,  paths . nfxlsx ,  'Implied' ,  'B13' ,  '18-Oct-33' ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should not generate date cells by default' ,  function ( )  {  fmts . forEach ( function ( f )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb ,  ws ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb  =  X . readFile ( f [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ws  =  wb . Sheets [ f [ 2 ] ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert . equal ( get _cell ( ws ,  f [ 3 ] ) . w ,  f [ 4 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( get _cell ( ws ,  f [ 3 ] ) . t ,  'n' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-21 20:44:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should generate date cells if cellDates is true' ,  function ( )  {  fmts . forEach ( function ( f )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb ,  ws ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb  =  X . readFile ( f [ 1 ] ,  { cellDates : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ws  =  wb . Sheets [ f [ 2 ] ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert . equal ( get _cell ( ws ,  f [ 3 ] ) . w ,  f [ 4 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( get _cell ( ws ,  f [ 3 ] ) . t ,  'd' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-21 20:44:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-11 22:15:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'defined names' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											/* desc     path        cmnt */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlsx' ,  paths . dnsxlsx ,   true ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlsb' ,  paths . dnsxlsb ,   true ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xls' ,   paths . dnsxls ,    true ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlml' ,  paths . dnsxml ,   false ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										] . forEach ( function ( m )  {  it ( m [ 0 ] ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb  =  X . readFile ( m [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  names  =  wb . Workbook . Names ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for ( var  i  =  0 ;  i  <  names . length ;  ++ i )  if ( names [ i ] . Name  ==  "SheetJS" )  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert ( i  <  names . length ,  "Missing name" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( names [ i ] . Sheet ,  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( names [ i ] . Ref ,  "Sheet1!$A$1" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( m [ 2 ] )  assert . equal ( names [ i ] . Comment ,  "defined names just suck  excel formulae are bad  MS should feel bad" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for ( i  =  0 ;  i  <  names . length ;  ++ i )  if ( names [ i ] . Name  ==  "SHEETjs" )  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert ( i  <  names . length ,  "Missing name" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( names [ i ] . Sheet ,  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( names [ i ] . Ref ,  "Sheet1!$A$2" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-10 05:10:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'auto filter' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlsx' ,  paths . afxlsx ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlsb' ,  paths . afxlsb ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xls' ,  paths . afxls ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlml' ,  paths . afxml ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'ods' ,  paths . afods ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										] . forEach ( function ( m )  {  it ( m [ 0 ] ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb  =  X . readFile ( m [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert ( wb . Sheets [ wb . SheetNames [ 0 ] ] [ '!autofilter' ]  ==  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for ( var  i  =  1 ;  i  <  wb . SheetNames . length ;  ++ i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert ( wb . Sheets [ wb . SheetNames [ i ] ] [ '!autofilter' ]  !=  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( wb . Sheets [ wb . SheetNames [ i ] ] [ '!autofilter' ] . ref , "A1:E22" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 18:28:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'HTML' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  ws ,  wb ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  bef  =  ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ws  =  X . utils . aoa _to _sheet ( [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												[ "a" , "b" , "c" ] , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-16 04:32:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												[ "&" , "<" , ">" , "\n" ] 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 18:28:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb  =  { SheetNames : [ "Sheet1" ] , Sheets : { Sheet1 : ws } } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( typeof  before  !=  'undefined' )  before ( bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  it ( 'before' ,  bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[ 'xlsx' ] . forEach ( function ( m )  {  it ( m ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb2  =  X . read ( X . write ( wb ,  { bookType : m ,  type : "binary" } ) , { type : "binary" ,  cellHTML : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( get _cell ( wb2 . Sheets . Sheet1 ,  "A2" ) . h ,  "&" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( get _cell ( wb2 . Sheets . Sheet1 ,  "B2" ) . h ,  "<" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( get _cell ( wb2 . Sheets . Sheet1 ,  "C2" ) . h ,  ">" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-16 04:32:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert . equal ( get _cell ( wb2 . Sheets . Sheet1 ,  "D2" ) . h ,  "
" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 18:28:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 01:29:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'page margins' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  wb1 ,  wb2 ,  wb3 ,  wb4 ,  wb5 ,  wbs ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  bef  =  ( function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-24 10:39:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if ( ! fs . existsSync ( paths . pmxls ) )  return  wbs = [ ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 01:29:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											wb1  =  X . readFile ( paths . pmxls ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb2  =  X . readFile ( paths . pmxls5 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb3  =  X . readFile ( paths . pmxml ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb4  =  X . readFile ( paths . pmxlsx ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb5  =  X . readFile ( paths . pmxlsb ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wbs  =  [ wb1 ,  wb2 ,  wb3 ,  wb4 ,  wb5 ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( typeof  before  !=  'undefined' )  before ( bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  it ( 'before' ,  bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should parse normal margin' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wbs . forEach ( function ( wb )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												check _margin ( wb . Sheets [ "Normal" ] [ "!margins" ] ,  [ 0.7 ,  0.7 ,  0.75 ,  0.75 ,  0.3 ,  0.3 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should parse wide margins ' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wbs . forEach ( function ( wb )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												check _margin ( wb . Sheets [ "Wide" ] [ "!margins" ] ,  [ 1 ,  1 ,  1 ,  1 ,  0.5 ,  0.5 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should parse narrow margins ' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wbs . forEach ( function ( wb )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												check _margin ( wb . Sheets [ "Narrow" ] [ "!margins" ] ,  [ 0.25 ,  0.25 ,  0.75 ,  0.75 ,  0.3 ,  0.3 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should parse custom margins ' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wbs . forEach ( function ( wb )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												check _margin ( wb . Sheets [ "Custom 1 Inch Centered" ] [ "!margins" ] ,  [ 1 ,  1 ,  1 ,  1 ,  0.3 ,  0.3 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												check _margin ( wb . Sheets [ "1 Inch HF" ] [ "!margins" ] ,  [ 0.7 ,  0.7 ,  0.75 ,  0.75 ,  1 ,  1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'should correctly handle styles' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  wsxls ,  wsxlsx ,  rn ,  rn2 ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 01:09:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  bef  =  ( function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											wsxls = X . readFile ( paths . cssxls ,  { cellStyles : true , WTF : 1 } ) . Sheets . Sheet1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wsxlsx = X . readFile ( paths . cssxlsx ,  { cellStyles : true , WTF : 1 } ) . Sheets . Sheet1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											rn  =  function ( range )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  r  =  X . utils . decode _range ( range ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  out  =  [ ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												for ( var  R  =  r . s . r ;  R  <=  r . e . r ;  ++ R )  for ( var  C  =  r . s . c ;  C  <=  r . e . c ;  ++ C ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													out . push ( X . utils . encode _cell ( { c : C , r : R } ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  out ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											rn2  =  function ( r )  {  return  [ ] . concat . apply ( [ ] ,  r . split ( "," ) . map ( rn ) ) ;  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 01:09:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( typeof  before  !=  'undefined' )  before ( bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  it ( 'before' ,  bef ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  ranges  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'A1:D1,F1:G1' ,  'A2:D2,F2:G2' ,  /* rows */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'A3:A10' ,  'B3:B10' ,  'E1:E10' ,  'F6:F8' ,  /* cols */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'H1:J4' ,  'H10'  /* blocks */ 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-02 05:19:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  exp  =  [ 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-19 06:50:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											{  patternType :  'darkHorizontal' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											  fgColor :  {  theme :  9 ,  raw _rgb :  'F79646'  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											  bgColor :  {  theme :  5 ,  raw _rgb :  'C0504D'  }  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{  patternType :  'darkUp' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											  fgColor :  {  theme :  3 ,  raw _rgb :  'EEECE1'  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											  bgColor :  {  theme :  7 ,  raw _rgb :  '8064A2'  }  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{  patternType :  'darkGray' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											  fgColor :  {  theme :  3 ,  raw _rgb :  'EEECE1'  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											  bgColor :  {  theme :  1 ,  raw _rgb :  'FFFFFF'  }  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{  patternType :  'lightGray' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											  fgColor :  {  theme :  6 ,  raw _rgb :  '9BBB59'  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											  bgColor :  {  theme :  2 ,  raw _rgb :  '1F497D'  }  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{  patternType :  'lightDown' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											  fgColor :  {  theme :  4 ,  raw _rgb :  '4F81BD'  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											  bgColor :  {  theme :  7 ,  raw _rgb :  '8064A2'  }  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{  patternType :  'lightGrid' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											  fgColor :  {  theme :  6 ,  raw _rgb :  '9BBB59'  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											  bgColor :  {  theme :  9 ,  raw _rgb :  'F79646'  }  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{  patternType :  'lightGrid' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											  fgColor :  {  theme :  4 ,  raw _rgb :  '4F81BD'  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											  bgColor :  {  theme :  2 ,  raw _rgb :  '1F497D'  }  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{  patternType :  'lightVertical' , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											  fgColor :  {  theme :  3 ,  raw _rgb :  'EEECE1'  } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											  bgColor :  {  theme :  7 ,  raw _rgb :  '8064A2'  }  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										] ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ranges . forEach ( function ( rng )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											it ( 'XLS  | '  +  rng , function ( ) { cmparr ( rn2 ( rng ) . map ( function ( x ) {  return  get _cell ( wsxls , x ) . s ;  } ) ) ; } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											it ( 'XLSX | '  +  rng , function ( ) { cmparr ( rn2 ( rng ) . map ( function ( x ) {  return  get _cell ( wsxlsx , x ) . s ;  } ) ) ; } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'different styles' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for ( var  i  =  0 ;  i  !=  ranges . length - 1 ;  ++ i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												for ( var  j  =  i + 1 ;  j  !=  ranges . length ;  ++ j )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
													diffsty ( wsxlsx ,  rn2 ( ranges [ i ] ) [ 0 ] ,  rn2 ( ranges [ j ] ) [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													/* TODO */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													//diffsty(wsxls, rn2(ranges[i])[0], rn2(ranges[j])[0]);
 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-02 05:19:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'correct styles' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  stylesxls  =  ranges . map ( function ( r )  {  return  rn2 ( r ) [ 0 ] ;  } ) . map ( function ( r )  {  return  get _cell ( wsxls , r ) . s ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  stylesxlsx  =  ranges . map ( function ( r )  {  return  rn2 ( r ) [ 0 ] ;  } ) . map ( function ( r )  {  return  get _cell ( wsxlsx , r ) . s ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-02 05:19:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											for ( var  i  =  0 ;  i  !=  exp . length ;  ++ i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												[ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													"fgColor.theme" , "fgColor.raw_rgb" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													"bgColor.theme" , "bgColor.raw_rgb" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													"patternType" 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												] . forEach ( function ( k )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													deepcmp ( exp [ i ] ,  stylesxlsx [ i ] ,  k ,  i  +  ":" + k ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													/* TODO */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													//deepcmp(exp[i], stylesxls[i], k, i + ":"+k);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-02 05:19:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-02-15 03:15:10 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
									
										
										
										
											2014-03-29 02:05:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-10 05:10:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								describe ( 'write features' ,  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									describe ( 'props' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										describe ( 'core' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  ws ,  baseprops ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  bef  =  ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												X  =  require ( modp ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												ws  =  X . utils . aoa _to _sheet ( [ [ "a" , "b" , "c" ] , [ 1 , 2 , 3 ] ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												baseprops  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													Category :  "C4tegory" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													ContentStatus :  "C0ntentStatus" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													Keywords :  "K3ywords" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													LastAuthor :  "L4stAuthor" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													LastPrinted :  "L4stPrinted" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													RevNumber :  6969 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													AppVersion :  69 , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													Author :  "4uth0r" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													Comments :  "C0mments" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													Identifier :  "1d" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													Language :  "L4nguage" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													Subject :  "Subj3ct" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													Title :  "T1tle" 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 07:08:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												} ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-10 05:10:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( typeof  before  !=  'undefined' )  before ( bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else  it ( 'before' ,  bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlml' ,  'xlsx' ,  'xlsb' ] . forEach ( function ( w )  {  it ( w ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												wb  =  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													Props :  { } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													SheetNames :  [ "Sheet1" ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													Sheets :  { Sheet1 :  ws } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Object . keys ( baseprops ) . forEach ( function ( k )  {  wb . Props [ k ]  =  baseprops [ k ] ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb2  =  X . read ( X . write ( wb ,  { bookType : w ,  type : "buffer" } ) ,  { type : "buffer" } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												Object . keys ( baseprops ) . forEach ( function ( k )  {  assert . equal ( baseprops [ k ] ,  wb2 . Props [ k ] ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb3  =  X . read ( X . write ( wb2 ,  { bookType : w ,  type : "buffer" ,  Props :  { Author : "SheetJS" } } ) ,  { type : "buffer" } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( "SheetJS" ,  wb3 . Props . Author ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-16 04:32:13 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'HTML' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should use `h` value when present' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  sheet  =  X . utils . aoa _to _sheet ( [ [ "abc" ] ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											get _cell ( sheet ,  "A1" ) . h  =  "<b>abc</b>" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb  =  { SheetNames : [ "Sheet1" ] ,  Sheets : { Sheet1 : sheet } } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  str  =  X . write ( wb ,  { bookType : "html" ,  type : "binary" } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert ( str . indexOf ( "<b>abc</b>" )  >  0 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-10 05:10:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 05:26:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  seq ( end ,  start )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  s  =  start  ||  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  o  =  new  Array ( end  -  s ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for ( var  i  =  0 ;  i  !=  o . length ;  ++ i )  o [ i ]  =  s  +  i ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  o ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								describe ( 'roundtrip features' ,  function ( )  {  
						 
					
						
							
								
									
										
										
										
											2017-03-18 00:45:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  bef  =  ( function ( )  {  X  =  require ( modp ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 01:09:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( typeof  before  !=  'undefined' )  before ( bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  it ( 'before' ,  bef ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-01 07:32:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'should preserve core properties' ,  function ( )  {  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[ 'xlml' ,  paths . cpxml ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[ 'xlsx' ,  paths . cpxlsx ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[ 'xlsb' ,  paths . cpxlsb ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									] . forEach ( function ( w )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( w [ 0 ] ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb1  =  X . readFile ( w [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb2  =  X . read ( X . write ( wb1 ,  { bookType : w [ 0 ] ,  type : "buffer" } ) ,  { type : "buffer" } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												coreprop ( wb1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												coreprop ( wb2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									describe ( 'should preserve custom properties' ,  function ( )  {  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[ 'xlml' ,  paths . cpxml ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[ 'xlsx' ,  paths . cpxlsx ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[ 'xlsb' ,  paths . cpxlsb ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									] . forEach ( function ( w )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( w [ 0 ] ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb1  =  X . readFile ( w [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb2  =  X . read ( X . write ( wb1 ,  { bookType : w [ 0 ] ,  type : "buffer" } ) ,  { type : "buffer" } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												custprop ( wb1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												custprop ( wb2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-08-26 17:40:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'should preserve merge cells' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[ "xlsx" ,  "xlsb" ,  "xlml" ,  "ods" ] . forEach ( function ( f )  {  it ( f ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  wb1  =  X . readFile ( paths . mcxlsx ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-16 01:17:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  wb2  =  X . read ( X . write ( wb1 , { bookType : f , type : 'binary' } ) , { type : 'binary' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-08-26 17:40:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  m1  =  wb1 . Sheets . Merge [ '!merges' ] . map ( X . utils . encode _range ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  m2  =  wb2 . Sheets . Merge [ '!merges' ] . map ( X . utils . encode _range ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( m1 . length ,  m2 . length ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-16 01:17:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											for ( var  i  =  0 ;  i  <  m1 . length ;  ++ i )  assert ( m1 . indexOf ( m2 [ i ] )  >  - 1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-08-26 17:40:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 05:26:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'should preserve dates' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										seq ( 16 ) . forEach ( function ( n )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  d  =  ( n  &  1 )  ?  'd'  :  'n' ,  dk  =  d  ===  'd' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  c  =  ( n  &  2 )  ?  'd'  :  'n' ,  dj  =  c  ===  'd' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  b  =  ( n  &  4 )  ?  'd'  :  'n' ,  di  =  b  ===  'd' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  a  =  ( n  &  8 )  ?  'd'  :  'n' ,  dh  =  a  ===  'd' ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  f ,  sheet ,  addr ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if ( dh )  {  f  =  paths . dtxlsx ;  sheet  =  'Sheet1' ;  addr  =  'B5' ;  } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else  {  f  =  paths . nfxlsx ;  sheet  =  '2011' ;  addr  =  'J36' ;  } 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 05:26:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											it ( '['  +  a  +  '] -> ('  +  b  +  ') -> ['  +  c  +  '] -> ('  +  d  +  ')' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb1  =  X . readFile ( f ,  { cellNF :  true ,  cellDates :  di ,  WTF :  opts . WTF } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-21 20:44:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												var   _f  =  X . write ( wb1 ,  { type : 'binary' ,  cellDates : dj ,  WTF : opts . WTF } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb2  =  X . read ( _f ,  { type : 'binary' ,  cellDates :  dk ,  WTF :  opts . WTF } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												var  m  =  [ wb1 , wb2 ] . map ( function ( x )  {  return  get _cell ( x . Sheets [ sheet ] ,  addr ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 05:26:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert . equal ( m [ 0 ] . w ,  m [ 1 ] . w ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-21 20:44:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert . equal ( m [ 0 ] . t ,  b ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( m [ 1 ] . t ,  d ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 05:26:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-09 05:24:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												if ( m [ 0 ] . t  ===  'n'  &&  m [ 1 ] . t  ===  'n' )  assert . equal ( m [ 0 ] . v ,  m [ 1 ] . v ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												else  if ( m [ 0 ] . t  ===  'd'  &&  m [ 1 ] . t  ===  'd' )  assert . equal ( m [ 0 ] . v . toString ( ) ,  m [ 1 ] . v . toString ( ) ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-26 02:27:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												else  if ( m [ 1 ] . t  ===  'n' )  assert ( Math . abs ( datenum ( new  Date ( m [ 0 ] . v ) )  -  m [ 1 ] . v )  <  0.01 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-10-26 05:26:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-18 00:45:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'should preserve formulae' ,  function ( )  {  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlml' ,  paths . fstxml ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlsx' ,  paths . fstxlsx ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'ods' ,   paths . fstods ] 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										] . forEach ( function ( w )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-18 00:45:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											it ( w [ 0 ] ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb1  =  X . readFile ( w [ 1 ] ,  { cellFormula : true } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-30 20:37:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												var  wb2  =  X . read ( X . write ( wb1 ,  { bookType : w [ 0 ] ,  type : "buffer" } ) ,  { cellFormula : true ,  type : "buffer" } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-18 00:45:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												wb1 . SheetNames . forEach ( function ( n )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													assert . equal (  X . utils . sheet _to _formulae ( wb1 . Sheets [ n ] ) . sort ( ) . join ( "\n" ) ,  X . utils . sheet _to _formulae ( wb2 . Sheets [ n ] ) . sort ( ) . join ( "\n" )  ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 02:05:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-28 22:03:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									describe ( 'should preserve hyperlink' ,  function ( )  {  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlml' ,  paths . hlxml ] , 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-31 00:47:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ 'xlsx' ,  paths . hlxlsx ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlsb' ,  paths . hlxlsb ] 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-28 22:03:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										] . forEach ( function ( w )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											it ( w [ 0 ] ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb1  =  X . readFile ( w [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb2  =  X . read ( X . write ( wb1 ,  { bookType : w [ 0 ] ,  type : "buffer" } ) ,  { type : "buffer" } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												hlink ( wb1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												hlink ( wb2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-02 06:47:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-24 10:39:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									( fs . existsSync ( paths . pmxlsx )  ?  describe  :  describe . skip ) ( 'should preserve page margins' ,  function ( )  { [ 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-26 02:27:12 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ 'xlml' ,  paths . pmxml ] , 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-17 02:28:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ 'xlsx' ,  paths . pmxlsx ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlsb' ,  paths . pmxlsb ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										] . forEach ( function ( w )  {  it ( w [ 0 ] ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb1  =  X . readFile ( w [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb2  =  X . read ( X . write ( wb1 ,  { bookType : w [ 0 ] ,  type : "binary" } ) ,  { type : "binary" } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											check _margin ( wb2 . Sheets [ "Normal" ] [ "!margins" ] ,  [ 0.7 ,  0.7 ,  0.75 ,  0.75 ,  0.3 ,  0.3 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											check _margin ( wb2 . Sheets [ "Wide" ] [ "!margins" ] ,  [ 1 ,  1 ,  1 ,  1 ,  0.5 ,  0.5 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											check _margin ( wb2 . Sheets [ "Wide" ] [ "!margins" ] ,  [ 1 ,  1 ,  1 ,  1 ,  0.5 ,  0.5 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											check _margin ( wb2 . Sheets [ "Narrow" ] [ "!margins" ] ,  [ 0.25 ,  0.25 ,  0.75 ,  0.75 ,  0.3 ,  0.3 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											check _margin ( wb2 . Sheets [ "Custom 1 Inch Centered" ] [ "!margins" ] ,  [ 1 ,  1 ,  1 ,  1 ,  0.3 ,  0.3 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											check _margin ( wb2 . Sheets [ "1 Inch HF" ] [ "!margins" ] ,  [ 0.7 ,  0.7 ,  0.75 ,  0.75 ,  1 ,  1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ;  } ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-31 18:46:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'should preserve sheet visibility' ,  function ( )  {  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlml' ,  paths . svxml ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlsx' ,  paths . svxlsx ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlsb' ,  paths . svxlsb ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										] . forEach ( function ( w )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											it ( w [ 0 ] ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb1  =  X . readFile ( w [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb2  =  X . read ( X . write ( wb1 ,  { bookType : w [ 0 ] ,  type : "buffer" } ) ,  { type : "buffer" } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wbs1  =  wb1 . Workbook . Sheets ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wbs2  =  wb2 . Workbook . Sheets ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( wbs1 . length ,  wbs2 . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												for ( var  i  =  0 ;  i  <  wbs1 . length ;  ++ i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													assert . equal ( wbs1 [ i ] . name ,  wbs2 [ i ] . name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													assert . equal ( wbs1 [ i ] . Hidden ,  wbs2 [ i ] . Hidden ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-02 06:47:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-28 07:28:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'should preserve column properties' ,  function ( )  {  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'xlml' ,  /*'biff2', */  'xlsx' ,  'xlsb' ,  'slk' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										] . forEach ( function ( w )  {  it ( w ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  ws1  =  X . utils . aoa _to _sheet ( [ [ "hpx12" ,  "hpt24" ,  "hpx48" ,  "hidden" ] ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												ws1 [ '!cols' ]  =  [ { wch : 9 } , { wpx : 100 } , { width : 80 } , { hidden : true } ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb1  =  { SheetNames : [ "Sheet1" ] ,  Sheets : { Sheet1 : ws1 } } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb2  =  X . read ( X . write ( wb1 ,  { bookType : w ,  type : "buffer" } ) ,  { type : "buffer" ,  cellStyles : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  ws2  =  wb2 . Sheets . Sheet1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( ws2 [ '!cols' ] [ 3 ] . hidden ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( ws2 [ '!cols' ] [ 0 ] . wch ,  9 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if ( w  ==  'slk' )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( ws2 [ '!cols' ] [ 1 ] . wpx ,  100 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												/* xlml stores integral pixels -> approximate width */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if ( w  ==  'xlml' )  assert . equal ( Math . round ( ws2 [ '!cols' ] [ 2 ] . width ) ,  80 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												else  assert . equal ( ws2 [ '!cols' ] [ 2 ] . width ,  80 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									describe ( 'should preserve row properties' ,  function ( )  {  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											'xlml' ,  /*'biff2', */  'xlsx' ,  'xlsb' ,  'slk' 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										] . forEach ( function ( w )  {  it ( w ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  ws1  =  X . utils . aoa _to _sheet ( [ [ "hpx12" ] , [ "hpt24" ] , [ "hpx48" ] , [ "hidden" ] ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												ws1 [ '!rows' ]  =  [ { hpx : 12 } , { hpt : 24 } , { hpx : 48 } , { hidden : true } ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb1  =  { SheetNames : [ "Sheet1" ] ,  Sheets : { Sheet1 : ws1 } } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb2  =  X . read ( X . write ( wb1 ,  { bookType : w ,  type : "buffer" } ) ,  { type : "buffer" ,  cellStyles : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  ws2  =  wb2 . Sheets . Sheet1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( ws2 [ '!rows' ] [ 0 ] . hpx ,  12 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( ws2 [ '!rows' ] [ 1 ] . hpt ,  24 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( ws2 [ '!rows' ] [ 2 ] . hpx ,  48 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( ws2 [ '!rows' ] [ 3 ] . hidden ,  true ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-04-02 06:47:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'should preserve cell comments' ,  function ( )  {  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlsx' ,  paths . cstxlsx ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlsb' ,  paths . cstxlsb ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											//['xls', paths.cstxlsx],
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'xlml' ,  paths . cstxml ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											//['ods', paths.cstods]
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									] . forEach ( function ( w )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											it ( w [ 0 ] ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb1  =  X . readFile ( w [ 1 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb2  =  X . read ( X . write ( wb1 ,  { bookType : w [ 0 ] ,  type : "buffer" } ) ,  { type : "buffer" } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												check _comments ( wb1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												check _comments ( wb2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 18:23:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-17 04:23:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									it ( 'should preserve JS objects' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 18:23:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  data  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ a : 1 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ b : 2 , c : 3 } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ b : "a" , d : "b" } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ a : true ,  c : false } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ c : new  Date ( "2017-02-19T14:30Z" ) } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										] ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-17 04:23:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  wb  =  X . utils . json _to _sheet ( data ,  { cellDates : true } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 18:23:21 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  out  =  X . utils . sheet _to _json ( wb ,  { raw : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										data . forEach ( function ( row ,  i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											Object . keys ( row ) . forEach ( function ( k )  {  assert . equal ( row [ k ] ,  out [ i ] [ k ] ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 07:29:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//function password_file(x){return x.match(/^password.*\.xls$/); }
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//var password_files = fs.readdirSync('test_files').filter(password_file);
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  password _files  =  [  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									//"password_2002_40_972000.xls",
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"password_2002_40_xor.xls" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								] ;  
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								describe ( 'invalid files' ,  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									describe ( 'parse' ,  function ( )  {  [ 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ 'password' ,  'apachepoi_password.xls' ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 'passwords' ,  'apachepoi_xor-encryption-abc.xls' ] , 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ 'DOC files' ,  'word_doc.doc' ] 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-22 12:16:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										] . forEach ( function ( w )  {  it ( 'should fail on '  +  w [ 0 ] ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . throws ( function ( )  {  X . readFile ( dir  +  w [ 1 ] ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . throws ( function ( )  {  X . read ( fs . readFileSync ( dir + w [ 1 ] ,  'base64' ) ,  { type : 'base64' } ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-31 15:44:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									describe ( 'write' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should pass -> XLSX' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											X . write ( X . readFile ( paths . fstxlsb ) ,  { type : 'binary' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											X . write ( X . readFile ( paths . fstxlsx ) ,  { type : 'binary' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											X . write ( X . readFile ( paths . fstxls ) ,  { type : 'binary' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											X . write ( X . readFile ( paths . fstxml ) ,  { type : 'binary' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should pass if a sheet is missing' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  wb  =  X . readFile ( paths . fstxlsx ) ;  delete  wb . Sheets [ wb . SheetNames [ 0 ] ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											X . read ( X . write ( wb ,  { type : 'binary' } ) ,  { type : 'binary' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-22 12:16:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										[ 'Props' ,  'Custprops' ,  'SSF' ] . forEach ( function ( t )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											it ( 'should pass if '  +  t  +  ' is missing' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( paths . fstxlsx ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-22 12:16:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert . doesNotThrow ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													delete  wb [ t ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													X . write ( wb ,  { type : 'binary' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-22 12:16:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										[ 'SheetNames' ,  'Sheets' ] . forEach ( function ( t )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											it ( 'should fail if '  +  t  +  ' is missing' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( paths . fstxlsx ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-22 12:16:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert . throws ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													delete  wb [ t ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													X . write ( wb ,  { type : 'binary' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-16 00:33:34 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 08:39:51 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should fail if SheetNames has duplicate entries' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb  =  X . readFile ( paths . fstxlsx ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb . SheetNames . push ( wb . SheetNames [ 0 ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . throws ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												X . write ( wb ,  { type : 'binary' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-03-29 02:05:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-09 05:24:32 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  datenum ( v /*:Date*/ ,  date1904 /*:?boolean*/ ) /*:number*/  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  epoch  =  v . getTime ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( date1904 )  epoch  +=  1462 * 24 * 60 * 60 * 1000 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ( epoch  +  2209161600000 )  /  ( 24  *  60  *  60  *  1000 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								describe ( 'json output' ,  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									function  seeker ( json ,  keys ,  val )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for ( var  i  =  0 ;  i  !=  json . length ;  ++ i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for ( var  j  =  0 ;  j  !=  keys . length ;  ++ j )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if ( json [ i ] [ keys [ j ] ]  ===  val )  throw  new  Error ( "found "  +  val  +  " in row "  +  i  +  " key "  +  keys [ j ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  data ,  ws ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 01:09:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  bef  =  ( function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										data  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 1 , 2 , 3 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ true ,  false ,  null ,  "sheetjs" ] , 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-23 05:54:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											[ "foo" ,  "bar" ,  new  Date ( "2014-02-19T14:30Z" ) ,  "0.3" ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ "baz" ,  undefined ,  "qux" ] 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										] ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-25 01:36:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ws  =  X . utils . aoa _to _sheet ( data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 01:09:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( typeof  before  !=  'undefined' )  before ( bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  it ( 'before' ,  bef ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									it ( 'should use first-row headers and full sheet by default' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  json  =  X . utils . sheet _to _json ( ws ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json . length ,  data . length  -  1 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-22 07:50:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . equal ( json [ 0 ] [ 1 ] ,  "TRUE" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . equal ( json [ 1 ] [ 2 ] ,  "bar" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json [ 2 ] [ 3 ] ,  "qux" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . doesNotThrow ( function ( )  {  seeker ( json ,  [ 1 , 2 , 3 ] ,  "sheetjs" ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . throws ( function ( )  {  seeker ( json ,  [ 1 , 2 , 3 ] ,  "baz" ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									it ( 'should create array of arrays if header == 1' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  json  =  X . utils . sheet _to _json ( ws ,  { header : 1 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json . length ,  data . length ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-22 07:50:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . equal ( json [ 1 ] [ 0 ] ,  "TRUE" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . equal ( json [ 2 ] [ 1 ] ,  "bar" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json [ 3 ] [ 2 ] ,  "qux" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . doesNotThrow ( function ( )  {  seeker ( json ,  [ 0 , 1 , 2 ] ,  "sheetjs" ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . throws ( function ( )  {  seeker ( json ,  [ 0 , 1 , 2 , 3 ] ,  "sheetjs" ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . throws ( function ( )  {  seeker ( json ,  [ 0 , 1 , 2 ] ,  "baz" ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									it ( 'should use column names if header == "A"' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  json  =  X . utils . sheet _to _json ( ws ,  { header : 'A' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json . length ,  data . length ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-22 07:50:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . equal ( json [ 1 ] . A ,  "TRUE" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . equal ( json [ 2 ] . B ,  "bar" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json [ 3 ] . C ,  "qux" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . doesNotThrow ( function ( )  {  seeker ( json ,  "ABC" ,  "sheetjs" ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . throws ( function ( )  {  seeker ( json ,  "ABCD" ,  "sheetjs" ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . throws ( function ( )  {  seeker ( json ,  "ABC" ,  "baz" ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									it ( 'should use column labels if specified' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  json  =  X . utils . sheet _to _json ( ws ,  { header : [ "O" , "D" , "I" , "N" ] } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json . length ,  data . length ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-22 07:50:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . equal ( json [ 1 ] . O ,  "TRUE" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . equal ( json [ 2 ] . D ,  "bar" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json [ 3 ] . I ,  "qux" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . doesNotThrow ( function ( )  {  seeker ( json ,  "ODI" ,  "sheetjs" ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . throws ( function ( )  {  seeker ( json ,  "ODIN" ,  "sheetjs" ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . throws ( function ( )  {  seeker ( json ,  "ODIN" ,  "baz" ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									[ [ "string" ,  "A2:D4" ] ,  [ "numeric" ,  1 ] ,  [ "object" ,  { s : { r : 1 , c : 0 } , e : { r : 3 , c : 3 } } ] ] . forEach ( function ( w )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should accept custom '  +  w [ 0 ]  +  ' range' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  json  =  X . utils . sheet _to _json ( ws ,  { header : 1 ,  range : w [ 1 ] } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( json . length ,  3 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-22 07:50:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert . equal ( json [ 0 ] [ 0 ] ,  "TRUE" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert . equal ( json [ 1 ] [ 1 ] ,  "bar" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( json [ 2 ] [ 2 ] ,  "qux" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . doesNotThrow ( function ( )  {  seeker ( json ,  [ 0 , 1 , 2 ] ,  "sheetjs" ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . throws ( function ( )  {  seeker ( json ,  [ 0 , 1 , 2 , 3 ] ,  "sheetjs" ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . throws ( function ( )  {  seeker ( json ,  [ 0 , 1 , 2 ] ,  "baz" ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-23 05:54:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									it ( 'should use defval if requested' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  json  =  X . utils . sheet _to _json ( ws ,  { defval :  'jimjin' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json . length ,  data . length  -  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json [ 0 ] [ 1 ] ,  "TRUE" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json [ 1 ] [ 2 ] ,  "bar" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json [ 2 ] [ 3 ] ,  "qux" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json [ 2 ] [ 2 ] ,  "jimjin" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json [ 0 ] [ 3 ] ,  "jimjin" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . doesNotThrow ( function ( )  {  seeker ( json ,  [ 1 , 2 , 3 ] ,  "sheetjs" ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . throws ( function ( )  {  seeker ( json ,  [ 1 , 2 , 3 ] ,  "baz" ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-13 07:08:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . utils . sheet _to _json ( ws ,  { raw : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . utils . sheet _to _json ( ws ,  { raw : true ,  defval :  'jimjin' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-23 05:54:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 23:39:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									it ( 'should disambiguate headers' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  _data  =  [ [ "S" , "h" , "e" , "e" , "t" , "J" , "S" ] , [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] , [ 2 , 3 , 4 , 5 , 6 , 7 , 8 ] ] ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-25 01:36:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  _ws  =  X . utils . aoa _to _sheet ( _data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 23:39:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  json  =  X . utils . sheet _to _json ( _ws ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										for ( var  i  =  0 ;  i  <  json . length ;  ++ i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( json [ i ] . S ,    1  +  i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( json [ i ] . h ,    2  +  i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( json [ i ] . e ,    3  +  i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( json [ i ] . e _1 ,  4  +  i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( json [ i ] . t ,    5  +  i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( json [ i ] . J ,    6  +  i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( json [ i ] . S _1 ,  7  +  i ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-22 07:50:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									it ( 'should handle raw data if requested' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-25 01:36:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  _ws  =  X . utils . aoa _to _sheet ( data ,  { cellDates : true } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-22 07:50:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  json  =  X . utils . sheet _to _json ( _ws ,  { header : 1 ,  raw : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json . length ,  data . length ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json [ 1 ] [ 0 ] ,  true ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-23 05:54:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . equal ( json [ 1 ] [ 2 ] ,  null ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-22 07:50:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . equal ( json [ 2 ] [ 1 ] ,  "bar" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json [ 2 ] [ 2 ] . getTime ( ) ,  new  Date ( "2014-02-19T14:30Z" ) . getTime ( ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json [ 3 ] [ 2 ] ,  "qux" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-25 01:36:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									it ( 'should include __rowNum__' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  _data  =  [ [ "S" , "h" , "e" , "e" , "t" , "J" , "S" ] , [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] , [ ] , [ 2 , 3 , 4 , 5 , 6 , 7 , 8 ] ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  _ws  =  X . utils . aoa _to _sheet ( _data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  json  =  X . utils . sheet _to _json ( _ws ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json [ 0 ] . _ _rowNum _ _ ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json [ 1 ] . _ _rowNum _ _ ,  3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									it ( 'should handle blankrows' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  _data  =  [ [ "S" , "h" , "e" , "e" , "t" , "J" , "S" ] , [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] , [ ] , [ 2 , 3 , 4 , 5 , 6 , 7 , 8 ] ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  _ws  =  X . utils . aoa _to _sheet ( _data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  json1  =  X . utils . sheet _to _json ( _ws ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  json2  =  X . utils . sheet _to _json ( _ws ,  { header : 1 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  json3  =  X . utils . sheet _to _json ( _ws ,  { blankrows : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  json4  =  X . utils . sheet _to _json ( _ws ,  { blankrows : true ,  header : 1 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  json5  =  X . utils . sheet _to _json ( _ws ,  { blankrows : false } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  json6  =  X . utils . sheet _to _json ( _ws ,  { blankrows : false ,  header : 1 } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json1 . length ,  2 ) ;  // = 2 non-empty records
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json2 . length ,  4 ) ;  // = 4 sheet rows
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json3 . length ,  3 ) ;  // = 2 records + 1 blank row
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json4 . length ,  4 ) ;  // = 4 sheet rows
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json5 . length ,  2 ) ;  // = 2 records
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json6 . length ,  3 ) ;  // = 4 sheet rows - 1 blank row
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-26 15:32:42 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									it ( 'should have an index that starts with zero when selecting range' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  _data  =  [ [ "S" , "h" , "e" , "e" , "t" , "J" , "S" ] , [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] , [ 7 , 6 , 5 , 4 , 3 , 2 , 1 ] , [ 2 , 3 , 4 , 5 , 6 , 7 , 8 ] ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  _ws  =  X . utils . aoa _to _sheet ( _data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  json1  =  X . utils . sheet _to _json ( _ws ,  {  header : 1 ,  raw :  true ,  range :  "B1:F3"  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json1 [ 0 ] [ 3 ] ,  "t" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json1 [ 1 ] [ 0 ] ,  2 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json1 [ 2 ] [ 1 ] ,  5 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( json1 [ 2 ] [ 3 ] ,  3 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-25 01:36:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-05-09 18:07:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								describe ( 'csv' ,  function ( )  {  
						 
					
						
							
								
									
										
										
										
											2017-05-13 18:21:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( 'input' ,  function ( ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  b  =  "1,2,3,\nTRUE,FALSE,,sheetjs\nfoo,bar,2/19/14,0.3\n,,,\nbaz,,qux,\n" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should generate date numbers by default' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  opts  =  { type : "binary" } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  cell  =  get _cell ( X . read ( b ,  opts ) . Sheets . Sheet1 ,  "C3" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( cell . w ,  '2/19/14' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( cell . t ,  'n' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert ( typeof  cell . v  ==  "number" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should generate dates when requested' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  opts  =  { type : "binary" ,  cellDates : true } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  cell  =  get _cell ( X . read ( b ,  opts ) . Sheets . Sheet1 ,  "C3" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( cell . w ,  '2/19/14' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( cell . t ,  'd' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert ( cell . v  instanceof  Date  ||  typeof  cell . v  ==  "string" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should use US date code 14 by default' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  opts  =  { type : "binary" } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  cell  =  get _cell ( X . read ( b ,  opts ) . Sheets . Sheet1 ,  "C3" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( cell . w ,  '2/19/14' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											opts . cellDates  =  true ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  cell  =  get _cell ( X . read ( b ,  opts ) . Sheets . Sheet1 ,  "C3" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( cell . w ,  '2/19/14' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should honor dateNF override' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  opts  =  { type : "binary" ,  dateNF : "YYYY-MM-DD" } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  cell  =  get _cell ( X . read ( b ,  opts ) . Sheets . Sheet1 ,  "C3" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-17 04:23:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											/* NOTE: IE interprets 2-digit years as 19xx */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert ( cell . w  ==  '2014-02-19'  ||  cell . w  ==  '1914-02-19' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-13 18:21:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											opts . cellDates  =  true ;  opts . dateNF  =  "YY-MM-DD" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  cell  =  get _cell ( X . read ( b ,  opts ) . Sheets . Sheet1 ,  "C3" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( cell . w ,  '14-02-19' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									describe ( 'output' ,  function ( ) { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  data ,  ws ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  bef  =  ( function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											data  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												[ 1 , 2 , 3 , null ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												[ true ,  false ,  null ,  "sheetjs" ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												[ "foo" ,  "bar" ,  new  Date ( "2014-02-19T14:30Z" ) ,  "0.3" ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												[ null ,  null ,  null ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												[ "baz" ,  undefined ,  "qux" ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ws  =  X . utils . aoa _to _sheet ( data ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( typeof  before  !=  'undefined' )  before ( bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										else  it ( 'before' ,  bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should generate csv' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  baseline  =  "1,2,3,\nTRUE,FALSE,,sheetjs\nfoo,bar,2/19/14,0.3\n,,,\nbaz,,qux,\n" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( baseline ,  X . utils . sheet _to _csv ( ws ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should handle FS' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( X . utils . sheet _to _csv ( ws ,  { FS : "|" } ) . replace ( /[|]/g , "," ) ,  X . utils . sheet _to _csv ( ws ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( X . utils . sheet _to _csv ( ws ,  { FS : ";" } ) . replace ( /[;]/g , "," ) ,  X . utils . sheet _to _csv ( ws ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should handle RS' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( X . utils . sheet _to _csv ( ws ,  { RS : "|" } ) . replace ( /[|]/g , "\n" ) ,  X . utils . sheet _to _csv ( ws ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( X . utils . sheet _to _csv ( ws ,  { RS : ";" } ) . replace ( /[;]/g , "\n" ) ,  X . utils . sheet _to _csv ( ws ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should handle dateNF' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  baseline  =  "1,2,3,\nTRUE,FALSE,,sheetjs\nfoo,bar,20140219,0.3\n,,,\nbaz,,qux,\n" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  _ws  =   X . utils . aoa _to _sheet ( data ,  { cellDates : true } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											delete  get _cell ( _ws , "C3" ) . w ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											delete  get _cell ( _ws , "C3" ) . z ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( baseline ,  X . utils . sheet _to _csv ( _ws ,  { dateNF : "YYYYMMDD" } ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should handle strip' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  baseline  =  "1,2,3\nTRUE,FALSE,,sheetjs\nfoo,bar,2/19/14,0.3\n\nbaz,,qux\n" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( baseline ,  X . utils . sheet _to _csv ( ws ,  { strip : true } ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should handle blankrows' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  baseline  =  "1,2,3,\nTRUE,FALSE,,sheetjs\nfoo,bar,2/19/14,0.3\nbaz,,qux,\n" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . equal ( baseline ,  X . utils . sheet _to _csv ( ws ,  { blankrows : false } ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should handle various line endings' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  data  =  [ "1,a" ,  "2,b" ,  "3,c" ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[  "\r" ,  "\n" ,  "\r\n"  ] . forEach ( function ( RS )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb  =  X . read ( data . join ( RS ) ,  { type : 'binary' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( get _cell ( wb . Sheets . Sheet1 ,  "A1" ) . v ,  1 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( get _cell ( wb . Sheets . Sheet1 ,  "B3" ) . v ,  "c" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												assert . equal ( wb . Sheets . Sheet1 [ '!ref' ] ,  "A1:B3" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-09 18:07:57 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-02-10 19:23:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								describe ( 'js -> file -> js' ,  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  data ,  ws ,  wb ,  BIN = "binary" ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 01:09:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  bef  =  ( function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-10 19:23:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										data  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 1 , 2 , 3 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ true ,  false ,  null ,  "sheetjs" ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ "foo" , "bar" , new  Date ( "2014-02-19T14:30Z" ) ,  "0.3" ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ "baz" ,  6.9 ,  "qux" ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										] ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-25 01:36:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ws  =  X . utils . aoa _to _sheet ( data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-10 19:23:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										wb  =  {  SheetNames :  [ 'Sheet1' ] ,  Sheets :  { Sheet1 :  ws }  } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-10 01:09:18 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( typeof  before  !=  'undefined' )  before ( bef ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  it ( 'before' ,  bef ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-10 19:23:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									function  eqcell ( wb1 ,  wb2 ,  s ,  a )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . equal ( get _cell ( wb1 . Sheets [ s ] ,  a ) . v ,  get _cell ( wb2 . Sheets [ s ] ,  a ) . v ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( get _cell ( wb1 . Sheets [ s ] ,  a ) . t ,  get _cell ( wb2 . Sheets [ s ] ,  a ) . t ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-10 19:23:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ofmt . forEach ( function ( f )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( f ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  newwb  =  X . read ( X . write ( wb ,  { type : BIN ,  bookType :  f } ) ,  { type : BIN } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											/* int */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											eqcell ( wb ,  newwb ,  'Sheet1' ,  'A1' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											eqcell ( wb ,  newwb ,  'Sheet1' ,  'B1' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											eqcell ( wb ,  newwb ,  'Sheet1' ,  'C1' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											/* double */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											eqcell ( wb ,  newwb ,  'Sheet1' ,  'B4' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											/* bool */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											eqcell ( wb ,  newwb ,  'Sheet1' ,  'A2' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											eqcell ( wb ,  newwb ,  'Sheet1' ,  'B2' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											/* string */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											eqcell ( wb ,  newwb ,  'Sheet1' ,  'D2' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											eqcell ( wb ,  newwb ,  'Sheet1' ,  'A3' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											eqcell ( wb ,  newwb ,  'Sheet1' ,  'B3' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											eqcell ( wb ,  newwb ,  'Sheet1' ,  'A4' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											eqcell ( wb ,  newwb ,  'Sheet1' ,  'C4' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-30 16:27:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if ( DIF _XL  &&  f  ==  "dif" )  assert . equal ( get _cell ( newwb . Sheets [ "Sheet1" ] ,  'D3' ) . v ,  '=""0.3""' ) ; // dif forces string formula
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											else  eqcell ( wb ,  newwb ,  'Sheet1' ,  'D3' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-10 19:23:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											/* date */ 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-30 16:27:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if ( ! DIF _XL )  eqcell ( wb ,  newwb ,  'Sheet1' ,  'C3' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-10 19:23:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								describe ( 'corner cases' ,  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									it ( 'output functions' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  data  =  [ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ 1 , 2 , 3 ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ true ,  false ,  null ,  "sheetjs" ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ "foo" , "bar" , new  Date ( "2014-02-19T14:30Z" ) ,  "0.3" ] , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											[ "baz" ,  null ,  "q\"ux" ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										] ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-25 01:36:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  ws  =  X . utils . aoa _to _sheet ( data ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										get _cell ( ws , "A1" ) . f  =  "" ;  get _cell ( ws , "A1" ) . w  =  "" ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										delete  get _cell ( ws , "C3" ) . w ;  delete  get _cell ( ws , "C3" ) . z ;  get _cell ( ws , "C3" ) . XF  =  { ifmt : 14 } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										get _cell ( ws , "A4" ) . t  =  "e" ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . utils . get _formulae ( ws ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . utils . make _csv ( ws ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . utils . make _json ( ws ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-06-05 07:06:20 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ws [ '!cols' ]  =  [  { wch : 6 } ,  { wch : 7 } ,  { wch : 10 } ,  { wch : 20 }  ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  wb  =  { SheetNames : [ 'sheetjs' ] ,  Sheets : { sheetjs : ws } } ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . write ( wb ,  { type :  "binary" ,  bookType :  'xlsx' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . write ( wb ,  { type :  "buffer" ,  bookType :  'xlsm' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . write ( wb ,  { type :  "base64" ,  bookType :  'xlsb' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-02-10 19:23:01 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										X . write ( wb ,  { type :  "binary" ,  bookType :  'ods' } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . write ( wb ,  { type :  "binary" ,  bookType :  'biff2' } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-04-08 06:55:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										get _cell ( ws , "A2" ) . t  =  "f" ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . throws ( function ( )  {  X . utils . make _json ( ws ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									it ( 'SSF' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . SSF . format ( "General" ,  "dafuq" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . throws ( function ( x )  {  return  X . SSF . format ( "General" ,  { sheet : "js" } ) ; } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . SSF . format ( "b e ddd hh AM/PM" ,  41722.4097222222 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . SSF . format ( "b ddd hh m" ,  41722.4097222222 ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[ "hhh" , "hhh A/P" , "hhmmm" , "sss" , "[hhh]" , "G eneral" ] . forEach ( function ( f )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . throws ( function ( x )  {  return  X . SSF . format ( f ,  12345.6789 ) ; } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										[ "[m]" , "[s]" ] . forEach ( function ( f )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											assert . doesNotThrow ( function ( x )  {  return  X . SSF . format ( f ,  12345.6789 ) ; } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-19 06:50:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									it ( 'SSF oddities' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										var  ssfdata  =  require ( './misc/ssf.json' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										ssfdata . forEach ( function ( d )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for ( var  j = 1 ; j < d . length ; ++ j )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if ( d [ j ] . length  ==  2 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													var  expected  =  d [ j ] [ 1 ] ,  actual  =  X . SSF . format ( d [ 0 ] ,  d [ j ] [ 0 ] ,  { } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													assert . equal ( actual ,  expected ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  else  if ( d [ j ] [ 2 ]  !==  "#" )  assert . throws ( function ( )  {  SSF . format ( d [ 0 ] ,  d [ j ] [ 0 ] ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									it ( 'codepage' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										X . readFile ( dir  +  "biff5/number_format_greek.xls" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								describe ( 'encryption' ,  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									password _files . forEach ( function ( x )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										describe ( x ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											it ( 'should throw with no password' ,  function ( )  { assert . throws ( function ( )  {  X . readFile ( dir  +  x ) ;  } ) ;  } ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-05-11 07:29:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											it ( 'should throw with wrong password' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													X . readFile ( dir  +  x ,  { password : 'passwor' , WTF : opts . WTF } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													throw  new  Error ( "incorrect password was accepted" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  catch ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if ( e . message  !=  "Password is incorrect" )  throw  e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											it ( 'should recognize correct password' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												try  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													X . readFile ( dir  +  x ,  { password : 'password' , WTF : opts . WTF } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												}  catch ( e )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													if ( e . message  ==  "Password is incorrect" )  throw  e ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
									
										
										
										
											2015-04-02 20:32:22 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											it . skip ( 'should decrypt file' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  wb  =  X . readFile ( dir  +  x ,  { password : 'password' , WTF : opts . WTF } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-05-29 22:30:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
									
										
										
										
											2017-03-16 01:17:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								describe ( 'multiformat tests' ,  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  mfopts  =  opts ;  
						 
					
						
							
								
									
										
										
										
											2017-04-24 10:39:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  mft  =  fs . readFileSync ( 'multiformat.lst' , 'utf-8' ) . split ( "\n" ) . map ( function ( x )  {  return  x . trim ( ) ;  } ) ;  
						 
					
						
							
								
									
										
										
										
											2017-03-18 00:45:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  csv  =  true ,  formulae  =  false ;  
						 
					
						
							
								
									
										
										
										
											2017-03-16 01:17:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								mft . forEach ( function ( x )  {  
						 
					
						
							
								
									
										
										
										
											2017-05-17 04:23:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( x . charAt ( 0 ) != "#" )  describe ( 'MFT '  +  x ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-16 01:17:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  fil  =  { } ,  f  =  [ ] ,  r  =  x . split ( /\s+/ ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( r . length  <  3 )  return ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should parse all' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											for ( var  j  =  1 ;  j  !=  r . length ;  ++ j )  f [ j - 1 ]  =  X . readFile ( dir  +  r [ 0 ]  +  r [ j ] ,  mfopts ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should have the same sheetnames' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											cmparr ( f . map ( function ( x )  {  return  x . SheetNames ;  } ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should have the same ranges' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											f [ 0 ] . SheetNames . forEach ( function ( s )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  ss  =  f . map ( function ( x )  {  return  x . Sheets [ s ] ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												cmparr ( ss . map ( function ( s )  {  return  s [ '!ref' ] ;  } ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should have the same merges' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											f [ 0 ] . SheetNames . forEach ( function ( s )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  ss  =  f . map ( function ( x )  {  return  x . Sheets [ s ] ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												cmparr ( ss . map ( function ( s )  {  return  ( s [ '!merges' ] || [ ] ) . map ( function ( y )  {  return  X . utils . encode _range ( y ) ;  } ) . sort ( ) ;  } ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should have the same CSV' ,  csv  ?  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											cmparr ( f . map ( function ( x )  {  return  x . SheetNames ;  } ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  names  =  f [ 0 ] . SheetNames ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											names . forEach ( function ( name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												cmparr ( f . map ( function ( x )  {  return  X . utils . sheet _to _csv ( x . Sheets [ name ] ) ;  } ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  :  null ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-18 00:45:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										it ( 'should have the same formulae' ,  formulae  ?  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											cmparr ( f . map ( function ( x )  {  return  x . SheetNames ;  } ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  names  =  f [ 0 ] . SheetNames ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											names . forEach ( function ( name )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												cmparr ( f . map ( function ( x )  {  return  X . utils . sheet _to _formulae ( x . Sheets [ name ] ) . sort ( ) ;  } ) ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										}  :  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2017-03-16 01:17:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  x . split ( /\s+/ ) . forEach ( function ( w )  {  switch ( w )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  "no-csv" :  csv  =  false ;  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  "yes-csv" :  csv  =  true ;  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-18 00:45:06 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										case  "no-formula" :  formulae  =  false ;  break ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										case  "yes-formula" :  formulae  =  true ;  break ; 
							 
						 
					
						
							
								
									
										
										
										
											2017-03-16 01:17:24 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;