/* Performance test commented out because it is not a real test. */ // [Test] public void CsvExportPerformance() { // 2.29 s with alpha 13's multiple events string method = System.Reflection.MethodInfo.GetCurrentMethod().ToString(); Worksheet ws = Instance.Default.ActiveWorkbook.Worksheets.Add(); ws.Cells[1, 1] = "hello"; ws.Cells[200, 5] = "world"; CsvExporter model = new CsvExporter(); CsvExportViewModel vm = new CsvExportViewModel(model); string fn = System.IO.Path.GetTempFileName(); model.FileName = fn; bool running = true; long start = 0; vm.ProcessFinishedMessage.Sent += (sender, args) => { Console.WriteLine(method + ": *** Export completed ***"); long stop = DateTime.Now.Ticks; Console.WriteLine( String.Format("{0}: export took {1} seconds.", method, Math.Round((double)(stop - start) / TimeSpan.TicksPerSecond, 3) )); running = false; }; Task waitTask = new Task( () => { Console.WriteLine(method + ": *** Wait task started ***"); while (running) { ; } } ); waitTask.Start(); start = DateTime.Now.Ticks; model.Range = ws.UsedRange; vm.StartProcess(); waitTask.Wait(-1); }
public void ExportLargeCsv() { Worksheet ws = Instance.Default.ActiveWorkbook.Worksheets.Add(); ws.Cells[1, 1] = "hello"; ws.Cells[1000, 16384] = "world"; CsvExporter model = new CsvExporter(); CsvExportViewModel vm = new CsvExportViewModel(model); string fn = System.IO.Path.GetTempFileName(); vm.FileName = fn; bool cancel = false; bool progressCompletedRaised = false; vm.ProcessFinishedMessage.Sent += (sender, args) => { progressCompletedRaised = true; }; vm.StartProcess(); while (!progressCompletedRaised && !cancel) { } Timer t = new Timer((obj) => cancel = true, null, 15000, Timeout.Infinite); if (vm.IsProcessing) { vm.CancelProcess(); Assert.Inconclusive("CSV export took too long, did not finish."); // Do not delete the file, leave it for inspection } else { Assert.IsTrue(progressCompletedRaised, "ProgressCompleted event was not raised"); System.IO.File.Delete(fn); } }