| 
									
										
										
										
											2013-10-30 19:26:07 +00:00
										 |  |  | /* vim: set ts=2: */ | 
					
						
							|  |  |  | var XLSX; | 
					
						
							|  |  |  | var fs = require('fs'), assert = require('assert'); | 
					
						
							|  |  |  | describe('source', function() { it('should load', function() { XLSX = require('./'); }); }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var files = (fs.existsSync('tests.lst') ? fs.readFileSync('tests.lst', 'utf-8').split("\n") : fs.readdirSync('test_files')).filter(function(x){return x.substr(-5)==".xlsx" || x.substr(-13)==".xlsx.pending"}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-12-27 03:15:16 +00:00
										 |  |  | function normalizecsv(x) { return x.replace(/\t/g,",").replace(/#{255}/g,"").replace(/"/g,"").replace(/[\n\r]+/g,"\n").replace(/\n*$/,""); } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-30 19:26:07 +00:00
										 |  |  | function parsetest(x, wb) { | 
					
						
							|  |  |  | 	describe(x + ' should have all bits', function() { | 
					
						
							| 
									
										
										
										
											2013-12-27 03:15:16 +00:00
										 |  |  | 		var sname = './test_files/2011/' + x + '.sheetnames'; | 
					
						
							| 
									
										
										
										
											2013-10-30 19:26:07 +00:00
										 |  |  | 		it('should have all sheets', function() { | 
					
						
							|  |  |  | 			wb.SheetNames.forEach(function(y) { assert(wb.Sheets[y], 'bad sheet ' + y); }); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 		it('should have the right sheet names', fs.existsSync(sname) ? function() { | 
					
						
							|  |  |  | 			var file = fs.readFileSync(sname, 'utf-8'); | 
					
						
							|  |  |  | 			var names = wb.SheetNames.join("\n") + "\n"; | 
					
						
							| 
									
										
										
										
											2013-12-27 03:15:16 +00:00
										 |  |  | 			assert.equal(names, file); | 
					
						
							| 
									
										
										
										
											2013-10-30 19:26:07 +00:00
										 |  |  | 		} : null); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 	describe(x + ' should generate correct output', function() { | 
					
						
							|  |  |  | 		wb.SheetNames.forEach(function(ws, i) { | 
					
						
							|  |  |  | 			var name = ('./test_files/' + x + '.' + i + '.csv'); | 
					
						
							|  |  |  | 			it('#' + i + ' (' + ws + ')', fs.existsSync(name) ? function() { | 
					
						
							|  |  |  | 				var file = fs.readFileSync(name, 'utf-8'); | 
					
						
							|  |  |  | 				var csv = XLSX.utils.make_csv(wb.Sheets[ws]); | 
					
						
							| 
									
										
										
										
											2013-12-27 03:15:16 +00:00
										 |  |  | 				assert.equal(normalizecsv(csv), normalizecsv(file), "CSV badness"); | 
					
						
							| 
									
										
										
										
											2013-10-30 19:26:07 +00:00
										 |  |  | 			} : null); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe('should parse test files', function() { | 
					
						
							|  |  |  | 	files.forEach(function(x) { | 
					
						
							|  |  |  | 		it(x, x.substr(-8) == ".pending" ? null : function() { | 
					
						
							|  |  |  | 			var wb = XLSX.readFile('./test_files/' + x); | 
					
						
							|  |  |  | 			parsetest(x, wb); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | }); |