1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.commons.io;
18
19 import static org.junit.jupiter.api.Assertions.*;
20
21 import org.apache.juneau.*;
22 import org.junit.jupiter.api.*;
23
24 class CharSequenceReader_Test extends TestBase {
25
26
27
28
29 @Test void a01_constructorWithString() {
30 var reader = new CharSequenceReader("test");
31 var result = new StringBuilder();
32 int c;
33 while ((c = reader.read()) != -1) {
34 result.append((char)c);
35 }
36 assertEquals("test", result.toString());
37 }
38
39 @Test void a02_constructorWithStringBuilder() {
40 var cs = new StringBuilder("test");
41 var reader = new CharSequenceReader(cs);
42 var result = new StringBuilder();
43 int c;
44 while ((c = reader.read()) != -1) {
45 result.append((char)c);
46 }
47 assertEquals("test", result.toString());
48 }
49
50 @Test void a03_constructorWithStringBuffer() {
51 var cs = new StringBuffer("test");
52 var reader = new CharSequenceReader(cs);
53 var result = new StringBuilder();
54 int c;
55 while ((c = reader.read()) != -1) {
56 result.append((char)c);
57 }
58 assertEquals("test", result.toString());
59 }
60
61 @Test void a04_constructorWithNull() {
62 var reader = new CharSequenceReader(null);
63 assertEquals(-1, reader.read());
64 assertEquals("", reader.toString());
65 }
66
67 @Test void a05_constructorWithEmptyString() {
68 var reader = new CharSequenceReader("");
69 assertEquals(-1, reader.read());
70 assertEquals("", reader.toString());
71 }
72
73
74
75
76 @Test void b01_readSingleChar() {
77 var reader = new CharSequenceReader("abc");
78 assertEquals('a', reader.read());
79 assertEquals('b', reader.read());
80 assertEquals('c', reader.read());
81 assertEquals(-1, reader.read());
82 }
83
84 @Test void b02_readEndOfStream() {
85 var reader = new CharSequenceReader("a");
86 assertEquals('a', reader.read());
87 assertEquals(-1, reader.read());
88 assertEquals(-1, reader.read());
89 }
90
91
92
93
94 @Test void c01_readCharArray() {
95 var reader = new CharSequenceReader("hello");
96 var buf = new char[5];
97 var count = reader.read(buf, 0, 5);
98 assertEquals(5, count);
99 assertEquals("hello", new String(buf));
100 }
101
102 @Test void c02_readCharArray_partial() {
103 var reader = new CharSequenceReader("hello");
104 var buf = new char[10];
105 var count = reader.read(buf, 0, 3);
106 assertEquals(3, count);
107 assertEquals("hel", new String(buf, 0, 3));
108 }
109
110 @Test void c03_readCharArray_multipleReads() {
111 var reader = new CharSequenceReader("hello");
112 var buf = new char[3];
113 var count1 = reader.read(buf, 0, 3);
114 assertEquals(3, count1);
115 assertEquals("hel", new String(buf));
116 var count2 = reader.read(buf, 0, 3);
117 assertEquals(2, count2);
118 assertEquals("lo", new String(buf, 0, 2));
119 }
120
121 @Test void c04_readCharArray_endOfStream() {
122 var reader = new CharSequenceReader("a");
123 var buf = new char[10];
124 var count = reader.read(buf, 0, 10);
125 assertEquals(1, count);
126 assertEquals('a', buf[0]);
127 var count2 = reader.read(buf, 0, 10);
128 assertEquals(-1, count2);
129 }
130
131 @Test void c05_readCharArray_empty() {
132 var reader = new CharSequenceReader("");
133 var buf = new char[10];
134 var count = reader.read(buf, 0, 10);
135 assertEquals(-1, count);
136 }
137
138 @Test void c06_readCharArray_withOffset() {
139 var reader = new CharSequenceReader("hello");
140 var buf = new char[10];
141 var count = reader.read(buf, 2, 3);
142 assertEquals(3, count);
143 assertEquals("hel", new String(buf, 2, 3));
144 }
145
146
147
148
149 @Test void d01_skip() {
150 var reader = new CharSequenceReader("hello");
151 var skipped = reader.skip(2);
152 assertEquals(2, skipped);
153 assertEquals('l', reader.read());
154 }
155
156 @Test void d02_skip_all() {
157 var reader = new CharSequenceReader("hello");
158 var skipped = reader.skip(10);
159 assertEquals(5, skipped);
160 assertEquals(-1, reader.read());
161 }
162
163 @Test void d03_skip_zero() {
164 var reader = new CharSequenceReader("hello");
165 var skipped = reader.skip(0);
166 assertEquals(0, skipped);
167 assertEquals('h', reader.read());
168 }
169
170 @Test void d04_skip_negative() {
171 var reader = new CharSequenceReader("hello");
172 var skipped = reader.skip(-5);
173 assertEquals(0, skipped);
174 assertEquals('h', reader.read());
175 }
176
177 @Test void d05_skip_afterEnd() {
178 var reader = new CharSequenceReader("a");
179 reader.read();
180 var skipped = reader.skip(10);
181 assertEquals(0, skipped);
182 }
183
184
185
186
187 @Test void e01_markSupported() {
188 var reader = new CharSequenceReader("test");
189 assertFalse(reader.markSupported());
190 }
191
192
193
194
195 @Test void f01_close() {
196 var reader = new CharSequenceReader("test");
197 reader.close();
198
199 assertEquals('t', reader.read());
200 }
201
202
203
204
205 @Test void g01_toString() {
206 var reader = new CharSequenceReader("test");
207 assertEquals("test", reader.toString());
208 }
209
210 @Test void g02_toString_afterReading() {
211 var reader = new CharSequenceReader("test");
212 reader.read();
213 assertEquals("test", reader.toString());
214 }
215
216
217
218
219 @Test void h01_stringOptimization() {
220 var reader = new CharSequenceReader("test");
221 var buf = new char[4];
222 reader.read(buf, 0, 4);
223 assertEquals("test", new String(buf));
224 }
225
226 @Test void h02_stringBuilderOptimization() {
227 var cs = new StringBuilder("test");
228 var reader = new CharSequenceReader(cs);
229 var buf = new char[4];
230 reader.read(buf, 0, 4);
231 assertEquals("test", new String(buf));
232 }
233
234 @Test void h03_stringBufferOptimization() {
235 var cs = new StringBuffer("test");
236 var reader = new CharSequenceReader(cs);
237 var buf = new char[4];
238 reader.read(buf, 0, 4);
239 assertEquals("test", new String(buf));
240 }
241
242 @Test void h04_genericCharSequence() {
243
244 CharSequence cs = new CharSequence() {
245 @Override
246 public int length() { return 4; }
247 @Override
248 public char charAt(int index) {
249 return "test".charAt(index);
250 }
251 @Override
252 public CharSequence subSequence(int start, int end) {
253 return "test".subSequence(start, end);
254 }
255 };
256 var reader = new CharSequenceReader(cs);
257 var buf = new char[4];
258 reader.read(buf, 0, 4);
259 assertEquals("test", new String(buf));
260 }
261 }
262