Exemple #1
0
        public static DemoHeader Read(Stream stream)
        {
            DemoHeader header;

            using (var reader = new BinaryReader(stream, Encoding.Default, true))
            {
                var baseHeader   = Read(reader);
                var customHeader = DemoCustomHeader.Read(reader);

                header = new DemoHeader(baseHeader.Identifier, baseHeader.SchemaVersion, baseHeader.DataVersion,
                                        baseHeader.Source, baseHeader.CreationTimeTicks, baseHeader.Assembly, customHeader);
            }

            return(header);
        }
Exemple #2
0
        public void BlockStream_EndToEnd()
        {
            string expectedString = GetRandomString(Block.DefaultSize + 10000);

            var customHeader = new DemoCustomHeader(-1, -1);
            var header       = new DemoHeader(CacheConstants.Identifier, CacheConstants.SchemaVersion,
                                              CacheConstants.DataVersion, Source.Ensembl, NumTicks, ExpectedAssembly, customHeader);

            using (var ms = new MemoryStream())
            {
                WriteBlockStream(Zstd, header, customHeader, ms, expectedString);
                ms.Position = 0;
                ReadFromBlockStream(Zstd, ms, expectedString);
            }
        }
Exemple #3
0
        // ReSharper disable once UnusedParameter.Local
        private static void ReadFromBlockStream(ICompressionAlgorithm compressionAlgorithm, Stream ms, string expectedRandomString)
        {
            // grab the header
            var header = DemoHeader.Read(ms);

            Assert.Equal(ExpectedAssembly, header.Assembly);

            using (var blockStream = new BlockStream(compressionAlgorithm, ms, CompressionMode.Decompress))
                using (var reader = new ExtendedBinaryReader(blockStream))
                {
                    CheckWriteException(blockStream);

                    // sequential string check
                    CheckString(reader, expectedRandomString);
                    CheckString(reader, SmallString);
                    CheckString(reader, FinalString);

                    // random access string check
                    blockStream.SetBlockPosition(header.Custom.FileOffset, header.Custom.InternalOffset);
                    //reader.Reset();

                    CheckString(reader, SmallString);
                }
        }
Exemple #4
0
        private static void WriteBlockStream(ICompressionAlgorithm compressionAlgorithm, DemoHeader header,
                                             DemoCustomHeader customHeader, Stream ms, string s)
        {
            using (var blockStream = new BlockStream(compressionAlgorithm, ms, CompressionMode.Compress, true))
                using (var writer = new ExtendedBinaryWriter(blockStream))
                {
                    CheckReadException(blockStream);

                    blockStream.WriteHeader(header.Write);

                    writer.WriteOptAscii(s);

                    (customHeader.FileOffset, customHeader.InternalOffset) = blockStream.GetBlockPosition();
                    Assert.Equal(customHeader.FileOffset, blockStream.Position);

                    writer.WriteOptAscii(SmallString);
                    blockStream.Flush();

                    // this will be flushed during dispose
                    writer.WriteOptAscii(FinalString);
                }
        }