コード例 #1
0
        public void CtorIOException()
        {
            string          path    = TempFolder + DSC + "CTorIOException.Test";
            StdioFileStream stream  = null;
            StdioFileStream stream2 = null;

            DeleteFile(path);

            try {
                stream = new StdioFileStream(path, FileMode.CreateNew);

                // used by an another process
                stream2 = new StdioFileStream(path, FileMode.OpenOrCreate);
            } finally {
                if (stream != null)
                {
                    stream.Close();
                }
                if (stream2 != null)
                {
                    stream2.Close();
                }
                DeleteFile(path);
            }
        }
コード例 #2
0
        public void CtorAccess1Read2Read()
        {
            StdioFileStream fs       = null;
            StdioFileStream fs2      = null;
            string          tempPath = Path.Combine(TempFolder, "temp");

            try {
                if (!File.Exists(tempPath))
                {
                    TextWriter tw = File.CreateText(tempPath);
                    tw.Write("FOO");
                    tw.Close();
                }
                fs  = new StdioFileStream(tempPath, FileMode.Open, FileAccess.Read);
                fs2 = new StdioFileStream(tempPath, FileMode.Open, FileAccess.Read);
            } finally {
                if (fs != null)
                {
                    fs.Close();
                }
                if (fs2 != null)
                {
                    fs2.Close();
                }
            }
        }
コード例 #3
0
        public void PositionAfterWrite()
        {
#if XXX
            string path = TempFolder + DSC + "FST.Position.Test";
            DeleteFile(path);

            StdioFileStream stream = new StdioFileStream(path, FileMode.CreateNew,
                                                         FileAccess.ReadWrite);

            FilePosition fp;

            Assert.AreEqual(0, stream.Position, "test #01");
            Assert.AreEqual("(Mono.Unix.FilePosition 00000000",
                            (fp = stream.FilePosition).ToString().Substring(0, 32), "test#02");
            fp.Dispose();

            byte[] message = new byte[] {
                (byte)'H', (byte)'e', (byte)'l', (byte)'l', (byte)'o', (byte)' ',
                (byte)'W', (byte)'o', (byte)'r', (byte)'l', (byte)'d',
            };

            stream.Write(message, 0, message.Length);

            Assert.AreEqual(11, stream.Position, "test #03");
            Assert.AreEqual(message.Length, stream.Position, "test #04");
            Assert.AreEqual("(Mono.Unix.FilePosition 0B000000",
                            (fp = stream.FilePosition).ToString().Substring(0, 32), "test#04");
            fp.Dispose();
#endif
        }
コード例 #4
0
        public void TestDefaultProperties()
        {
#if XXX
            string path = TempFolder + Path.DirectorySeparatorChar + "testStdioFileStream.tmp.2";
            DeleteFile(path);

            StdioFileStream stream = new StdioFileStream(path, FileMode.Create);

            Assert.AreEqual(true, stream.CanRead, "test#01");
            Assert.AreEqual(true, stream.CanSeek, "test#02");
            Assert.AreEqual(true, stream.CanWrite, "test#03");
            Assert.AreEqual(0, stream.Position, "test#06");
            Assert.AreEqual("Mono.Unix.StdioFileStream", stream.ToString(), "test#07");
            stream.Close();
            DeleteFile(path);

            stream = new StdioFileStream(path, FileMode.OpenOrCreate, FileAccess.Read);
            Assert.AreEqual(true, stream.CanRead, "test#08");
            Assert.AreEqual(true, stream.CanSeek, "test#09");
            Assert.AreEqual(false, stream.CanWrite, "test#10");
            Assert.AreEqual(0, stream.Position, "test#13");
            Assert.AreEqual("Mono.Unix.StdioFileStream", stream.ToString(), "test#14");
            stream.Close();

            stream = new StdioFileStream(path, FileMode.Truncate, FileAccess.Write);
            Assert.AreEqual(false, stream.CanRead, "test#15");
            Assert.AreEqual(true, stream.CanSeek, "test#16");
            Assert.AreEqual(true, stream.CanWrite, "test#17");
            Assert.AreEqual(0, stream.Position, "test#20");
            Assert.AreEqual("Mono.Unix.StdioFileStream", stream.ToString(), "test#21");
            stream.Close();
            DeleteFile(path);
#endif
        }
コード例 #5
0
        public void CtorAccess1Read2Read()
        {
            StdioFileStream fs  = null;
            StdioFileStream fs2 = null;

            try {
                if (!File.Exists("temp"))
                {
                    TextWriter tw = File.CreateText("temp");
                    tw.Write("FOO");
                    tw.Close();
                }
                fs  = new StdioFileStream("temp", FileMode.Open, FileAccess.Read);
                fs2 = new StdioFileStream("temp", FileMode.Open, FileAccess.Read);
            } finally {
                if (fs != null)
                {
                    fs.Close();
                }
                if (fs2 != null)
                {
                    fs2.Close();
                }
                if (File.Exists("temp"))
                {
                    File.Delete("temp");
                }
            }
        }
