2013-10-30 19:26:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/* vim: set ts=2: */  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  XLSX ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  fs  =  require ( 'fs' ) ,  assert  =  require ( 'assert' ) ;  
						 
					
						
							
								
									
										
										
										
											2014-01-23 06:20:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								describe ( 'source' , function ( ) {  it ( 'should load' ,  function ( ) {  XLSX  =  require ( './' ) ;  } ) ; } ) ;  
						 
					
						
							
								
									
										
										
										
											2013-10-30 19:26:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2014-01-28 16:38:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  ex  =  [ ".xlsb" ,  ".xlsm" ,  ".xlsx" ] ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  exp  =  ex . map ( function ( x ) {  return  x  +  ".pending" ;  } ) ;   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								function  test _file ( x ) { return  ex . indexOf ( x . substr ( - 5 ) ) >= 0 || exp . indexOf ( x . substr ( - 13 ) ) >= 0 ; }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var  files  =  ( fs . existsSync ( 'tests.lst' )  ?  fs . readFileSync ( 'tests.lst' ,  'utf-8' ) . split ( "\n" )  :  fs . readdirSync ( 'test_files' ) ) . 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 ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-12-27 03:15:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								function  normalizecsv ( x )  {  return  x . replace ( /\t/g , "," ) . replace ( /#{255}/g , "" ) . replace ( /"/g , "" ) . replace ( /[\n\r]+/g , "\n" ) . replace ( /\n*$/ , "" ) ;  }  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2013-10-30 19:26:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								function  parsetest ( x ,  wb )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									describe ( x  +  ' should have all bits' ,  function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-27 03:15:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  sname  =  './test_files/2011/'  +  x  +  '.sheetnames' ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-30 19:26:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										it ( 'should have all sheets' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											wb . SheetNames . forEach ( function ( y )  {  assert ( wb . Sheets [ y ] ,  'bad sheet '  +  y ) ;  } ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( 'should have the right sheet names' ,  fs . existsSync ( sname )  ?  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  file  =  fs . readFileSync ( sname ,  'utf-8' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-23 06:20:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											var  names  =  wb . SheetNames . map ( fixsheetname ) . join ( "\n" )  +  "\n" ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-27 03:15:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											assert . equal ( names ,  file ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-30 19:26:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										}  :  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-23 06:20:19 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( x  +  ' should generate CSV' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										wb . SheetNames . forEach ( function ( ws ,  i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											it ( '#'  +  i  +  ' ('  +  ws  +  ')' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  csv  =  XLSX . utils . make _csv ( wb . Sheets [ ws ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-23 15:55:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									describe ( x  +  ' should generate JSON' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										wb . SheetNames . forEach ( function ( ws ,  i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											it ( '#'  +  i  +  ' ('  +  ws  +  ')' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  json  =  XLSX . utils . sheet _to _row _object _array ( wb . Sheets [ ws ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									describe ( x  +  ' should generate formulae' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										wb . SheetNames . forEach ( function ( ws ,  i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											it ( '#'  +  i  +  ' ('  +  ws  +  ')' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  json  =  XLSX . utils . get _formulae ( wb . Sheets [ ws ] ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-30 19:26:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									describe ( x  +  ' should generate correct output' ,  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										wb . SheetNames . forEach ( function ( ws ,  i )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  name  =  ( './test_files/'  +  x  +  '.'  +  i  +  '.csv' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											it ( '#'  +  i  +  ' ('  +  ws  +  ')' ,  fs . existsSync ( name )  ?  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  file  =  fs . readFileSync ( name ,  'utf-8' ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												var  csv  =  XLSX . utils . make _csv ( wb . Sheets [ ws ] ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-12-27 03:15:16 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
												assert . equal ( normalizecsv ( csv ) ,  normalizecsv ( file ) ,  "CSV badness" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2013-10-30 19:26:07 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
											}  :  null ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								describe ( 'should parse test files' ,  function ( )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									files . forEach ( function ( x )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										it ( x ,  x . substr ( - 8 )  ==  ".pending"  ?  null  :  function ( )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											var  wb  =  XLSX . readFile ( './test_files/'  +  x ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											parsetest ( x ,  wb ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;  
						 
					
						
							
								
									
										
										
										
											2014-01-15 07:26:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								describe ( 'should have comment as part of cell\'s properties' ,  function ( ) {  
						 
					
						
							
								
									
										
										
										
											2014-01-18 13:45:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  ws ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									before ( function ( )  { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-28 16:38:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										XLSX  =  require ( './' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-16 03:42:25 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  wb  =  XLSX . readFile ( './test_files/apachepoi_SimpleWithComments.xlsx' ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-15 07:26:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										var  sheetName  =  'Sheet1' ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-18 13:45:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										ws  =  wb . Sheets [ sheetName ] ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									it ( 'Parse comments.xml and insert into cell' , function ( ) { 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-15 07:26:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . equal ( ws . B1 . c . length ,  1 , "must have 1 comment" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-18 13:45:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										assert . equal ( ws . B1 . c [ 0 ] . t ,  "Yegor Kozlov:\r\nfirst cell" ,  "must have the concatenated texts" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( ws . B1 . c [ 0 ] . r ,  '<span style="font-weight: bold;">Yegor Kozlov:</span><span style=""><br/>first cell</span>' ,  "must have the html representation" ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										assert . equal ( ws . B1 . c [ 0 ] . a ,  "Yegor Kozlov" , "must have the same author" ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2014-01-15 07:26:00 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ) ;