private static void VerifyFile(PackFile packfile, string filename, byte[] expected, string id) { // See that it exists Assert.IsTrue(packfile.FileExists(filename), string.Format("{0} doesn't exist ({1})", filename, id)); // See that the length is ok Assert.AreEqual(expected.Length, packfile.FileLength(filename), string.Format("{0} has bad length (FileLength, {1})", filename, id)); // Test GetFileRaw int len; byte[] data = packfile.GetFileRaw(filename, out len); Assert.AreEqual(expected.Length, packfile.FileLength(filename), string.Format("{0} has bad length (GetFileRaw, {1})", filename, id)); Assert.IsTrue(Compare(data, expected), string.Format("{0} has data mismatch (GetFileRaw, {1})", filename, id)); // Test GetFile Stream strm = packfile.GetFile(filename, out len); Assert.AreEqual(expected.Length, packfile.FileLength(filename), string.Format("{0} has bad length (GetFile, {1})", filename, id)); data = new byte[len]; strm.Read(data, 0, len); strm.Close(); Assert.IsTrue(Compare(data, expected), string.Format("{0} has data mismatch (GetFile, {1})", filename, id)); }
public void AddRemove() { PackFile file1 = new PackFile("test.pck"); Assert.IsTrue(file1.AddFile("test1", TestData1), "AddFile returned false"); Assert.IsTrue(file1.AddFile("test2", TestData2), "AddFile returned false"); VerifyFile(file1, "test1", TestData1, "before file1 save"); VerifyFile(file1, "test2", TestData2, "before file1 save"); Assert.AreEqual(2, file1.FileCount, "FileCount mismatch before save"); try { file1.Save(); } catch (Exception ex) { Assert.Fail("Exception when saving file1: " + ex.Message); return; } file1 = null; PackFile file2 = new PackFile("test.pck"); try { file2.Load(); } catch (Exception ex) { Assert.Fail("Exception when loading file2: " + ex.Message); return; } Assert.AreEqual(2, file2.FileCount, "FileCount mismatch after load back"); VerifyFile(file2, "test1", TestData1, "after file2 load"); VerifyFile(file2, "test2", TestData2, "after file2 load"); file2.RemoveFile("test1"); Assert.AreEqual(1, file2.FileCount, "FileCount mismatch after remove"); Assert.IsFalse(file2.FileExists("test1"), "test1 still exists"); file2.AddFile("test3", TestData3); VerifyFile(file2, "test3", TestData3, "after file2 load"); Assert.AreEqual(2, file2.FileCount, "FileCount mismatch after add"); try { file2.Save(); } catch (Exception ex) { Assert.Fail("Exception when saving file2): " + ex.Message); return; } file2 = null; PackFile file3 = new PackFile("test.pck"); try { file3.Load(); } catch (Exception ex) { Assert.Fail("Exception when loading file3 back: " + ex.Message); return; } Assert.AreEqual(2, file3.FileCount, "FileCount mismatch after load back"); Assert.IsFalse(file3.FileExists("test1"), "test1 still exists after load back"); VerifyFile(file3, "test2", TestData2, "after file3 load"); VerifyFile(file3, "test3", TestData3, "after file3 load"); }