コード例 #6
0
 public void CtorArgumentNullException()
 {
     Assert.Throws <ArgumentNullException> (() => {
         StdioFileStream stream = new StdioFileStream(null, FileMode.Create);
         stream.Close();
     });
 }
コード例 #7
0
        public void Seek()
        {
            string path = TempFolder + DSC + "FST.Seek.Test";

            DeleteFile(path);

            StdioFileStream stream  = new StdioFileStream(path, FileMode.CreateNew, FileAccess.ReadWrite);
            StdioFileStream stream2 = new StdioFileStream(path, FileMode.Open, FileAccess.ReadWrite);

            stream.Write(new byte [] { 1, 2, 3, 4, 5, 6, 7, 8, 10 }, 0, 9);
            Assert.AreEqual(5, stream2.Seek(5, SeekOrigin.Begin), "test#01");
            Assert.AreEqual(-1, stream2.ReadByte(), "test#02");

            Assert.AreEqual(2, stream2.Seek(-3, SeekOrigin.Current), "test#03");
            Assert.AreEqual(-1, stream2.ReadByte(), "test#04");

            Assert.AreEqual(12, stream.Seek(3, SeekOrigin.Current), "test#05");
            Assert.AreEqual(-1, stream.ReadByte(), "test#06");

            Assert.AreEqual(5, stream.Seek(-7, SeekOrigin.Current), "test#07");
            Assert.AreEqual(6, stream.ReadByte(), "test#08");

            Assert.AreEqual(5, stream2.Seek(5, SeekOrigin.Begin), "test#09");
            Assert.AreEqual(6, stream2.ReadByte(), "test#10");

            stream.Close();
            stream2.Close();

            DeleteFile(path);
        }
コード例 #8
0
        public void CtorArgumentException1()
        {
            StdioFileStream stream;

            stream = new StdioFileStream("", FileMode.Create);
            stream.Close();
        }
コード例 #9
0
        public void TestWriteVerifyAccessMode()
        {
            string path = TempFolder + Path.DirectorySeparatorChar + "temp";

            DeleteFile(path);

            StdioFileStream stream = null;

            byte[] buffer;

            try
            {
                buffer = Encoding.ASCII.GetBytes("test");
                stream = new StdioFileStream(path, FileMode.OpenOrCreate, FileAccess.Read);
                stream.Write(buffer, 0, buffer.Length);
            }
            finally
            {
                if (stream != null)
                {
                    stream.Close();
                }
                DeleteFile(path);
            }
        }
コード例 #10
0
        public void CtorDirectoryNotFoundException()
        {
            string path = TempFolder + DSC + "thisDirectoryShouldNotExists";

            if (Directory.Exists(path))
            {
                Directory.Delete(path, true);
            }

            StdioFileStream stream = null;

            try {
                stream = new StdioFileStream(path + DSC + "eitherthisfile.test", FileMode.CreateNew);
            } finally {
                if (stream != null)
                {
                    stream.Close();
                }

                if (Directory.Exists(path))
                {
                    Directory.Delete(path, true);
                }
            }
        }
コード例 #11
0
        public void TestSeek()
        {
            string path = TempFolder + Path.DirectorySeparatorChar + "TestSeek";

            DeleteFile(path);

            StdioFileStream stream = new StdioFileStream(path, FileMode.CreateNew, FileAccess.ReadWrite);

            stream.Write(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, 0, 10);

            stream.Seek(5, SeekOrigin.End);
            Assert.AreEqual(-1, stream.ReadByte(), "test#01");

            stream.Seek(-5, SeekOrigin.End);
            Assert.AreEqual(6, stream.ReadByte(), "test#02");

            try
            {
                stream.Seek(-11, SeekOrigin.End);
                Assert.Fail();
            }
            catch (Exception e)
            {
                Assert.AreEqual(typeof(IOException), e.GetType(), "test#03");
            }

            stream.Seek(19, SeekOrigin.Begin);
            Assert.AreEqual(-1, stream.ReadByte(), "test#04");

            stream.Seek(1, SeekOrigin.Begin);
            Assert.AreEqual(2, stream.ReadByte(), "test#05");

            stream.Seek(3, SeekOrigin.Current);
            Assert.AreEqual(6, stream.ReadByte(), "test#06");

            stream.Seek(-2, SeekOrigin.Current);
            Assert.AreEqual(5, stream.ReadByte(), "test#07");

            stream.Flush();

            // Test that seeks work correctly when seeking inside the buffer
            stream.Seek(0, SeekOrigin.Begin);
            stream.WriteByte(0);
            stream.WriteByte(1);
            stream.Seek(0, SeekOrigin.Begin);
            byte[] buf = new byte [1];
            buf [0] = 2;
            stream.Write(buf, 0, 1);
            stream.Write(buf, 0, 1);
            stream.Flush();
            stream.Seek(0, SeekOrigin.Begin);
            Assert.AreEqual(2, stream.ReadByte(), "test#08");
            Assert.AreEqual(2, stream.ReadByte(), "test#09");

            stream.Close();

            DeleteFile(path);
        }
