Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
        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,
            });
        }
Ejemplo n.º 4
0
        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"));
        }