You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

IOReadLineTest.java 2.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. /*
  2. * Copyright (C) 2015, Google Inc. and others
  3. *
  4. * This program and the accompanying materials are made available under the
  5. * terms of the Eclipse Distribution License v. 1.0 which is available at
  6. * https://www.eclipse.org/org/documents/edl-v10.php.
  7. *
  8. * SPDX-License-Identifier: BSD-3-Clause
  9. */
  10. package org.eclipse.jgit.util;
  11. import static java.nio.charset.StandardCharsets.UTF_8;
  12. import static org.junit.Assert.assertEquals;
  13. import java.io.BufferedReader;
  14. import java.io.ByteArrayInputStream;
  15. import java.io.InputStreamReader;
  16. import java.io.Reader;
  17. import java.util.ArrayList;
  18. import java.util.Collection;
  19. import org.eclipse.jgit.lib.Constants;
  20. import org.junit.Test;
  21. import org.junit.runner.RunWith;
  22. import org.junit.runners.Parameterized;
  23. import org.junit.runners.Parameterized.Parameter;
  24. import org.junit.runners.Parameterized.Parameters;
  25. @RunWith(Parameterized.class)
  26. public class IOReadLineTest {
  27. @Parameter(0)
  28. public boolean buffered;
  29. @Parameter(1)
  30. public int sizeHint;
  31. @SuppressWarnings("boxing")
  32. @Parameters(name="buffered={0}, sizeHint={1}")
  33. public static Collection<Object[]> getParameters() {
  34. Boolean[] bv = {false, true};
  35. Integer[] sv = {-1, 0, 1, 2, 3, 4, 64};
  36. Collection<Object[]> params = new ArrayList<>(bv.length * sv.length);
  37. for (boolean b : bv) {
  38. for (Integer s : sv) {
  39. params.add(new Object[]{b, s});
  40. }
  41. }
  42. return params;
  43. }
  44. @Test
  45. public void testReadLine() throws Exception {
  46. Reader r = newReader("foo\nbar\nbaz\n");
  47. assertEquals("foo\n", readLine(r));
  48. assertEquals("bar\n", readLine(r));
  49. assertEquals("baz\n", readLine(r));
  50. assertEquals("", readLine(r));
  51. }
  52. @Test
  53. public void testReadLineNoTrailingNewline() throws Exception {
  54. Reader r = newReader("foo\nbar\nbaz");
  55. assertEquals("foo\n", readLine(r));
  56. assertEquals("bar\n", readLine(r));
  57. assertEquals("baz", readLine(r));
  58. assertEquals("", readLine(r));
  59. }
  60. private String readLine(Reader r) throws Exception {
  61. return IO.readLine(r, sizeHint);
  62. }
  63. private Reader newReader(String in) {
  64. Reader r = new InputStreamReader(
  65. new ByteArrayInputStream(Constants.encode(in)), UTF_8);
  66. if (buffered) {
  67. r = new BufferedReader(r);
  68. }
  69. assertEquals(Boolean.valueOf(buffered),
  70. Boolean.valueOf(r.markSupported()));
  71. return r;
  72. }
  73. }