1 // UnixMarshalTests.cs - NUnit2 Test Cases for Mono.Unix.UnixMarshal class
4 // Jonathan Pryor (jonpryor@vt.edu)
6 // (c) 2005 Jonathan Pryor
12 using System.Runtime.InteropServices;
16 namespace MonoTests.Mono.Unix {
18 class RandomEncoding : UTF8Encoding {
19 public RandomEncoding ()
24 public override int GetMaxByteCount (int value)
31 public class UnixMarshalTest {
33 public static void Main ()
35 string s = UnixMarshal.GetErrorDescription (Errno.ERANGE);
36 Console.WriteLine ("ERANGE={0}", s);
37 s = UnixMarshal.GetErrorDescription ((Errno) 999999);
38 Console.WriteLine ("Invalid={0}", s);
43 public void TestStringToHeap ()
46 "Hello, world!", true, true,
47 "MS Pゴシック", false, true,
50 for (int i = 0; i < data.Length; i += 3) {
51 string s = (string) data [i+0];
52 bool valid_ascii = (bool) data [i+1];
53 bool valid_unicode = (bool) data [i+2];
55 StringToHeap (s, valid_ascii, valid_unicode);
59 private static void StringToHeap (string s, bool validAscii, bool validUnicode)
61 StringToHeap (s, Encoding.ASCII, validAscii);
62 StringToHeap (s, Encoding.UTF7, validUnicode);
63 StringToHeap (s, Encoding.UTF8, validUnicode);
64 StringToHeap (s, Encoding.Unicode, validUnicode);
65 StringToHeap (s, Encoding.BigEndianUnicode, validUnicode);
66 StringToHeap (s, new RandomEncoding (), validUnicode);
69 private static void StringToHeap (string s, Encoding e, bool mustBeEqual)
71 IntPtr p = UnixMarshal.StringToHeap (s, e);
73 string _s = UnixMarshal.PtrToString (p, e);
75 Assert.AreEqual (s, _s, "#TSTA (" + e.GetType() + ")");
78 UnixMarshal.FreeHeap (p);
83 public void TestPtrToString ()
85 IntPtr p = UnixMarshal.AllocHeap (1);
86 Marshal.WriteByte (p, 0);
87 string s = UnixMarshal.PtrToString (p);
88 UnixMarshal.FreeHeap (p);