コード例 #12
0
        public void SetLengthWithClosedBaseStream()
        {
            StdioFileStream fs = new StdioFileStream("temp", FileMode.Create);
            BufferedStream  bs = new BufferedStream(fs);

            fs.Close();

            bs.SetLength(1000);
        }
コード例 #13
0
        public void Seek_InvalidSeekOrigin()
        {
            string path = TempFolder + Path.DirectorySeparatorChar + "temp";

            DeleteFile(path);

            using (StdioFileStream stream = new StdioFileStream(path, FileMode.OpenOrCreate, FileAccess.Read)) {
                stream.Seek(0, (SeekOrigin)(-1));
            }
        }
コード例 #14
0
        public void Seek_Disposed()
        {
            string path = TempFolder + Path.DirectorySeparatorChar + "temp";

            DeleteFile(path);
            StdioFileStream stream = new StdioFileStream(path, FileMode.OpenOrCreate, FileAccess.Write);

            stream.Close();
            stream.Seek(0, SeekOrigin.Begin);
        }
コード例 #15
0
 public void Flush_Disposed()
 {
     Assert.Throws <ObjectDisposedException> (() => {
         string path = TempFolder + Path.DirectorySeparatorChar + "temp";
         DeleteFile(path);
         StdioFileStream stream = new StdioFileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
         stream.Close();
         stream.Flush();
     });
 }
コード例 #16
0
        public void Write_CountOverflow()
        {
            string path = TempFolder + Path.DirectorySeparatorChar + "temp";

            DeleteFile(path);

            using (StdioFileStream stream = new StdioFileStream(path, FileMode.OpenOrCreate, FileAccess.Write)) {
                stream.Write(new byte[0], 1, Int32.MaxValue);
            }
        }
コード例 #17
0
        public void Write_OffsetNegative()
        {
            string path = TempFolder + Path.DirectorySeparatorChar + "temp";

            DeleteFile(path);

            using (StdioFileStream stream = new StdioFileStream(path, FileMode.OpenOrCreate, FileAccess.Write)) {
                stream.Write(new byte[0], -1, 1);
            }
        }
コード例 #18
0
        public void SetLengthWithClosedBaseStream()
        {
            string          path = TempFolder + Path.DirectorySeparatorChar + "temp";
            StdioFileStream fs   = new StdioFileStream(path, FileMode.Create);
            BufferedStream  bs   = new BufferedStream(fs);

            fs.Close();

            bs.SetLength(1000);
        }
コード例 #19
0
        public void Read_CountNegative()
        {
            string path = TempFolder + Path.DirectorySeparatorChar + "temp";

            DeleteFile(path);

            using (StdioFileStream stream = new StdioFileStream(path, FileMode.OpenOrCreate, FileAccess.Read)) {
                stream.Read(new byte[0], 1, -1);
            }
        }
コード例 #20
0
        public void Read_OffsetOverflow()
        {
            string path = TempFolder + Path.DirectorySeparatorChar + "temp";

            DeleteFile(path);

            using (StdioFileStream stream = new StdioFileStream(path, FileMode.OpenOrCreate, FileAccess.Read)) {
                stream.Read(new byte[0], Int32.MaxValue, 1);
            }
        }
コード例 #21
0
        public void Position_Disposed()
        {
            string path = TempFolder + Path.DirectorySeparatorChar + "temp";

            DeleteFile(path);
            StdioFileStream stream = new StdioFileStream(path, FileMode.OpenOrCreate, FileAccess.Read);

            stream.Close();
            stream.Position = 0;
        }
コード例 #22
0
        public void Write_OffsetOverflow()
        {
            Assert.Throws <ArgumentException> (() => {
                string path = TempFolder + Path.DirectorySeparatorChar + "temp";
                DeleteFile(path);

                using (StdioFileStream stream = new StdioFileStream(path, FileMode.OpenOrCreate, FileAccess.Write)) {
                    stream.Write(new byte[0], Int32.MaxValue, 1);
                }
            });
        }
