1 // 2 // EncoderTest.cs 3 // 4 // Author: 5 // Atsushi Enomoto <atsushi@ximian.com> 6 // 7 // (C) 2006 Novell, Inc. 8 // 9 using NUnit.Framework; 10 using System; 11 using System.Text; 12 13 namespace MonoTests.System.Text 14 { 15 [TestFixture] 16 public class EncoderTest 17 { 18 [Test] 19 [ExpectedException (typeof (ArgumentNullException))] ConvertNullChars()20 public void ConvertNullChars () 21 { 22 int bytesUsed, charsUsed; 23 bool done; 24 Encoding.UTF8.GetEncoder ().Convert ( 25 null, 0, 100, new byte [100], 0, 100, false, 26 out bytesUsed, out charsUsed, out done); 27 } 28 29 [Test] 30 [ExpectedException (typeof (ArgumentNullException))] ConvertNullBytes()31 public void ConvertNullBytes () 32 { 33 int bytesUsed, charsUsed; 34 bool done; 35 Encoding.UTF8.GetEncoder ().Convert ( 36 new char [100], 0, 100, null, 0, 100, false, 37 out bytesUsed, out charsUsed, out done); 38 } 39 40 [Test] ConvertLimitedDestination()41 public void ConvertLimitedDestination () 42 { 43 byte [] bytes = new byte [10000]; 44 char [] chars = new char [10000]; 45 46 Encoder conv = new ExposedEncoder (); 47 int bytesUsed, charsUsed; 48 bool done; 49 50 conv.Convert (chars, 0, 10000, bytes, 0, 1000, true, 51 out bytesUsed, out charsUsed, out done); 52 53 Assert.IsFalse (done, "#1"); 54 Assert.AreEqual (625, bytesUsed, "#2"); 55 Assert.AreEqual (625, charsUsed, "#3"); 56 } 57 58 [Test] ConvertLimitedDestinationUTF8()59 public void ConvertLimitedDestinationUTF8 () 60 { 61 byte [] bytes = new byte [10000]; 62 char [] chars = new char [10000]; 63 64 Encoder conv = Encoding.UTF8.GetEncoder (); 65 var type = conv.GetType (); 66 int bytesUsed, charsUsed; 67 bool done; 68 69 conv.Convert (chars, 0, 10000, bytes, 0, 1000, true, 70 out bytesUsed, out charsUsed, out done); 71 72 Assert.IsFalse (done, "#1"); 73 Assert.AreEqual (1000, bytesUsed, "#2"); 74 Assert.AreEqual (1000, charsUsed, "#3"); 75 } 76 77 [Test] CustomEncodingGetEncoder()78 public void CustomEncodingGetEncoder () 79 { 80 var encoding = new CustomEncoding (); 81 var encoder = encoding.GetEncoder (); 82 Assert.IsNotNull (encoder); 83 } 84 85 [Test] ConvertZeroCharacters()86 public void ConvertZeroCharacters () 87 { 88 int charsUsed, bytesUsed; 89 bool completed; 90 byte [] bytes = new byte [0]; 91 92 Encoding.UTF8.GetEncoder ().Convert ( 93 new char[0], 0, 0, bytes, 0, bytes.Length, true, 94 out charsUsed, out bytesUsed, out completed); 95 96 Assert.IsTrue (completed, "#1"); 97 Assert.AreEqual (0, charsUsed, "#2"); 98 Assert.AreEqual (0, bytesUsed, "#3"); 99 } 100 101 class ExposedEncoder : Encoder { GetByteCount(char [] chars, int index, int count, bool flush)102 public override int GetByteCount (char [] chars, int index, int count, bool flush) 103 { 104 return Encoding.UTF8.GetEncoder ().GetByteCount (chars, index, count, flush); 105 } 106 GetBytes(char [] chars, int charIndex, int charCount, byte [] bytes, int byteIndex, bool flush)107 public override int GetBytes (char [] chars, int charIndex, int charCount, byte [] bytes, int byteIndex, bool flush) 108 { 109 return Encoding.UTF8.GetEncoder ().GetBytes (chars, charIndex, charCount, bytes, byteIndex, flush); 110 } 111 } 112 113 class CustomEncoding : Encoding { 114 GetByteCount(char [] chars, int index, int count)115 public override int GetByteCount (char [] chars, int index, int count) 116 { 117 throw new NotSupportedException (); 118 } 119 GetBytes(char [] chars, int charIndex, int charCount, byte [] bytes, int byteIndex)120 public override int GetBytes (char [] chars, int charIndex, int charCount, byte [] bytes, int byteIndex) 121 { 122 throw new NotSupportedException (); 123 } 124 GetCharCount(byte [] bytes, int index, int count)125 public override int GetCharCount (byte [] bytes, int index, int count) 126 { 127 throw new NotSupportedException (); 128 } 129 GetChars(byte [] bytes, int byteIndex, int byteCount, char [] chars, int charIndex)130 public override int GetChars (byte [] bytes, int byteIndex, int byteCount, char [] chars, int charIndex) 131 { 132 throw new NotSupportedException (); 133 } 134 GetMaxByteCount(int charCount)135 public override int GetMaxByteCount (int charCount) 136 { 137 throw new NotSupportedException (); 138 } 139 GetMaxCharCount(int byteCount)140 public override int GetMaxCharCount (int byteCount) 141 { 142 throw new NotSupportedException (); 143 } 144 } 145 } 146 } 147