Exemplo n.º 1
0
        [Test] public void TestRead()
        {
            using var f = new AggregateFileStream(Files);
            var s      = "abcdefghijklmnopqrstuvwxyz";
            var bytes  = Encoding.UTF8.GetBytes(s);
            var offset = 5;             // into 'bytes'
            int pos    = 0;             // file pos

            Assert.Equal((long)pos, f.Position);
            var read = f.Read(bytes, offset, Content0.Length / 2);

            Assert.Equal(Content0.Length / 2, read);
            Assert.Equal((long)(pos + read), f.Position);
            Assert.Equal(s.Substring(0, offset) + CombinedContent.Substring(pos, read) + s.Substring(offset + read), Encoding.UTF8.GetString(bytes));

            s = Encoding.UTF8.GetString(bytes);

            pos = CombinedContent.Length / 3;
            f.Seek(pos, SeekOrigin.Begin);
            Assert.Equal((long)pos, f.Position);

            offset = 11;
            read   = f.Read(bytes, offset, Content1.Length);
            Assert.Equal(Content1.Length, read);
            Assert.Equal((long)(pos + read), f.Position);
            Assert.Equal(s.Substring(0, offset) + CombinedContent.Substring(pos, read) + s.Substring(offset + read), Encoding.UTF8.GetString(bytes));
        }
Exemplo n.º 2
0
 [Test] public void TestGeneral()
 {
     using var f = new AggregateFileStream(Files);
     Assert.True(f.CanRead);
     Assert.True(f.CanSeek);
     Assert.False(f.CanWrite);
     Assert.Equal((long)CombinedContent.Length, f.Length);
 }
Exemplo n.º 3
0
        [Test] public void TestStream()
        {
            using (var f = new AggregateFileStream(Files))
                using (var s = new FileStream(fileN, FileMode.Create, FileAccess.Write, FileShare.Read))
                    f.CopyTo(s);

            var combined = File.ReadAllText(fileN);

            Assert.Equal(CombinedContent, combined);
        }
Exemplo n.º 4
0
 [Test] public void TestFileIndex()
 {
     using var f = new AggregateFileStream(Files);
     Assert.Equal(0, f.FileIndexAtOffset(0));
     Assert.Equal(0, f.FileIndexAtOffset(Content0.Length - 1));
     Assert.Equal(1, f.FileIndexAtOffset(Content0.Length));
     Assert.Equal(1, f.FileIndexAtOffset(Content0.Length + Content1.Length - 1));
     Assert.Equal(2, f.FileIndexAtOffset(Content0.Length + Content1.Length));
     Assert.Equal(2, f.FileIndexAtOffset(Content0.Length + Content1.Length + Content2.Length - 1));
 }
Exemplo n.º 5
0
        [Test] public void TestPosition()
        {
            using var f = new AggregateFileStream(Files);
            var bytes = Encoding.UTF8.GetBytes(CombinedContent);
            var rnd   = new Random(0);

            for (int i = 0; i != bytes.Length; ++i)
            {
                var pos = rnd.Next(bytes.Length);
                f.Position = pos;
                Assert.Equal((int)bytes[pos], f.ReadByte());
            }
        }
Exemplo n.º 6
0
        [Test] public void TestReadByte()
        {
            var bytes = new List <byte>();

            using (var f = new AggregateFileStream(Files))
            {
                for (;;)
                {
                    var b = f.ReadByte();
                    if (b == -1)
                    {
                        break;
                    }
                    bytes.Add((byte)b);
                }
            }
            Assert.Equal(CombinedContent, Encoding.UTF8.GetString(bytes.ToArray()));
        }
Exemplo n.º 7
0
 /// <summary>Open the associated files making 'Stream' valid</summary>
 public IFileSource Open()
 {
     Stream = new AggregateFileStream(m_filepaths, FileShare.ReadWrite | FileShare.Delete, file_options: FileOptions.RandomAccess);
     return(this);
 }