UnicodeEncodingTest.cs 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. //
  2. // UnicodeEncodingTest.cs - NUnit Test Cases for System.Text.UnicodeEncoding
  3. //
  4. // Author:
  5. // Patrick Kalkman [email protected]
  6. //
  7. // (C) 2003 Patrick Kalkman
  8. //
  9. using NUnit.Framework;
  10. using System;
  11. using System.Text;
  12. namespace MonoTests.System.Text
  13. {
  14. [TestFixture]
  15. public class UnicodeEncodingTest
  16. {
  17. [Test]
  18. public void TestEncodingGetBytes1()
  19. {
  20. //pi and sigma in unicode
  21. string Unicode = "\u03a0\u03a3";
  22. byte[] UniBytes;
  23. UnicodeEncoding UnicodeEnc = new UnicodeEncoding (); //little-endian
  24. UniBytes = UnicodeEnc.GetBytes (Unicode);
  25. Assertion.AssertEquals ("Uni #1", 0xA0, UniBytes [0]);
  26. Assertion.AssertEquals ("Uni #2", 0x03, UniBytes [1]);
  27. Assertion.AssertEquals ("Uni #3", 0xA3, UniBytes [2]);
  28. Assertion.AssertEquals ("Uni #4", 0x03, UniBytes [3]);
  29. }
  30. [Test]
  31. public void TestEncodingGetBytes2()
  32. {
  33. //pi and sigma in unicode
  34. string Unicode = "\u03a0\u03a3";
  35. byte[] UniBytes;
  36. UnicodeEncoding UnicodeEnc = new UnicodeEncoding (true, true); //big-endian
  37. UniBytes = UnicodeEnc.GetBytes (Unicode);
  38. Assertion.AssertEquals ("Uni #1", 0x03, UniBytes [0]);
  39. Assertion.AssertEquals ("Uni #2", 0xA0, UniBytes [1]);
  40. Assertion.AssertEquals ("Uni #3", 0x03, UniBytes [2]);
  41. Assertion.AssertEquals ("Uni #4", 0xA3, UniBytes [3]);
  42. }
  43. [Test]
  44. public void TestEncodingGetBytes3()
  45. {
  46. //pi and sigma in unicode
  47. string Unicode = "\u03a0\u03a3";
  48. byte[] UniBytes = new byte [4];
  49. UnicodeEncoding UnicodeEnc = new UnicodeEncoding (); //little-endian
  50. int Cnt = UnicodeEnc.GetBytes (Unicode.ToCharArray(), 0, Unicode.Length, UniBytes, 0);
  51. Assertion.AssertEquals ("Uni #1", 4, Cnt);
  52. Assertion.AssertEquals ("Uni #2", 0xA0, UniBytes [0]);
  53. Assertion.AssertEquals ("Uni #3", 0x03, UniBytes [1]);
  54. Assertion.AssertEquals ("Uni #4", 0xA3, UniBytes [2]);
  55. Assertion.AssertEquals ("Uni #5", 0x03, UniBytes [3]);
  56. }
  57. [Test]
  58. public void TestEncodingDecodingGetBytes1()
  59. {
  60. //pi and sigma in unicode
  61. string Unicode = "\u03a0\u03a3";
  62. UnicodeEncoding UnicodeEnc = new UnicodeEncoding (); //little-endian
  63. //Encode the unicode string.
  64. byte[] UniBytes = UnicodeEnc.GetBytes (Unicode);
  65. //Decode the bytes to a unicode char array.
  66. char[] UniChars = UnicodeEnc.GetChars (UniBytes);
  67. string Result = new string(UniChars);
  68. Assertion.AssertEquals ("Uni #1", Unicode, Result);
  69. }
  70. [Test]
  71. public void TestEncodingDecodingGetBytes2()
  72. {
  73. //pi and sigma in unicode
  74. string Unicode = "\u03a0\u03a3";
  75. UnicodeEncoding UnicodeEnc = new UnicodeEncoding (true, true); //big-endian
  76. //Encode the unicode string.
  77. byte[] UniBytes = UnicodeEnc.GetBytes (Unicode);
  78. //Decode the bytes to a unicode char array.
  79. char[] UniChars = UnicodeEnc.GetChars (UniBytes);
  80. string Result = new string(UniChars);
  81. Assertion.AssertEquals ("Uni #1", Unicode, Result);
  82. }
  83. [Test]
  84. public void TestEncodingGetCharCount ()
  85. {
  86. byte[] b = new byte[] {255, 254, 115, 0, 104, 0, 105, 0};
  87. UnicodeEncoding encoding = new UnicodeEncoding ();
  88. Assertion.AssertEquals ("GetCharCount #1", 3,
  89. encoding.GetCharCount (b, 2, b.Length - 2));
  90. }
  91. [Test]
  92. public void TestPreamble1()
  93. {
  94. //litle-endian with byte order mark.
  95. UnicodeEncoding UnicodeEnc = new UnicodeEncoding (false, true);
  96. byte[] PreAmble = UnicodeEnc.GetPreamble();
  97. Assertion.AssertEquals ("Uni #1", 0xFF, PreAmble [0]);
  98. Assertion.AssertEquals ("Uni #2", 0xFE, PreAmble [1]);
  99. }
  100. [Test]
  101. public void TestPreamble2()
  102. {
  103. //big-endian with byte order mark.
  104. UnicodeEncoding UnicodeEnc = new UnicodeEncoding (true, true);
  105. byte[] PreAmble = UnicodeEnc.GetPreamble();
  106. Assertion.AssertEquals ("Uni #1", 0xFE, PreAmble [0]);
  107. Assertion.AssertEquals ("Uni #2", 0xFF, PreAmble [1]);
  108. }
  109. [Test]
  110. public void TestPreamble3()
  111. {
  112. //little-endian without byte order mark.
  113. UnicodeEncoding UnicodeEnc = new UnicodeEncoding (false, false);
  114. byte[] PreAmble = UnicodeEnc.GetPreamble();
  115. Assertion.AssertEquals ("Uni #1", 0, PreAmble.Length);
  116. }
  117. [Test]
  118. public void TestMaxCharCount()
  119. {
  120. UnicodeEncoding UnicodeEnc = new UnicodeEncoding ();
  121. Assertion.AssertEquals ("UTF #1", 25, UnicodeEnc.GetMaxCharCount(50));
  122. }
  123. [Test]
  124. public void TestMaxByteCount()
  125. {
  126. UnicodeEncoding UnicodeEnc = new UnicodeEncoding ();
  127. Assertion.AssertEquals ("UTF #1", 100, UnicodeEnc.GetMaxByteCount(50));
  128. }
  129. }
  130. }