Beispiel #1
0
        public void SimpleWriteRead()
        {
            PackFile file1 = new PackFile("test.pck");

            Assert.IsTrue(file1.AddFile("test1", TestData1), "AddFile returned false");
            VerifyFile(file1, "test1", TestData1, "before file1 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;
            }
            VerifyFile(file2, "test1", TestData1, "after file2 load");
        }
Beispiel #2
0
        public void Save()
        {
            var path     = Path.Combine(PackReader.GetMabinogiDirectory(), "package", "language.pack");
            var contents = File.ReadAllBytes(path);
            var tempPath = Path.GetTempFileName();

            using (var pf = new PackFile(path))
            {
                pf.Save(tempPath);
            }

            using (var pf = new PackFile(tempPath))
            {
                var entry = pf.GetEntry(@"data\local\xml\auctioncategory.english.txt");
                Assert.NotEqual(null, entry);

                using (var sr = new StreamReader(entry.GetDataAsFileStream()))
                {
                    Assert.Equal(sr.ReadLine(), "1\tMelee Weapon");
                    Assert.Equal(sr.ReadLine(), "2\tOne-Handed");
                    Assert.Equal(sr.ReadLine(), "3\tTwo-Handed");
                }
            }

            File.Delete(tempPath);
        }
Beispiel #3
0
        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");
        }
Beispiel #4
0
        public void UpdateFile()
        {
            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, "after file2 load");
            VerifyFile(file1, "test2", TestData2, "after file2 load");
            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;
            }

            file2.UpdateFile("test1", TestData3);

            VerifyFile(file2, "test1", TestData3, "after update");
            VerifyFile(file2, "test2", TestData2, "after update");

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

            VerifyFile(file3, "test1", TestData3, "after file3 load");
            VerifyFile(file3, "test2", TestData2, "after file3 load");
        }
Beispiel #5
0
        public void Create()
        {
            // Create pack
            var fileTempPath = Path.GetTempFileName();
            var packTempPath = Path.GetTempFileName();

            File.WriteAllText(fileTempPath, "foo1\nbar1");

            var packFile = new PackFile();

            packFile.AddFile(fileTempPath, @"foobar\test1.txt");

            packFile.Save(packTempPath, CompressionStrength.Default);

            // Check pack
            using (var pf = new PackFile(packTempPath))
            {
                var entry = pf.GetEntry(@"data\foobar\test1.txt");
                Assert.NotEqual(null, entry);

                using (var sr = new StreamReader(entry.GetDataAsFileStream()))
                {
                    Assert.Equal(sr.ReadLine(), "foo1");
                    Assert.Equal(sr.ReadLine(), "bar1");
                    Assert.Equal(sr.ReadLine(), null);
                }
            }

            // Add second file to pack
            File.WriteAllText(fileTempPath, "foo2\nbar2");

            packFile.AddFile(fileTempPath, @"foobar\test2.txt");
            packFile.Save(packTempPath);

            // Check modified pack
            using (var pf = new PackFile(packTempPath))
            {
                var entry = pf.GetEntry(@"data\foobar\test2.txt");
                Assert.NotEqual(null, entry);

                using (var sr = new StreamReader(entry.GetDataAsFileStream()))
                {
                    Assert.Equal(sr.ReadLine(), "foo2");
                    Assert.Equal(sr.ReadLine(), "bar2");
                    Assert.Equal(sr.ReadLine(), null);
                }
            }

            // Overwrite first file in pack
            File.WriteAllText(fileTempPath, "foo3\nbar3");

            packFile.AddFile(fileTempPath, @"foobar\test1.txt");
            packFile.Save(packTempPath);

            // Check modified pack
            using (var pf = new PackFile(packTempPath))
            {
                var entry = pf.GetEntry(@"data\foobar\test1.txt");
                Assert.NotEqual(null, entry);

                using (var sr = new StreamReader(entry.GetDataAsFileStream()))
                {
                    Assert.Equal(sr.ReadLine(), "foo3");
                    Assert.Equal(sr.ReadLine(), "bar3");
                    Assert.Equal(sr.ReadLine(), null);
                }
            }

            File.Delete(fileTempPath);
            File.Delete(packTempPath);
        }