// UTF8EncodingTest.cs - NUnit Test Cases for System.Text.UTF8Encoding // // Patrick Kalkman kalkman@cistron.nl // // (C) 2003 Patrick Kalkman // using NUnit.Framework; using System; using System.Text; namespace MonoTests.System.Text { [TestFixture] public class UTF8EncodingTest { [SetUp] public void GetReady() {} [TearDown] public void Clean() {} [Test] public void TestEncodingGetBytes1() { UTF8Encoding utf8Enc = new UTF8Encoding (); string UniCode = "\u0041\u2262\u0391\u002E"; // "A." may be encoded as 41 E2 89 A2 CE 91 2E // see (RFC 2044) byte[] utf8Bytes = utf8Enc.GetBytes (UniCode); Assertion.AssertEquals ("UTF #1", 0x41, utf8Bytes [0]); Assertion.AssertEquals ("UTF #2", 0xE2, utf8Bytes [1]); Assertion.AssertEquals ("UTF #3", 0x89, utf8Bytes [2]); Assertion.AssertEquals ("UTF #4", 0xA2, utf8Bytes [3]); Assertion.AssertEquals ("UTF #5", 0xCE, utf8Bytes [4]); Assertion.AssertEquals ("UTF #6", 0x91, utf8Bytes [5]); Assertion.AssertEquals ("UTF #7", 0x2E, utf8Bytes [6]); } [Test] public void TestEncodingGetBytes2() { UTF8Encoding utf8Enc = new UTF8Encoding (); string UniCode = "\u0048\u0069\u0020\u004D\u006F\u006D\u0020\u263A\u0021"; // "Hi Mom !" may be encoded as 48 69 20 4D 6F 6D 20 E2 98 BA 21 // see (RFC 2044) byte[] utf8Bytes = new byte [11]; int ByteCnt = utf8Enc.GetBytes (UniCode.ToCharArray(), 0, UniCode.Length, utf8Bytes, 0); Assertion.AssertEquals ("UTF #1", 11, ByteCnt); Assertion.AssertEquals ("UTF #2", 0x48, utf8Bytes [0]); Assertion.AssertEquals ("UTF #3", 0x69, utf8Bytes [1]); Assertion.AssertEquals ("UTF #4", 0x20, utf8Bytes [2]); Assertion.AssertEquals ("UTF #5", 0x4D, utf8Bytes [3]); Assertion.AssertEquals ("UTF #6", 0x6F, utf8Bytes [4]); Assertion.AssertEquals ("UTF #7", 0x6D, utf8Bytes [5]); Assertion.AssertEquals ("UTF #8", 0x20, utf8Bytes [6]); Assertion.AssertEquals ("UTF #9", 0xE2, utf8Bytes [7]); Assertion.AssertEquals ("UTF #10", 0x98, utf8Bytes [8]); Assertion.AssertEquals ("UTF #11", 0xBA, utf8Bytes [9]); Assertion.AssertEquals ("UTF #12", 0x21, utf8Bytes [10]); } [Test] public void TestDecodingGetChars1() { UTF8Encoding utf8Enc = new UTF8Encoding (); // 41 E2 89 A2 CE 91 2E may be decoded as "A." // see (RFC 2044) byte[] utf8Bytes = new byte [] {0x41, 0xE2, 0x89, 0xA2, 0xCE, 0x91, 0x2E}; char[] UniCodeChars = utf8Enc.GetChars(utf8Bytes); Assertion.AssertEquals ("UTF #1", 0x0041, UniCodeChars [0]); Assertion.AssertEquals ("UTF #2", 0x2262, UniCodeChars [1]); Assertion.AssertEquals ("UTF #3", 0x0391, UniCodeChars [2]); Assertion.AssertEquals ("UTF #4", 0x002E, UniCodeChars [3]); } [Test] public void TestMaxCharCount() { UTF8Encoding UTF8enc = new UTF8Encoding (); Assertion.AssertEquals ("UTF #1", 50, UTF8enc.GetMaxCharCount(50)); } [Test] public void TestMaxByteCount() { UTF8Encoding UTF8enc = new UTF8Encoding (); Assertion.AssertEquals ("UTF #1", 200, UTF8enc.GetMaxByteCount(50)); } } }