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 package org.eclipse.jgit.util.io;
46
47 import static java.nio.charset.StandardCharsets.UTF_8;
48 import static org.junit.Assert.assertEquals;
49
50 import java.io.ByteArrayInputStream;
51 import java.io.IOException;
52 import java.io.InputStream;
53
54 import org.junit.Test;
55
56 public class AutoLFInputStreamTest {
57
58 @Test
59 public void testLF() throws IOException {
60 final byte[] bytes = asBytes("1\n2\n3");
61 test(bytes, bytes, false);
62 }
63
64 @Test
65 public void testCR() throws IOException {
66 final byte[] bytes = asBytes("1\r2\r3");
67 test(bytes, bytes, false);
68 }
69
70 @Test
71 public void testCRLF() throws IOException {
72 test(asBytes("1\r\n2\r\n3"), asBytes("1\n2\n3"), false);
73 }
74
75 @Test
76 public void testLFCR() throws IOException {
77 final byte[] bytes = asBytes("1\n\r2\n\r3");
78 test(bytes, bytes, false);
79 }
80
81 @Test
82 public void testEmpty() throws IOException {
83 final byte[] bytes = asBytes("");
84 test(bytes, bytes, false);
85 }
86
87 @Test
88 public void testBinaryDetect() throws IOException {
89 final byte[] bytes = asBytes("1\r\n2\r\n3\0");
90 test(bytes, bytes, true);
91 }
92
93 @Test
94 public void testBinaryDontDetect() throws IOException {
95 test(asBytes("1\r\n2\r\n3\0"), asBytes("1\n2\n3\0"), false);
96 }
97
98 private static void test(byte[] input, byte[] expected,
99 boolean detectBinary) throws IOException {
100 try (InputStream bis1 = new ByteArrayInputStream(input);
101 InputStream cis1 = new AutoLFInputStream(bis1, detectBinary)) {
102 int index1 = 0;
103 for (int b = cis1.read(); b != -1; b = cis1.read()) {
104 assertEquals(expected[index1], (byte) b);
105 index1++;
106 }
107
108 assertEquals(expected.length, index1);
109
110 for (int bufferSize = 1; bufferSize < 10; bufferSize++) {
111 final byte[] buffer = new byte[bufferSize];
112 try (InputStream bis2 = new ByteArrayInputStream(input);
113 InputStream cis2 = new AutoLFInputStream(bis2,
114 detectBinary)) {
115
116 int read = 0;
117 for (int readNow = cis2.read(buffer, 0,
118 buffer.length); readNow != -1
119 && read < expected.length; readNow = cis2
120 .read(buffer, 0, buffer.length)) {
121 for (int index2 = 0; index2 < readNow; index2++) {
122 assertEquals(expected[read + index2],
123 buffer[index2]);
124 }
125 read += readNow;
126 }
127
128 assertEquals(expected.length, read);
129 }
130 }
131 }
132 }
133
134 private static byte[] asBytes(String in) {
135 return in.getBytes(UTF_8);
136 }
137 }