コード例 #23
0
        public void Write_CountNegative()
        {
            Assert.Throws <ArgumentOutOfRangeException> (() => {
                string path = TempFolder + Path.DirectorySeparatorChar + "temp";
                DeleteFile(path);

                using (StdioFileStream stream = new StdioFileStream(path, FileMode.OpenOrCreate, FileAccess.Write)) {
                    stream.Write(new byte[0], 1, -1);
                }
            });
        }
コード例 #24
0
        public void SetLengthWithClosedBaseStream()
        {
            Assert.Throws <NotSupportedException> (() => {
                string path        = TempFolder + Path.DirectorySeparatorChar + "temp";
                StdioFileStream fs = new StdioFileStream(path, FileMode.Create);
                BufferedStream bs  = new BufferedStream(fs);
                fs.Close();

                bs.SetLength(1000);
            });
        }
コード例 #25
0
        public void ReadBytePastEndOfStream()
        {
            string path = TempFolder + Path.DirectorySeparatorChar + "temp";

            DeleteFile(path);
            using (StdioFileStream stream = new StdioFileStream(path, FileMode.OpenOrCreate, FileAccess.Read)) {
                stream.Seek(0, SeekOrigin.End);
                Assert.AreEqual(-1, stream.ReadByte(), "ReadByte");
                stream.Close();
            }
        }
コード例 #26
0
        public void Flush()
        {
#if XXX
            // This test depends too much on the internal implementation of stdio's FILE

            string          path    = TempFolder + DSC + "StdioFileStreamTest.Flush";
            StdioFileStream stream  = null;
            StdioFileStream stream2 = null;

            DeleteFile(path);

            try
            {
                stream  = new StdioFileStream(path, FileMode.CreateNew, FileAccess.ReadWrite);
                stream2 = new StdioFileStream(path, FileMode.Open, FileAccess.ReadWrite);

                stream.Write(new byte [] { 1, 2, 3, 4, 5 }, 0, 5);

                byte [] bytes = new byte [5];
                stream2.Read(bytes, 0, 5);

                Assert.AreEqual(0, bytes [0], "test#01");
                Assert.AreEqual(0, bytes [1], "test#02");
                Assert.AreEqual(0, bytes [2], "test#03");
                Assert.AreEqual(0, bytes [3], "test#04");

                stream.Flush();
                stream2.Read(bytes, 0, 5);
                Assert.AreEqual(1, bytes [0], "test#05");
                Assert.AreEqual(2, bytes [1], "test#06");
                Assert.AreEqual(3, bytes [2], "test#07");
                Assert.AreEqual(4, bytes [3], "test#08");
            }
            finally
            {
                if (stream != null)
                {
                    stream.Close();
                }
                if (stream2 != null)
                {
                    stream2.Close();
                }

                Console.WriteLine("P: " + path);
                //DeleteFile (path);
            }
#endif
        }
コード例 #27
0
        public void Length()
        {
            // Test that the Length property takes into account the data
            // in the buffer
            string path = TempFolder + DSC + "StdioFileStreamTest.Length";

            DeleteFile(path);

            StdioFileStream stream = new StdioFileStream(path, FileMode.CreateNew);

            byte[] outbytes = new byte [] { 1, 2, 3, 4 };

            stream.Write(outbytes, 0, 4);
            Assert.AreEqual(stream.Length, 4);
            stream.Close();
        }
コード例 #28
0
        public void CtorArgumentOutOfRangeException2()
        {
            StdioFileStream stream = null;
            string          path   = TempFolder + Path.DirectorySeparatorChar + "temp";

            DeleteFile(path);
            try {
                stream = new StdioFileStream("test.test.test", FileMode.Append | FileMode.Open);
            } finally {
                if (stream != null)
                {
                    stream.Close();
                }
                DeleteFile(path);
            }
        }
コード例 #29
0
        public void CtorFileNotFoundException1()
        {
            string path = TempFolder + DSC + "thisfileshouldnotexists.test";

            DeleteFile(path);
            StdioFileStream stream = null;

            try {
                stream = new StdioFileStream(path, FileMode.Open);
            } finally {
                if (stream != null)
                {
                    stream.Close();
                }
                DeleteFile(path);
            }
        }
コード例 #30
0
        public void TestCtr()
        {
            string path = TempFolder + DSC + "testfilestream.tmp.1";

            DeleteFile(path);
            StdioFileStream stream = null;

            try {
                stream = new StdioFileStream(path, FileMode.Create);
            } finally {
                if (stream != null)
                {
                    stream.Close();
                }
                DeleteFile(path);
            }
        }