2004-04-12 David Sheldon <dave-mono@earth.li>
[mono.git] / mcs / class / corlib / Test / System.Text / UTF8EncodingTest.cs
1 // UTF8EncodingTest.cs - NUnit Test Cases for System.Text.UTF8Encoding\r
2 //\r
3 // Patrick Kalkman  kalkman@cistron.nl\r
4 //\r
5 // (C) 2003 Patrick Kalkman\r
6 // \r
7 using NUnit.Framework;\r
8 using System;\r
9 using System.Text;\r
10 \r
11 namespace MonoTests.System.Text\r
12 {\r
13 \r
14         [TestFixture]\r
15         public class UTF8EncodingTest \r
16         {\r
17                 [SetUp]\r
18                 public void GetReady() {}\r
19                 \r
20                 [TearDown]\r
21                 public void Clean() {}\r
22                 \r
23                 [Test]\r
24                 public void TestEncodingGetBytes1()\r
25                 {\r
26                         UTF8Encoding utf8Enc = new UTF8Encoding ();\r
27                         string UniCode = "\u0041\u2262\u0391\u002E";\r
28                         \r
29                         // "A<NOT IDENTICAL TO><ALPHA>." may be encoded as 41 E2 89 A2 CE 91 2E \r
30                         // see (RFC 2044)\r
31                         byte[] utf8Bytes = utf8Enc.GetBytes (UniCode);\r
32                         \r
33                         Assertion.AssertEquals ("UTF #1", 0x41, utf8Bytes [0]);\r
34                         Assertion.AssertEquals ("UTF #2", 0xE2, utf8Bytes [1]);\r
35                         Assertion.AssertEquals ("UTF #3", 0x89, utf8Bytes [2]);\r
36                         Assertion.AssertEquals ("UTF #4", 0xA2, utf8Bytes [3]);\r
37                         Assertion.AssertEquals ("UTF #5", 0xCE, utf8Bytes [4]);\r
38                         Assertion.AssertEquals ("UTF #6", 0x91, utf8Bytes [5]);\r
39                         Assertion.AssertEquals ("UTF #7", 0x2E, utf8Bytes [6]);\r
40                 }\r
41         \r
42                 [Test]\r
43                 public void TestEncodingGetBytes2()\r
44                 {\r
45                         UTF8Encoding utf8Enc = new UTF8Encoding ();\r
46                         string UniCode = "\u0048\u0069\u0020\u004D\u006F\u006D\u0020\u263A\u0021";\r
47                         \r
48                         // "Hi Mom <WHITE SMILING FACE>!" may be encoded as 48 69 20 4D 6F 6D 20 E2 98 BA 21 \r
49                         // see (RFC 2044)\r
50                         byte[] utf8Bytes = new byte [11];\r
51                         \r
52                         int ByteCnt = utf8Enc.GetBytes (UniCode.ToCharArray(), 0, UniCode.Length, utf8Bytes, 0);\r
53                         \r
54                         Assertion.AssertEquals ("UTF #1", 11, ByteCnt);\r
55                         Assertion.AssertEquals ("UTF #2", 0x48, utf8Bytes [0]);\r
56                         Assertion.AssertEquals ("UTF #3", 0x69, utf8Bytes [1]);\r
57                         Assertion.AssertEquals ("UTF #4", 0x20, utf8Bytes [2]);\r
58                         Assertion.AssertEquals ("UTF #5", 0x4D, utf8Bytes [3]);\r
59                         Assertion.AssertEquals ("UTF #6", 0x6F, utf8Bytes [4]);\r
60                         Assertion.AssertEquals ("UTF #7", 0x6D, utf8Bytes [5]);\r
61                         Assertion.AssertEquals ("UTF #8", 0x20, utf8Bytes [6]);\r
62                         Assertion.AssertEquals ("UTF #9", 0xE2, utf8Bytes [7]);\r
63                         Assertion.AssertEquals ("UTF #10", 0x98, utf8Bytes [8]);\r
64                         Assertion.AssertEquals ("UTF #11", 0xBA, utf8Bytes [9]);\r
65                         Assertion.AssertEquals ("UTF #12", 0x21, utf8Bytes [10]);\r
66                 }\r
67         \r
68                 [Test]\r
69                 public void TestDecodingGetChars1()\r
70                 {\r
71                         UTF8Encoding utf8Enc = new UTF8Encoding ();\r
72                         // 41 E2 89 A2 CE 91 2E may be decoded as "A<NOT IDENTICAL TO><ALPHA>." \r
73                         // see (RFC 2044)\r
74                         byte[] utf8Bytes = new byte [] {0x41, 0xE2, 0x89, 0xA2, 0xCE, 0x91, 0x2E};\r
75                         char[] UniCodeChars = utf8Enc.GetChars(utf8Bytes);\r
76                              \r
77                         Assertion.AssertEquals ("UTF #1", 0x0041, UniCodeChars [0]);\r
78                         Assertion.AssertEquals ("UTF #2", 0x2262, UniCodeChars [1]);\r
79                         Assertion.AssertEquals ("UTF #3", 0x0391, UniCodeChars [2]);\r
80                         Assertion.AssertEquals ("UTF #4", 0x002E, UniCodeChars [3]);\r
81                 }\r
82                 \r
83                 [Test]\r
84                 public void TestMaxCharCount()\r
85                 {\r
86                         UTF8Encoding UTF8enc = new UTF8Encoding ();\r
87                         Assertion.AssertEquals ("UTF #1", 50, UTF8enc.GetMaxCharCount(50));\r
88                 }\r
89         \r
90                 [Test]\r
91                 public void TestMaxByteCount()\r
92                 {\r
93                         UTF8Encoding UTF8enc = new UTF8Encoding ();\r
94                         Assertion.AssertEquals ("UTF #1", 200, UTF8enc.GetMaxByteCount(50));\r
95                 }\r
96 \r
97                 \r
98         }\r
99 }\r
100 \r
101 \r
102 \r