Exemplo n.º 1
0
        private string GetContents(SafeUri uri)
        {
            var demux = Provider.CreateDemuxVfs(uri.AbsoluteUri);

            using (var stream = demux.ReadStream) {
                var reader = new System.IO.StreamReader(stream);
                return(reader.ReadToEnd());
            }
        }
Exemplo n.º 2
0
        public void DemuxReadFile()
        {
            ForEachProvider(() => {
                Assert.IsTrue(File.Exists(foo));

                var demux  = Provider.CreateDemuxVfs(foo.AbsoluteUri);
                var stream = demux.ReadStream;

                // foo contains 'bar'
                Assert.AreEqual((byte)'b', stream.ReadByte());
                Assert.AreEqual((byte)'a', stream.ReadByte());
                Assert.AreEqual((byte)'r', stream.ReadByte());

                demux.CloseStream(stream);
            });
        }
Exemplo n.º 3
0
        public void DemuxCreateFile()
        {
            ForEachProvider(() => {
                var newf = Uri("newfile");
                var newp = Path("newfile");

                File.OpenWrite(newf, false).Close();
                Assert.IsTrue(File.Exists(newf));

                var demux = Provider.CreateDemuxVfs(newp);
                Assert.IsTrue(demux.IsWritable);
                Assert.IsTrue(demux.IsReadable);

                var stream = demux.WriteStream;
                Assert.IsTrue(stream.CanWrite);
                stream.WriteByte(0xAB);
                demux.CloseStream(stream);

                Assert.IsTrue(File.Exists(newf));
            });
        }
Exemplo n.º 4
0
        public void DemuxOverwriteFile()
        {
            ForEachProvider(() => {
                Assert.IsTrue(File.Exists(foo));
                Assert.AreEqual(3, File.GetSize(foo));

                var demux = Provider.CreateDemuxVfs(foo.AbsoluteUri);
                Assert.IsTrue(demux.IsWritable);
                Assert.IsTrue(demux.IsReadable);

                var stream = demux.WriteStream;
                Assert.IsTrue(stream.CanWrite);
                Assert.IsTrue(stream.CanRead);

                // Make sure can actually read from WriteStream - required by TagLib#
                // stream should contain 'bar', eg first byte == 'b'
                Assert.AreEqual(3, stream.Length);
                Assert.AreEqual((byte)'b', stream.ReadByte(), "Error in GIO backend - shouldn't happen - fix (and the Banshee GIO backend) requires gio 2.22");
                stream.Position = 0;

                // Replace the first two bytes, and truncate the third
                stream.WriteByte(0xAB);
                stream.WriteByte(0xCD);
                stream.SetLength(2);

                // And verify those bytes are readable
                stream.Position = 1;
                Assert.AreEqual(0xCD, stream.ReadByte());
                stream.Position = 0;
                Assert.AreEqual(0xAB, stream.ReadByte());

                // And make sure the file is now the right size; 2 bytes
                demux.CloseStream(stream);
                Assert.IsTrue(File.Exists(foo));
                Assert.AreEqual(2, File.GetSize(foo));
            });
        }
Exemplo n.º 5
0
 public static TagLib.File OpenFile(string file)
 {
     return(TagLib.File.Create(Provider.CreateDemuxVfs(file)));
 }
Exemplo n.º 6
0
 public static TagLib.File OpenFile(string file, string mimetype, TagLib.ReadStyle readStyle)
 {
     return(TagLib.File.Create(Provider.CreateDemuxVfs(file), mimetype, readStyle));
 }
Exemplo n.º 7
0
 public static IFileSystemEntryPermissions GetPermissions(SafeUri uri)
 {
     return(Provider.CreateDemuxVfs(uri));
 }