[System] UriKind.RelativeOrAbsolute workaround.
[mono.git] / mcs / class / Mono.Posix / Test / Mono.Unix / UnixMarshalTest.cs
1 // UnixMarshalTests.cs - NUnit2 Test Cases for Mono.Unix.UnixMarshal class
2 //
3 // Authors:
4 //  Jonathan Pryor (jonpryor@vt.edu)
5 //
6 // (c) 2005 Jonathan Pryor
7 //
8
9 using NUnit.Framework;
10 using System;
11 using System.IO;
12 using System.Runtime.InteropServices;
13 using System.Text;
14 using Mono.Unix;
15
16 namespace MonoTests.Mono.Unix {
17
18         class RandomEncoding : UTF8Encoding {
19                 public RandomEncoding ()
20                         : base (false, true)
21                 {
22                 }
23
24                 public override int GetMaxByteCount (int value)
25                 {
26                         return value*6;
27                 }
28         }
29
30         [TestFixture]
31         public class UnixMarshalTest {
32 #if false
33                 public static void Main ()
34                 {
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);
39                 }
40 #endif
41
42                 [Test]
43                 public void TestStringToHeap ()
44                 {
45                         object[] data = {
46                                 "Hello, world!", true, true,
47                                 "MS Pゴシック", false, true,
48                         };
49
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];
54
55                                 StringToHeap (s, valid_ascii, valid_unicode);
56                         }
57                 }
58
59                 private static void StringToHeap (string s, bool validAscii, bool validUnicode)
60                 {
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);
67                 }
68
69                 private static void StringToHeap (string s, Encoding e, bool mustBeEqual)
70                 {
71                         IntPtr p = UnixMarshal.StringToHeap (s, e);
72                         try {
73                                 string _s = UnixMarshal.PtrToString (p, e);
74                                 if (mustBeEqual)
75                                         Assert.AreEqual (s, _s, "#TSTA (" + e.GetType() + ")");
76                         }
77                         finally {
78                                 UnixMarshal.FreeHeap (p);
79                         }
80                 }
81                 
82                 [Test]
83                 public void TestPtrToString ()
84                 {
85                         IntPtr p = UnixMarshal.AllocHeap (1);
86                         Marshal.WriteByte (p, 0);
87                         string s = UnixMarshal.PtrToString (p);
88                         UnixMarshal.FreeHeap (p);
89                 }
90         }
91 }
92