In Test/System.IO:
[mono.git] / mcs / class / corlib / Test / System.IO / MemoryStreamTest.cs
index dea8939e693aa4d7af5a95e4e215ffc96e98a74b..88ad55cab9f50c9be11458b5f4a04a4728c4495f 100644 (file)
@@ -227,7 +227,7 @@ namespace MonoTests.System.IO
                        ms.Seek (0, SeekOrigin.Begin); 
                        testStream.Read (readBytes, 0, 100);
                        VerifyTestData ("W1", readBytes, 0, 100);
-               }               
+               }
 
                [Test]
                public void WriteBlock ()
@@ -427,12 +427,15 @@ namespace MonoTests.System.IO
                }
 
                [Test]
-               [ExpectedException (typeof (ObjectDisposedException))]
                public void Seek_Disposed () 
                {
                        MemoryStream ms = new MemoryStream ();
                        ms.Close ();
-                       ms.Seek (0, SeekOrigin.Begin);
+                       try {
+                               ms.Seek (0, SeekOrigin.Begin);
+                               Assert.Fail ();
+                       } catch (ObjectDisposedException) {
+                       }
                }
 
                [Test]
@@ -457,6 +460,32 @@ namespace MonoTests.System.IO
                        ms.SetLength (10);
                }
 
+               [Test] // bug #327053
+               [Category ("NotWorking")]
+               public void ZeroingOnExpand ()
+               {
+                       byte [] values = { 3, 2, 1 };
+                       byte [] reference = { 3, 2, 1 };
+                       byte [] cropped = { 3, 0, 0 };
+                       MemoryStream ms = new MemoryStream (values);
+                       Assert.AreEqual (values, reference, "#A1");
+                       ms.Seek (3, SeekOrigin.Begin);
+                       Assert.AreEqual (reference, values, "#A2");
+                       ms.SetLength (1);
+                       Assert.AreEqual (reference, values, "#B1");
+                       byte [] read = new byte [5];
+                       ms.Read (read, 0, 5);
+                       Assert.AreEqual (new byte [] { 0, 0, 0, 0, 0 }, read, "#B2");
+                       Assert.AreEqual (reference, values, "#B3");
+                       ms.SetLength (3);
+                       Assert.AreEqual (cropped, values, "#C1");
+                       ms.Seek (0, SeekOrigin.Begin);
+                       read = new byte [3];
+                       ms.Read (read, 0, 3);
+                       Assert.AreEqual (cropped, read, "#C2");
+                       Assert.AreEqual (cropped, values, "#C3");
+               }
+
                [Test]
                [ExpectedException (typeof (NotSupportedException))]
                public void WriteNonWritable ()
@@ -603,6 +632,14 @@ namespace MonoTests.System.IO
                        Assert.IsNotNull (ms.GetBuffer ());
                }
 
+               [Test] // bug #350860
+               public void ToArray_Empty ()
+               {
+                       MemoryStream ms = new MemoryStream (1);
+                       ms.Capacity = 0;
+                       ms.ToArray ();
+               }
+
                [Test] // bug #80205
                [Category ("NotWorking")]
                public void SerializeTest ()
@@ -683,6 +720,25 @@ namespace MonoTests.System.IO
                        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                        0x00, 0x00, 0x0b };
+#if NET_2_0
+               class MyMemoryStream : MemoryStream {
+
+                       public bool DisposedCalled = false;
+
+                       protected override void Dispose(bool disposing)
+                       {
+                               DisposedCalled = true;
+                       }
+               }
+
+               [Test] // https://bugzilla.novell.com/show_bug.cgi?id=322672
+               public void BaseDisposeCalled ()
+               {
+                       MyMemoryStream ms = new MyMemoryStream ();
+                       Assert.IsFalse (ms.DisposedCalled, "Before");
+                       ms.Close ();
+                       Assert.IsTrue (ms.DisposedCalled, "After");
+               }
+#endif
        }
 }
-