|  | 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++; | 
|  | } | 
|  | } | 
|  | } | 
|  | } |