aboutsummaryrefslogtreecommitdiffstats
path: root/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/IOReadLineTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.jgit.test/tst/org/eclipse/jgit/util/IOReadLineTest.java')
-rw-r--r--org.eclipse.jgit.test/tst/org/eclipse/jgit/util/IOReadLineTest.java84
1 files changed, 84 insertions, 0 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/IOReadLineTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/IOReadLineTest.java
new file mode 100644
index 0000000000..13783a051d
--- /dev/null
+++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/util/IOReadLineTest.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2015, Google Inc. and others
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Distribution License v. 1.0 which is available at
+ * https://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+package org.eclipse.jgit.util;
+
+import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.junit.Assert.assertEquals;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.eclipse.jgit.lib.Constants;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
+
+@RunWith(Parameterized.class)
+public class IOReadLineTest {
+ @Parameter(0)
+ public boolean buffered;
+
+ @Parameter(1)
+ public int sizeHint;
+
+ @SuppressWarnings("boxing")
+ @Parameters(name="buffered={0}, sizeHint={1}")
+ public static Collection<Object[]> getParameters() {
+ Boolean[] bv = {false, true};
+ Integer[] sv = {-1, 0, 1, 2, 3, 4, 64};
+ Collection<Object[]> params = new ArrayList<>(bv.length * sv.length);
+ for (boolean b : bv) {
+ for (Integer s : sv) {
+ params.add(new Object[]{b, s});
+ }
+ }
+ return params;
+ }
+
+ @Test
+ public void testReadLine() throws Exception {
+ Reader r = newReader("foo\nbar\nbaz\n");
+ assertEquals("foo\n", readLine(r));
+ assertEquals("bar\n", readLine(r));
+ assertEquals("baz\n", readLine(r));
+ assertEquals("", readLine(r));
+ }
+
+ @Test
+ public void testReadLineNoTrailingNewline() throws Exception {
+ Reader r = newReader("foo\nbar\nbaz");
+ assertEquals("foo\n", readLine(r));
+ assertEquals("bar\n", readLine(r));
+ assertEquals("baz", readLine(r));
+ assertEquals("", readLine(r));
+ }
+
+ private String readLine(Reader r) throws Exception {
+ return IO.readLine(r, sizeHint);
+ }
+
+ private Reader newReader(String in) {
+ Reader r = new InputStreamReader(
+ new ByteArrayInputStream(Constants.encode(in)), UTF_8);
+ if (buffered) {
+ r = new BufferedReader(r);
+ }
+ assertEquals(Boolean.valueOf(buffered),
+ Boolean.valueOf(r.markSupported()));
+ return r;
+ }
+}