public void TestLoadCompressedFileHeaders() { var loader = new ContainerFileLoader(); AnnoRDA.FileSystem fileSystem; using (var context = new ContainerFileLoader.Context("dummy.rda", TestData.GetStream("FileHeaders/2.2_multiple_file_headers_compressed.bin"), false, new PassThroughFileHeaderTransformer())) { var block = new AnnoRDA.FileEntities.BlockHeader() { Offset = context.Reader.StreamLength, IsCompressed = true, NumFiles = 2, CompressedFileHeadersSize = context.Reader.StreamLength, UncompressedFileHeadersSize = 1120, }; loader.LoadFileHeaders(context, block); fileSystem = context.FileSystem; } Assert.ContainsFile(fileSystem, new Assert.FileSpec("path", "to", "file1.txt") { DataOffset = 11111111, CompressedFileSize = 36960, UncompressedFileSize = 36960, ModificationDate = new DateTime(2015, 11, 24, 21, 1, 21, DateTimeKind.Utc), }); Assert.ContainsFile(fileSystem, new Assert.FileSpec("path", "to", "file2.txt") { DataOffset = 11148071, CompressedFileSize = 36960, UncompressedFileSize = 36960, ModificationDate = new DateTime(2015, 11, 24, 21, 1, 22, DateTimeKind.Utc), }); }
public void TestLoadContainerWithInvalidHeader() { Exception exception = Assert.Throws <AnnoRDA.FileFormatException>(() => { using (var context = new ContainerFileLoader.Context("dummy.rda", TestData.GetStream(new byte[] { }), false, new PassThroughFileHeaderTransformer())) { this.loader.Load(context, null, CancellationToken.None); } }); Assert.Equal(new AnnoRDA.FileFormatException(AnnoRDA.FileFormatException.EntityType.RDAHeader, AnnoRDA.FileFormatException.Error.UnexpectedEndOfFile, 0), exception); exception = Assert.Throws <AnnoRDA.FileFormatException>(() => { this.loader.Load(TestData.GetPath("Containers/2.2_header_cut_off_before_first_block_offset.rda")); }); Assert.Equal(new AnnoRDA.FileFormatException(AnnoRDA.FileFormatException.EntityType.RDAHeader, AnnoRDA.FileFormatException.Error.UnexpectedEndOfFile, 784), exception); exception = Assert.Throws <AnnoRDA.FileFormatException>(() => { this.loader.Load(TestData.GetPath("Containers/2.2_header_cut_off_inside_first_block_offset.rda")); }); Assert.Equal(new AnnoRDA.FileFormatException(AnnoRDA.FileFormatException.EntityType.RDAHeader, AnnoRDA.FileFormatException.Error.UnexpectedEndOfFile, 791), exception); var stream = TestData.GetStream(new byte[] { 12, 43, 21, 0, 4, 2, 1, 54, 21, 23, 44, 1, 2, 3, 4, 5, 6, 21, 122, 99 }); exception = Assert.Throws <AnnoRDA.FileFormatException>(() => { using (var context = new ContainerFileLoader.Context("dummy.rda", stream, false, new PassThroughFileHeaderTransformer())) { this.loader.Load(context, null, CancellationToken.None); } }); Assert.Equal(new AnnoRDA.FileFormatException(AnnoRDA.FileFormatException.EntityType.RDAHeader, AnnoRDA.FileFormatException.Error.InvalidValue, 0), exception); }
public void TestOverwriteFileInFileSystem() { var folderPath = new AnnoRDA.Folder("path"); { var folderTo = new AnnoRDA.Folder("to"); { folderTo.Add(new AnnoRDA.File("file.txt") { ModificationDate = new DateTime(), }); } folderPath.Add(folderTo); } var file = new AnnoRDA.FileEntities.FileHeader() { Path = "path/to/file.txt", DataOffset = 11111111, CompressedFileSize = 36960, UncompressedFileSize = 36960, ModificationTimestamp = 1448398881, }; var loader = new ContainerFileLoader(); AnnoRDA.FileSystem fileSystem; using (var context = new ContainerFileLoader.Context("dummy.rda", TestData.GetStream(), false, new PassThroughFileHeaderTransformer())) { fileSystem = context.FileSystem; fileSystem.Root.Add(folderPath); loader.AddFileToFileSystem(context, file, TestData.GetDummyBlockContentsSource()); } Assert.FolderAndFileCountAreEqual(1, 0, fileSystem.Root); Assert.FolderAndFileCountAreEqual(1, 0, fileSystem.Root.Folders.First()); Assert.FolderAndFileCountAreEqual(0, 1, fileSystem.Root.Folders.First().Folders.First()); Assert.ContainsFile(fileSystem, new Assert.FileSpec("path", "to", "file.txt") { CompressedFileSize = 36960, UncompressedFileSize = 36960, ModificationTimestamp = 1448398881, }); }
public void TestAddFileToEmptyFileSystem() { var file = new AnnoRDA.FileEntities.FileHeader() { Path = "path/to/file.txt", DataOffset = 11111111, CompressedFileSize = 36960, UncompressedFileSize = 36960, ModificationTimestamp = 1448398881, }; var loader = new ContainerFileLoader(); AnnoRDA.FileSystem fileSystem; using (var context = new ContainerFileLoader.Context("dummy.rda", TestData.GetStream(), false, new PassThroughFileHeaderTransformer())) { loader.AddFileToFileSystem(context, file, TestData.GetDummyBlockContentsSource()); fileSystem = context.FileSystem; } Assert.FolderAndFileCountAreEqual(1, 0, fileSystem); Assert.ContainsFile(fileSystem, new Assert.FileSpec("path", "to", "file.txt")); }