2006-08-31 Robert Jordan <robertj@gmx.net>
authorRobert Jordan <robertj@gmx.net>
Thu, 31 Aug 2006 19:57:17 +0000 (19:57 -0000)
committerRobert Jordan <robertj@gmx.net>
Thu, 31 Aug 2006 19:57:17 +0000 (19:57 -0000)
* MarshalTest.cs: Added tests for PtrToStringAuto/StringToHGlobalAuto.

svn path=/trunk/mcs/; revision=64660

mcs/class/corlib/Test/System.Runtime.InteropServices/ChangeLog
mcs/class/corlib/Test/System.Runtime.InteropServices/MarshalTest.cs

index b7f9e9aafd45cb0675b6e5cb62585ed7d39bb0fa..8be50bc21ce253bf5c410a377112e41dc5224abc 100644 (file)
@@ -1,3 +1,7 @@
+2006-08-31 Robert Jordan  <robertj@gmx.net>
+
+       * MarshalTest.cs: Added tests for PtrToStringAuto/StringToHGlobalAuto.
+
 2005-08-28  Sebastien Pouliot  <sebastien@ximian.com> 
 
        * MarshalTest.cs: Added test for ReadInt32 (versus arch endianess).
index a011bb86c137921670312a781f63bab2384892f2..51c8d2f0b2fe258c68d51f702e219992e3d2feff 100644 (file)
@@ -337,6 +337,35 @@ namespace MonoTests.System.Runtime.InteropServices
                {
                        Marshal.GetComSlotForMethodInfo (typeof(TestCoClass).GetMethod ("DoNothing"));
                }
+
+               [Test]
+               public void TestPtrToStringAuto ()
+               {
+                       string input = Guid.NewGuid ().ToString ();
+                       string output;
+                       string output2;
+                       int len = 4;
+                       IntPtr ptr;
+
+                       if (Environment.OSVersion.Platform == PlatformID.Win32NT) {
+                               // Auto -> Uni
+                               ptr = Marshal.StringToHGlobalAuto (input);
+                               output = Marshal.PtrToStringUni (ptr);
+                               output2 = Marshal.PtrToStringUni (ptr, len);
+                       } else {
+                               // Auto -> Ansi
+                               ptr = Marshal.StringToHGlobalAuto (input);
+                               output = Marshal.PtrToStringAnsi (ptr);
+                               output2 = Marshal.PtrToStringAnsi (ptr, len);
+                       }
+
+                       try {
+                               Assert.AreEqual (input, output, "#1");
+                               Assert.AreEqual (input.Substring (0, len), output2, "#2");
+                       } finally {
+                               Marshal.FreeHGlobal (ptr);
+                       }
+               }
        }
 
        [ComImport()]