1 package net.jaekl.qd.util;
3 import java.io.BufferedReader;
4 import java.io.ByteArrayInputStream;
5 import java.io.IOException;
6 import java.io.InputStreamReader;
7 import java.nio.charset.Charset;
9 import org.junit.Assert;
10 import org.junit.Test;
12 public class InputStreamWrapperTest {
13 static final String[] DATA = {
15 "<?xml encoding=\"utf-8\"?><Root/>\n",
18 "arma virumque cano, Troiae qui primus ab oris\n" +
19 "Italiam fato profugus Laviniaque venit\n" +
20 "litora, multum ille et terris iactatus et alto\n" +
21 "vi superum, saevae memorem Iunonis ob iram,\n" +
22 "multa quoque et bello passus, dum conderet urbem\n" +
23 "inferretque deos Latio; genus unde\n" +
24 "Albanique patres atque altae moenia Romae.\n" +
25 "Musa, mihi causas memora, quo numine laeso\n" +
26 "quidve dolens regina deum tot volvere\n" +
27 "insignem pietate virum, tot adire labores\n" +
28 "impulerit. tantaene animis caelestibus irae?\n" +
29 "urbs antiqua fuit (Tyrii tenuere coloni)\n" +
30 "Karthago, Italiam contra Tiberinaque longe\n" +
31 "ostia, dives opum studiisque asperrima belli,\n" +
32 "quam Iuno fertur terris magis omnibus unam\n" +
33 "posthabita coluisse Samo. hic illius arma,\n" +
34 "hic currus fuit; hoc regnum dea gentibus esse,\n" +
35 "si qua fata sinant, iam tum tenditque fovetque.\n" +
36 "progeniem sed enim Troiano a sanguine duci\n" +
37 "audierat Tyrias olim quae verteret arces;\n" +
38 "hinc populum late regem belloque superbum\n" +
39 "venturum excidio Libyae; sic volvere Parcas.\n" +
40 "id metuens veterisque memor Saturnia belli,\n" +
41 "prima quod ad Troiam pro caris gesserat Argis_\n" +
42 "necdum etiam causae irarum saevique dolores\n" +
43 "exciderant animo; manet alta mente repostum\n" +
44 "iudicium Paridis spretaeque iniuria formae\n" +
45 "et genus invisum et rapti Ganymedis honores:\n" +
46 "his accensa super iactatos aequore toto\n" +
47 "Troas, reliquias Danaum atque immitis Achilli,\n" +
48 "arcebat longe Latio, multosque per annos\n" +
49 "errabant acti fatis maria omnia circum.\n"
53 public void testRead() throws IOException {
54 Charset utf8 = Charset.forName("UTF-8");
55 StringBuilder sb = new StringBuilder();
56 ByteArrayInputStream bais = null;
57 BufferedReader br = null;
59 for (String datum : DATA) {
60 sb.setLength(0); // reset the builder
61 int end = datum.length();
62 if (end > InputStreamWrapper.HEAD_MAX) {
63 end = InputStreamWrapper.HEAD_MAX;
65 String expected = datum.substring(0, end);
68 bais = new ByteArrayInputStream(datum.getBytes(utf8));
69 InputStreamWrapper isw = new InputStreamWrapper(bais);
70 br = new BufferedReader(new InputStreamReader(isw));
72 while (null != line) {
73 sb.append(line).append("\n");
76 String actualRead = sb.toString();
77 String actualHead = new String(isw.getHeadBytes(), utf8);
79 Assert.assertEquals(datum, actualRead);
80 Assert.assertEquals(expected, actualHead);