public void Create_RenameRemoveAndRenameAgain_wi8047() { string filename = "file.test"; string dirToZip = Path.GetFileNameWithoutExtension(Path.GetRandomFileName()); var files = TestUtilities.GenerateFilesFlat(dirToZip); for (int m = 0; m < 2; m++) { string zipFileToCreate = Path.Combine(TopLevelDir, String.Format("Create_RenameRemoveAndRenameAgain_wi8047-{0}.zip", m)); using (var zip = new ZipFile()) { // select a single file from the list int n = _rnd.Next(files.Length); // insert the selected file into the zip, and also rename it zip.UpdateFile(files[n]).FileName = filename; // conditionally save if (m > 0) zip.Save(zipFileToCreate); // remove the original file zip.RemoveEntry(zip[filename]); // select another file from the list, making sure it is not the same file int n2 = 0; while ((n2 = _rnd.Next(files.Length)) == n) ; // insert that other file and rename it zip.UpdateFile(files[n2]).FileName = filename; zip.Save(zipFileToCreate); } Assert.AreEqual<int>(1, TestUtilities.CountEntries(zipFileToCreate), "Trial {0}: The Zip file has the wrong number of entries.", m); } }
public void UpdateZip_UpdateFile_2_NoPasswords() { string filename = null; int entriesAdded = 0; int j = 0; string repeatedLine = null; // select the name of the zip file string zipFileToCreate = Path.Combine(TopLevelDir, "UpdateZip_UpdateFile_NoPasswords.zip"); // create the subdirectory string subdir = Path.Combine(TopLevelDir, "A"); Directory.CreateDirectory(subdir); // create the files int NumFilesToCreate = _rnd.Next(23) + 14; for (j = 0; j < NumFilesToCreate; j++) { filename = Path.Combine(subdir, String.Format("file{0:D3}.txt", j)); repeatedLine = String.Format("This line is repeated over and over and over in file {0}", Path.GetFileName(filename)); TestUtilities.CreateAndFillFileText(filename, repeatedLine, _rnd.Next(34000) + 5000); entriesAdded++; } // create the zip archive Directory.SetCurrentDirectory(TopLevelDir); using (ZipFile zip1 = new ZipFile()) { String[] filenames = Directory.GetFiles("A"); foreach (String f in filenames) zip1.UpdateFile(f, ""); zip1.Comment = "UpdateTests::UpdateZip_UpdateFile_NoPasswords(): This archive will be updated."; zip1.Save(zipFileToCreate); } // Verify the number of files in the zip Assert.AreEqual<int>(TestUtilities.CountEntries(zipFileToCreate), entriesAdded, "Zoiks! The Zip file has the wrong number of entries."); // create another subdirectory subdir = Path.Combine(TopLevelDir, "updates"); Directory.CreateDirectory(subdir); // Create a bunch of new files, in that new subdirectory var UpdatedFiles = new List<string>(); int NumToUpdate = _rnd.Next(NumFilesToCreate - 4); for (j = 0; j < NumToUpdate; j++) { // select a new, uniquely named file to create do { filename = String.Format("file{0:D3}.txt", _rnd.Next(NumFilesToCreate)); } while (UpdatedFiles.Contains(filename)); // create a new file, and fill that new file with text data repeatedLine = String.Format("**UPDATED** This file ({0}) has been updated on {1}.", filename, System.DateTime.Now.ToString("yyyy-MM-dd")); TestUtilities.CreateAndFillFileText(Path.Combine(subdir, filename), repeatedLine, _rnd.Next(34000) + 5000); UpdatedFiles.Add(filename); } // update those files in the zip archive using (ZipFile zip2 = ZipFile.Read(zipFileToCreate)) { foreach (string s in UpdatedFiles) zip2.UpdateFile(Path.Combine(subdir, s), ""); zip2.Comment = "UpdateTests::UpdateZip_UpdateFile_NoPasswords(): This archive has been updated."; zip2.Save(); } // Verify the number of files in the zip Assert.AreEqual<int>(TestUtilities.CountEntries(zipFileToCreate), entriesAdded, "Zoiks! The Zip file has the wrong number of entries."); // update those files AGAIN in the zip archive using (ZipFile zip3 = ZipFile.Read(zipFileToCreate)) { foreach (string s in UpdatedFiles) zip3.UpdateFile(Path.Combine(subdir, s), ""); zip3.Comment = "UpdateTests::UpdateZip_UpdateFile_NoPasswords(): This archive has been re-updated."; zip3.Save(); } // extract the updated files and verify their contents using (ZipFile zip4 = ZipFile.Read(zipFileToCreate)) { foreach (string s in UpdatedFiles) { repeatedLine = String.Format("**UPDATED** This file ({0}) has been updated on {1}.", s, System.DateTime.Now.ToString("yyyy-MM-dd")); zip4[s].Extract("extract"); // verify the content of the updated file. var sr = new StreamReader(Path.Combine("extract", s)); string sLine = sr.ReadLine(); sr.Close(); Assert.AreEqual<string>(repeatedLine, sLine, String.Format("The content of the Updated file ({0}) in the zip archive is incorrect.", s)); } } // extract all the other files and verify their contents using (ZipFile zip5 = ZipFile.Read(zipFileToCreate)) { foreach (string s1 in zip5.EntryFileNames) { bool NotUpdated = true; foreach (string s2 in UpdatedFiles) { if (s2 == s1) NotUpdated = false; } if (NotUpdated) { zip5[s1].Extract("extract"); repeatedLine = String.Format("This line is repeated over and over and over in file {0}", s1); // verify the content of the updated file. var sr = new StreamReader(Path.Combine("extract", s1)); string sLine = sr.ReadLine(); sr.Close(); Assert.AreEqual<string>(repeatedLine, sLine, String.Format("The content of the originally added file ({0}) in the zip archive is incorrect.", s1)); } } } }
public void Create_DuplicateEntries_wi8047() { string zipFileToCreate = Path.Combine(TopLevelDir, "Create_DuplicateEntries_wi8047.zip"); string filename = "file.test"; string dirToZip = Path.GetFileNameWithoutExtension(Path.GetRandomFileName()); var files = TestUtilities.GenerateFilesFlat(dirToZip); using (var zip = new ZipFile()) { int n = _rnd.Next(files.Length); zip.UpdateFile(files[n]).FileName = filename; int n2 = 0; while ((n2 = _rnd.Next(files.Length)) == n) ; zip.UpdateFile(files[n2]).FileName = filename; zip.Save(zipFileToCreate); } }