| using System; | |
| using System.IO; | |
| using Microsoft.VisualStudio.TestTools.UnitTesting; | |
| using OfficeOpenXml; | |
| using System.Reflection; | |
| namespace EPPlusTest | |
| { | |
| [TestClass] | |
| public class WorksheetsTests | |
| { | |
| private ExcelPackage package; | |
| private ExcelWorkbook workbook; | |
| [TestInitialize] | |
| public void TestInitialize() | |
| { | |
| package = new ExcelPackage(); | |
| workbook = package.Workbook; | |
| workbook.Worksheets.Add("NEW1"); | |
| } | |
| [TestMethod] | |
| public void ConfirmFileStructure() | |
| { | |
| Assert.IsNotNull(package, "Package not created"); | |
| Assert.IsNotNull(workbook, "No workbook found"); | |
| } | |
| [TestMethod] | |
| public void ShouldBeAbleToDeleteAndThenAdd() | |
| { | |
| workbook.Worksheets.Add("NEW2"); | |
| workbook.Worksheets.Delete(1); | |
| workbook.Worksheets.Add("NEW3"); | |
| } | |
| [TestMethod] | |
| public void DeleteByNameWhereWorkSheetExists() | |
| { | |
| workbook.Worksheets.Add("NEW2"); | |
| workbook.Worksheets.Delete("NEW2"); | |
| } | |
| [TestMethod, ExpectedException(typeof(ArgumentException))] | |
| public void DeleteByNameWhereWorkSheetDoesNotExist() | |
| { | |
| workbook.Worksheets.Add("NEW2"); | |
| workbook.Worksheets.Delete("NEW3"); | |
| } | |
| [TestMethod] | |
| public void MoveBeforeByNameWhereWorkSheetExists() | |
| { | |
| workbook.Worksheets.Add("NEW2"); | |
| workbook.Worksheets.Add("NEW3"); | |
| workbook.Worksheets.Add("NEW4"); | |
| workbook.Worksheets.Add("NEW5"); | |
| workbook.Worksheets.MoveBefore("NEW4", "NEW2"); | |
| CompareOrderOfWorksheetsAfterSaving(package); | |
| } | |
| [TestMethod] | |
| public void MoveAfterByNameWhereWorkSheetExists() | |
| { | |
| workbook.Worksheets.Add("NEW2"); | |
| workbook.Worksheets.Add("NEW3"); | |
| workbook.Worksheets.Add("NEW4"); | |
| workbook.Worksheets.Add("NEW5"); | |
| workbook.Worksheets.MoveAfter("NEW4", "NEW2"); | |
| CompareOrderOfWorksheetsAfterSaving(package); | |
| } | |
| [TestMethod] | |
| public void MoveBeforeByPositionWhereWorkSheetExists() | |
| { | |
| workbook.Worksheets.Add("NEW2"); | |
| workbook.Worksheets.Add("NEW3"); | |
| workbook.Worksheets.Add("NEW4"); | |
| workbook.Worksheets.Add("NEW5"); | |
| workbook.Worksheets.MoveBefore(4, 2); | |
| CompareOrderOfWorksheetsAfterSaving(package); | |
| } | |
| [TestMethod] | |
| public void MoveAfterByPositionWhereWorkSheetExists() | |
| { | |
| workbook.Worksheets.Add("NEW2"); | |
| workbook.Worksheets.Add("NEW3"); | |
| workbook.Worksheets.Add("NEW4"); | |
| workbook.Worksheets.Add("NEW5"); | |
| workbook.Worksheets.MoveAfter(4, 2); | |
| CompareOrderOfWorksheetsAfterSaving(package); | |
| } | |
| #region Delete Column with Save Tests | |
| private const string OutputDirectory = @"d:\temp\"; | |
| [TestMethod] | |
| public void DeleteFirstColumnInRangeColumnShouldBeDeleted() | |
| { | |
| // Arrange | |
| ExcelPackage pck = new ExcelPackage(); | |
| using ( | |
| Stream file = | |
| Assembly.GetExecutingAssembly() | |
| .GetManifestResourceStream("EPPlusTest.TestWorkbooks.PreDeleteColumn.xls")) | |
| { | |
| pck.Load(file); | |
| } | |
| var wsData = pck.Workbook.Worksheets[1]; | |
| // Act | |
| wsData.DeleteColumn(1); | |
| pck.SaveAs(new FileInfo(OutputDirectory + "AfterDeleteColumn.xlsx")); | |
| // Assert | |
| Assert.AreEqual("Title", wsData.Cells["A1"].Text); | |
| Assert.AreEqual("First Name", wsData.Cells["B1"].Text); | |
| Assert.AreEqual("Family Name", wsData.Cells["C1"].Text); | |
| } | |
| [TestMethod] | |
| public void DeleteLastColumnInRangeColumnShouldBeDeleted() | |
| { | |
| // Arrange | |
| ExcelPackage pck = new ExcelPackage(); | |
| using ( | |
| Stream file = | |
| Assembly.GetExecutingAssembly() | |
| .GetManifestResourceStream("EPPlusTest.TestWorkbooks.PreDeleteColumn.xls")) | |
| { | |
| pck.Load(file); | |
| } | |
| var wsData = pck.Workbook.Worksheets[1]; | |
| // Act | |
| wsData.DeleteColumn(4); | |
| pck.SaveAs(new FileInfo(OutputDirectory + "AfterDeleteColumn.xlsx")); | |
| // Assert | |
| Assert.AreEqual("Id", wsData.Cells["A1"].Text); | |
| Assert.AreEqual("Title", wsData.Cells["B1"].Text); | |
| Assert.AreEqual("First Name", wsData.Cells["C1"].Text); | |
| } | |
| [TestMethod] | |
| public void DeleteColumnAfterNormalRangeSheetShouldRemainUnchanged() | |
| { | |
| // Arrange | |
| ExcelPackage pck = new ExcelPackage(); | |
| using ( | |
| Stream file = | |
| Assembly.GetExecutingAssembly() | |
| .GetManifestResourceStream("EPPlusTest.TestWorkbooks.PreDeleteColumn.xls")) | |
| { | |
| pck.Load(file); | |
| } | |
| var wsData = pck.Workbook.Worksheets[1]; | |
| // Act | |
| wsData.DeleteColumn(5); | |
| pck.SaveAs(new FileInfo(OutputDirectory + "AfterDeleteColumn.xlsx")); | |
| // Assert | |
| Assert.AreEqual("Id", wsData.Cells["A1"].Text); | |
| Assert.AreEqual("Title", wsData.Cells["B1"].Text); | |
| Assert.AreEqual("First Name", wsData.Cells["C1"].Text); | |
| Assert.AreEqual("Family Name", wsData.Cells["D1"].Text); | |
| } | |
| [TestMethod] | |
| [ExpectedException(typeof(ArgumentException))] | |
| public void DeleteColumnBeforeRangeMimitThrowsArgumentException() | |
| { | |
| // Arrange | |
| ExcelPackage pck = new ExcelPackage(); | |
| using ( | |
| Stream file = | |
| Assembly.GetExecutingAssembly() | |
| .GetManifestResourceStream("EPPlusTest.TestWorkbooks.PreDeleteColumn.xls")) | |
| { | |
| pck.Load(file); | |
| } | |
| var wsData = pck.Workbook.Worksheets[1]; | |
| // Act | |
| wsData.DeleteColumn(0); | |
| // Assert | |
| Assert.Fail(); | |
| } | |
| [TestMethod] | |
| [ExpectedException(typeof(ArgumentException))] | |
| public void DeleteColumnAfterRangeLimitThrowsArgumentException() | |
| { | |
| // Arrange | |
| ExcelPackage pck = new ExcelPackage(); | |
| using ( | |
| Stream file = | |
| Assembly.GetExecutingAssembly() | |
| .GetManifestResourceStream("EPPlusTest.TestWorkbooks.PreDeleteColumn.xls")) | |
| { | |
| pck.Load(file); | |
| } | |
| var wsData = pck.Workbook.Worksheets[1]; | |
| // Act | |
| wsData.DeleteColumn(16385); | |
| // Assert | |
| Assert.Fail(); | |
| } | |
| [TestMethod] | |
| public void DeleteFirstTwoColumnsFromRangeColumnsShouldBeDeleted() | |
| { | |
| // Arrange | |
| ExcelPackage pck = new ExcelPackage(); | |
| using ( | |
| Stream file = | |
| Assembly.GetExecutingAssembly() | |
| .GetManifestResourceStream("EPPlusTest.TestWorkbooks.PreDeleteColumn.xls")) | |
| { | |
| pck.Load(file); | |
| } | |
| var wsData = pck.Workbook.Worksheets[1]; | |
| // Act | |
| wsData.DeleteColumn(1, 2); | |
| pck.SaveAs(new FileInfo(OutputDirectory + "AfterDeleteColumn.xlsx")); | |
| // Assert | |
| Assert.AreEqual("First Name", wsData.Cells["A1"].Text); | |
| Assert.AreEqual("Family Name", wsData.Cells["B1"].Text); | |
| } | |
| #endregion | |
| [TestMethod] | |
| public void RangeClearMethodShouldNotClearSurroundingCells() | |
| { | |
| var wks = workbook.Worksheets.Add("test"); | |
| wks.Cells[2, 2].Value = "something"; | |
| wks.Cells[2, 3].Value = "something"; | |
| wks.Cells[2, 3].Clear(); | |
| Assert.IsNotNull(wks.Cells[2, 2].Value); | |
| Assert.AreEqual("something", wks.Cells[2, 2].Value); | |
| Assert.IsNull(wks.Cells[2, 3].Value); | |
| } | |
| private static void CompareOrderOfWorksheetsAfterSaving(ExcelPackage editedPackage) | |
| { | |
| var packageStream = new MemoryStream(); | |
| editedPackage.SaveAs(packageStream); | |
| var newPackage = new ExcelPackage(packageStream); | |
| var positionId = 1; | |
| foreach (var worksheet in editedPackage.Workbook.Worksheets) | |
| { | |
| Assert.AreEqual(worksheet.Name, newPackage.Workbook.Worksheets[positionId].Name, "Worksheets are not in the same order"); | |
| positionId++; | |
| } | |
| } | |
| } | |
| } |