Author: miguel
Date: 2007-01-13 02:20:33 -0500 (Sat, 13 Jan 2007)
New Revision: 70954

Added:
   trunk/mcs/class/corlib/Test/System.IO/UnmanagedMemoryStreamTest.cs
Modified:
   trunk/mcs/class/corlib/corlib_test.dll.sources
Log:
Add tests

Added: trunk/mcs/class/corlib/Test/System.IO/UnmanagedMemoryStreamTest.cs
===================================================================
--- trunk/mcs/class/corlib/Test/System.IO/UnmanagedMemoryStreamTest.cs  
2007-01-13 07:08:52 UTC (rev 70953)
+++ trunk/mcs/class/corlib/Test/System.IO/UnmanagedMemoryStreamTest.cs  
2007-01-13 07:20:33 UTC (rev 70954)
@@ -0,0 +1,290 @@
+//
+// System.IO.UnmanagedMemoryStreamTest.cs
+//
+// Authors:
+//     Sridhar Kulkarni ([EMAIL PROTECTED])
+//
+// (c) 2006 Sridhar Kulkarni.
+// Copyright (C) 2004 Novell (http://www.novell.com)
+//
+#if NET_2_0
+using NUnit.Framework;
+using System.IO;
+using System;
+using System.Text;
+using System.Runtime.InteropServices;
+using System.Collections;
+
+namespace MonoTests.System.IO
+{
+       [TestFixture]
+       public unsafe class UnmanagedMemoryStreamTest {
+               UnmanagedMemoryStream testunmanagedStream;
+               byte[] testStreamData;
+               byte[] readData;
+               IntPtr mem_intptr = IntPtr.Zero;
+               byte* mem_byteptr = null;
+               int length;
+               int capacity;
+               
+               [SetUp]
+               void SetUp()
+               {
+                       testStreamData = UnicodeEncoding.Unicode.GetBytes("Here 
is some mono testdata");
+                       mem_intptr = 
Marshal.AllocHGlobal(testStreamData.Length);
+                       mem_byteptr = (byte*)mem_intptr.ToPointer();
+                       length = testStreamData.Length;
+                       capacity = testStreamData.Length;
+                       readData = new byte[length];
+               }
+               
+               public void AssertIsNull(string message, object obj)
+               {
+                       Assert.IsNull(obj, message);
+               }
+               public void AssertEquals(string message, long expected, long 
actual)
+               {
+                       Assert.AreEqual(expected, actual, message);
+               }
+
+               public void AssertEquals(string message, int expected, int 
actual)
+               {
+                       Assert.AreEqual(expected, actual, message);
+               }
+
+               //
+               // Verify that the first count bytes in testBytes are the same 
as
+               // the count bytes from index start in testStreamData
+               //
+               void VerifyTestData(string id, byte[] testBytes, int start, int 
count)
+               {
+                       if (testBytes == null)
+                               Assert.Fail(id + "+1 testBytes is null");
+                       
+                       if (start < 0 ||
+                           count < 0 ||
+                           start + count > testStreamData.Length ||
+                           start > testStreamData.Length)
+                               throw new ArgumentOutOfRangeException(id + 
"+2");
+                       
+                       for (int test = 0; test < count; test++)
+                       {
+                               if (testBytes[test] == testStreamData[start + 
test])
+                                       continue;
+                               
+                               string failStr = "testByte {0} (testStream {1}) 
was <{2}>, expecting <{3}>";
+                               failStr = String.Format(failStr,
+                                                       test,
+                                                       start + test,
+                                                       testBytes[test],
+                                                       testStreamData[start + 
test]);
+                               Assert.Fail(id + "-3" + failStr);
+                       }
+               }
+               
+
+               //Test construction
+               [Test]
+               public void ConstructorOne(){
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length);
+                       AssertEquals("#01", (long)length, ums.Length);
+                       AssertEquals("#02", 0L, ums.Position);
+                       ums.Position = (length-2);
+                       AssertEquals("#03", (long)(length - 2), ums.Position);
+                       ums.Position = 0;
+                       ums.Seek(3L, SeekOrigin.Begin);
+                       AssertEquals("#04", 3L, ums.Position);
+                       ums.Close();
+               }
+               
+               [Test]
+               public void ConstructorTwo()
+               {
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length, 
capacity, FileAccess.Write);
+               }
+               
+               [Test]
+               public void ConstrucorThree(){
+                       
+
+               }
+               [Test]
+               public void ReadBlock()
+               {
+                       //Test simple read half of stream
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length);
+                       ums.Read(readData, 0, (length/2));
+                       VerifyTestData("R1", readData, 0, (length/2));
+                       
+                       //Seek back to begining
+                       ums.Seek(0, SeekOrigin.Begin);
+                       
+                       //Read complete stream
+                       ums.Read(readData, 0, length);
+                       VerifyTestData("r2", readData, 0, length);
+                       
+                       //Seek to mid of the stream and read till end
+                       ums.Seek((length / 2), SeekOrigin.Begin);
+                       ums.Read(readData, 0, (length / 2));
+                       VerifyTestData("r3", readData, 0, (length/2));
+                       ums.Close();
+               }
+
+               [Test]
+               public void ReadBytes()
+               {
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length);
+                       ums.Seek(0, SeekOrigin.Begin);
+                       AssertEquals("#R1", (int) 
(testStreamData.GetEnumerator()).Current, (ums.ReadByte()));
+                       ums.Seek(length, SeekOrigin.Begin);
+                       AssertEquals("#R2", -1, (ums.ReadByte()));
+                       ums.Close();
+               }
+               [Test]
+               public void WriteBlock()
+               {
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length, 
capacity, FileAccess.ReadWrite);
+                       ums.Write(testStreamData, 0, length);
+                       ums.Read(readData, 0, length);
+                       VerifyTestData("RW1", readData, 0, length);
+                       ums.Close();
+               }
+               [Test]
+               public void WriteBytes()
+               {
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length, 
capacity, FileAccess.ReadWrite);
+                       IEnumerator enumerator = testStreamData.GetEnumerator();
+                       ums.WriteByte((byte)enumerator.Current);
+                       ums.Seek(0, SeekOrigin.Begin);
+                       AssertEquals("RW2", (int)enumerator.Current, 
ums.ReadByte());
+               }
+               
+               [Test]
+               [ExpectedException(typeof(NotSupportedException))]
+               public void _SetLength()
+               {
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length);
+                       ums.SetLength((length - 2));
+                       ums.Close();
+               }
+               [Test]
+               [ExpectedException(typeof(ObjectDisposedException))]
+               public void Capacity_Disposed()
+               {
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length);
+                       ums.Close();
+                       long capacity = ums.Capacity;
+               }
+               [Test]
+               [ExpectedException(typeof(ObjectDisposedException))]
+               public void Seek_Disposed()
+               {
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length);
+                       ums.Close();
+                       ums.Seek(0, SeekOrigin.Begin);
+               }
+               [Test]
+               [ExpectedException(typeof(ObjectDisposedException))]
+               public void Close_get_Length()
+               {
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length);
+                       ums.Close();
+                       long x = ums.Length;
+               }
+               
+               [Test]
+               [ExpectedException(typeof(ObjectDisposedException))]
+               public void Close_get_Position()
+               {
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length);
+                       ums.Close();
+                       long x = ums.Position;
+               }
+               [Test]
+               [ExpectedException(typeof(ObjectDisposedException))]
+               public void Close_set_Position()
+               {
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length);
+                       ums.Close();
+                       ums.Position = (length - 1);// Set to some acceptable 
value.
+               }
+               [Test]
+               [ExpectedException(typeof(ObjectDisposedException))]
+               public void Close_get_PositionPointer()
+               {
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length);
+                       ums.Close();
+                       byte* bptr = ums.PositionPointer;
+               }
+               [Test]
+               [ExpectedException(typeof(ObjectDisposedException))]
+               public void Close_set_PositionPointer()
+               {
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length);
+                       ums.Close();
+                       ums.PositionPointer = (byte *) (length - 1); //position 
pointer to somewhere within the length/capacity
+               }
+               
+               [Test]
+               [ExpectedException(typeof(ObjectDisposedException))]
+               public void Close_Flush()
+               {
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length);
+                       ums.Close();
+                       ums.Flush();
+               }
+               [Test]
+               [ExpectedException(typeof(ObjectDisposedException))]
+               public void Close_Read()
+               {
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length);
+                       ums.Close();
+                       ums.Read(readData, 0, (length-2));
+               }
+               [Test]
+               [ExpectedException(typeof(ObjectDisposedException))]
+               public void Close_ReadByte()
+               {
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length);
+                       ums.Close();
+                       int read_byte = ums.ReadByte();
+               }
+               [Test]
+               [ExpectedException(typeof(ObjectDisposedException))]
+               public void Close_Write()
+               {
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length);
+                       ums.Close();
+                       ums.Write(testStreamData, 0, length);
+               }
+               [Test]
+               [ExpectedException(typeof(ObjectDisposedException))]
+               public void Close_WriteByte()
+               {
+                       UnmanagedMemoryStream ums = new 
+                               UnmanagedMemoryStream(mem_byteptr, length);
+                       ums.Close();
+                       ums.WriteByte(0x12);
+               }
+       }
+}
+#endif
+


Property changes on: 
trunk/mcs/class/corlib/Test/System.IO/UnmanagedMemoryStreamTest.cs
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: trunk/mcs/class/corlib/corlib_test.dll.sources
===================================================================
--- trunk/mcs/class/corlib/corlib_test.dll.sources      2007-01-13 07:08:52 UTC 
(rev 70953)
+++ trunk/mcs/class/corlib/corlib_test.dll.sources      2007-01-13 07:20:33 UTC 
(rev 70954)
@@ -80,6 +80,7 @@
 System.IO/StringReaderTest.cs
 System.IO/StringWriterTest.cs
 System.IO/TextWriterTest.cs
+System.IO/UnmanagedMemoryStreamTest.cs
 System.IO.IsolatedStorage/IsolatedStorageTest.cs
 System.IO.IsolatedStorage/IsolatedStorageFileTest.cs
 System.IO.IsolatedStorage/IsolatedStorageFileStreamTest.cs

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to