示例#1
0
        public void TestBSACreation()
        {
            const string outputPath      = "output.bsa";
            const string expectedContent = "Hello World!";
            const string dummyFile       = "bsa-dummy-file.txt";

            File.WriteAllText(dummyFile, expectedContent, Encoding.ASCII);
            var fi             = new FileInfo(dummyFile);
            var expectedLength = fi.Length;

            var creator = new BSACreator();

            creator.AddFile(dummyFile, "text\\test.txt");
            creator.WriteToFile(outputPath);

            Assert.True(File.Exists(outputPath));

            using var reader = new BSAReader(outputPath);
            Assert.Single(reader.Folders);
            Assert.Single(reader.Files);

            var folder = reader.Folders.First();
            var file   = reader.Files.First();

            Assert.Equal("text", folder.Name);
            Assert.Equal("test.txt", file.Name);
            Assert.Equal((uint)expectedLength, file.Size);

            using var ms = new MemoryStream();
            reader.CopyFileTo(file, ms);
            var buffer = new byte[ms.Length];

            ms.Read(buffer, 0, buffer.Length);

            var actualContents = Encoding.ASCII.GetString(buffer);

            Assert.Equal(expectedContent, actualContents);
        }
示例#2
0
        public void TestBSAParsing()
        {
            const string file = "test-bsa.bsa";
            var          path = Path.Combine("files", file);

            using var reader = new BSAReader(path);
            Assert.Equal(115, reader.Files.Count);
            Assert.Equal(10, reader.Folders.Count);

            const string expectedContents = "@#$%";

            var fileInfo = reader.Files.First(x => x.Name.Equals("s.txt"));

            using var ms = new MemoryStream();
            reader.CopyFileTo(fileInfo, ms);
            var buffer = new byte[ms.Length];

            ms.Read(buffer, 0, buffer.Length);

            var actualContents = Encoding.UTF8.GetString(buffer);

            Assert.Equal(expectedContents, actualContents);
        }