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