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
147
148
|
//
// 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
{
#if NET_2_0
[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 ();
}
}
#endif
}
}
|