### Question:
VirtualSinkSource extends NamedSink implements Source { @Override public void processRow(Row entries) { this.rows.add(entries); } VirtualSinkSource();  VirtualSinkSource(String name, List<Row> entries); int getNumberOfRows(); List<Row> getRows(); Row getRow(int index); VirtualSinkSource addRow(Row row); @Override Iterable<Row> query(String query, Object... params); @Override void processRow(Row entries); @Override String toString(); String mapToString(Row columns); @Override int hashCode(); @Override boolean equals(Object obj);  }### Answer:
@Test public void processRow() { Row entries = new Row(); entries.addColumn(-1, "a", "b"); entries.addColumn(-1, "c", "d"); VirtualSinkSource source = new VirtualSinkSource(); source.processRow(entries); assertThat(source.getNumberOfRows(), is(1)); Row actual = source.getRow(0); assertThat(actual, is(entries)); }