### Question:
CsvReader implements Source<List<String>> { @Override public List<String> get() throws IOException { return next; } CsvReader(Reader reader); @Override boolean next(); @Override List<String> get(); @Override void close();  }### Answer:
@Test public void simple() { List<List<String>> rows = parse("Hello,World\r\n"); assertThat(rows, hasSize(1)); assertThat(rows.get(0), contains("Hello", "World")); }
@Test public void multiple() { List<List<String>> rows = parse("1-1,1-2,1-3\r\n2-1,2-2,2-3\r\n3-1,3-2,3-3\r\n"); assertThat(rows, hasSize(3)); assertThat(rows.get(0), contains("1-1", "1-2", "1-3")); assertThat(rows.get(1), contains("2-1", "2-2", "2-3")); assertThat(rows.get(2), contains("3-1", "3-2", "3-3")); }
@Test public void escape() { List<List<String>> rows = parse("\"Hello, world!\",\"He said \"\"Hello!\"\".\",\"Name:\r\n Value\"\r\n"); assertThat(rows, hasSize(1)); assertThat(rows.get(0), contains("Hello, world!", "He said \"Hello!\".", "Name:\r\n Value")); }