start populating the new System.Web.Configuration_2.0 dir
[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.Text;
13 using Mono.Unix;
14
15 namespace MonoTests.Mono.Unix {
16
17         class RandomEncoding : UTF8Encoding {
18                 public RandomEncoding ()
19                         : base (false, true)
20                 {
21                 }
22
23                 public override int GetMaxByteCount (int value)
24                 {
25                         return value*6;
26                 }
27         }
28
29         [TestFixture]
30         class UnixMarshalTest {
31 #if false
32                 public static void Main ()
33                 {
34                         string s = UnixMarshal.GetErrorDescription (Errno.ERANGE);
35                         Console.WriteLine ("ERANGE={0}", s);
36                         s = UnixMarshal.GetErrorDescription ((Errno) 999999);
37                         Console.WriteLine ("Invalid={0}", s);
38                 }
39 #endif
40
41                 [Test]
42                 public void TestStringToHeap ()
43                 {
44                         object[] data = {
45                                 "Hello, world!", true, true,
46                                 "MS Pゴシック", false, true,
47                         };
48
49                         for (int i = 0; i < data.Length; i += 3) {
50                                 string s           = (string) data [i+0];
51                                 bool valid_ascii   = (bool)   data [i+1];
52                                 bool valid_unicode = (bool)   data [i+2];
53
54                                 TestStringToHeap (s, valid_ascii, valid_unicode);
55                         }
56                 }
57
58                 private static void TestStringToHeap (string s, bool validAscii, bool validUnicode)
59                 {
60                         TestStringToHeap (s, Encoding.ASCII, validAscii);
61                         TestStringToHeap (s, Encoding.UTF7, validUnicode);
62                         TestStringToHeap (s, Encoding.UTF8, validUnicode);
63                         TestStringToHeap (s, Encoding.Unicode, validUnicode);
64                         TestStringToHeap (s, Encoding.BigEndianUnicode, validUnicode);
65                         TestStringToHeap (s, new RandomEncoding (), validUnicode);
66                 }
67
68                 private static void TestStringToHeap (string s, Encoding e, bool mustBeEqual)
69                 {
70                         IntPtr p = UnixMarshal.StringToHeap (s, e);
71                         try {
72                                 string _s = UnixMarshal.PtrToString (p, e);
73                                 if (mustBeEqual)
74                                         Assert.AreEqual (s, _s, "#TSTA (" + e.GetType() + ")");
75                         }
76                         finally {
77                                 UnixMarshal.Free (p);
78                         }
79                 }
80         }
81 }
82