Skip to content

Commit 1b122be

Browse files
committed
KdbTable: Use Java 8 forEach in buildFromRowList and more tests
1 parent 30c7950 commit 1b122be

File tree

2 files changed

+81
-6
lines changed

2 files changed

+81
-6
lines changed

src/main/java/com/buabook/kdb/data/KdbTable.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -289,11 +289,10 @@ public KdbDict getRow(int rowNumber) throws ArrayIndexOutOfBoundsException {
289289
* @return The new table
290290
* @see #addRow(KdbDict)
291291
*/
292-
public static KdbTable buildFromRowList(String name, List<KdbDict> rows) {
292+
public static KdbTable buildFromRowList(String name, List<KdbDict> rows) throws TableSchemaMismatchException {
293293
KdbTable table = new KdbTable(name);
294294

295-
for(KdbDict row : rows)
296-
table.addRow(row);
295+
rows.forEach(table::addRow);
297296

298297
return table;
299298
}

src/test/java/com/buabook/kdb/data/test/KdbTableTest.java

Lines changed: 79 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import com.buabook.kdb.exceptions.TableColumnAlreadyExistsException;
1818
import com.buabook.kdb.exceptions.TableSchemaMismatchException;
1919
import com.google.common.collect.ImmutableList;
20+
import com.google.common.collect.ImmutableMap;
2021
import com.kx.c.Dict;
2122
import com.kx.c.Flip;
2223

@@ -196,9 +197,11 @@ public void testAddRowMapAddsNewRow() {
196197
@Test
197198
public void testAddRowMapAddsConvertsListAndEnumTypesCorrectly() {
198199
KdbTable table = new KdbTable("my-test-table");
199-
KdbDict newRow = new KdbDict()
200-
.add("nested-list", ImmutableList.of(1, 2, 3))
201-
.add("enum", TestEnum.VALUE_1);
200+
201+
Map<String, Object> newRow = ImmutableMap.<String, Object>builder()
202+
.put("nested-list", ImmutableList.of(1, 2, 3))
203+
.put("enum", TestEnum.VALUE_1)
204+
.build();
202205

203206
table.addRow(newRow);
204207

@@ -245,6 +248,16 @@ public void testAppendAppendsTableToEndOfTable() {
245248
assertThat(table.getRowCount(), is(equalTo(6)));
246249
}
247250

251+
@Test
252+
public void testAppendAppendsToEmptyTable() {
253+
KdbTable empty = new KdbTable("my-test-table");
254+
KdbTable toAppend = new KdbTable("my-test-table", getTable());
255+
256+
empty.append(toAppend);
257+
258+
assertThat(empty.getRowCount(), is(equalTo(3)));
259+
}
260+
248261
// KdbTable.getTableName
249262

250263
@Test
@@ -321,6 +334,69 @@ public void testChangeTableNameChangesTableName() {
321334
assertThat(table.getTableName(), is(equalTo("some-other-table-name")));
322335
}
323336

337+
// KdbTable.getRow
338+
339+
@Test(expected=ArrayIndexOutOfBoundsException.class)
340+
public void testGetRowThrowsExceptionIfRowNumberIsNegative() {
341+
new KdbTable("my-table").getRow(-1);
342+
}
343+
344+
@Test(expected=ArrayIndexOutOfBoundsException.class)
345+
public void testGetRowThrowsExceptionIfRowNumberGreaterThanRowCount() {
346+
new KdbTable("my-table", getTable()).getRow(10);
347+
}
348+
349+
// KdbTable.fromObject
350+
351+
@Test
352+
public void testFromObjectReturnsNullIfNullObject() {
353+
KdbTable fromFlip = KdbTable.fromObject(null);
354+
355+
assertThat(fromFlip, is(nullValue()));
356+
}
357+
358+
@Test
359+
public void testFromObjectReturnsNewObjectWithFlipData() {
360+
KdbTable fromFlip = KdbTable.fromObject(getTable());
361+
362+
assertThat(fromFlip.isEmpty(), is(equalTo(false)));
363+
assertThat(fromFlip.getRowCount(), is(equalTo(3)));
364+
assertThat(fromFlip.getTableName(), is(equalTo("table")));
365+
}
366+
367+
// KdbTable.iterator
368+
369+
@Test
370+
public void testIteratorIteratesOverAllRowsOfTable() {
371+
KdbTable toIterate = new KdbTable("a-table", getTable());
372+
373+
int iterateCount = 0;
374+
375+
for(KdbDict row : toIterate) {
376+
assertThat(row.getDataStore(), hasKey("key1"));
377+
assertThat(row.getDataStore(), hasKey("key2"));
378+
assertThat(row.getDataStore(), hasKey("key3"));
379+
380+
iterateCount++;
381+
}
382+
383+
assertThat(iterateCount, is(equalTo(toIterate.getRowCount())));
384+
}
385+
386+
// KdbTable.stream
387+
388+
@Test
389+
public void testStreamIteratesOverAllRowsOfTable() {
390+
KdbTable toIterate = new KdbTable("a-table", getTable());
391+
392+
toIterate.stream()
393+
.forEach((row) -> {
394+
assertThat(row.getDataStore(), hasKey("key1"));
395+
assertThat(row.getDataStore(), hasKey("key2"));
396+
assertThat(row.getDataStore(), hasKey("key3"));
397+
});
398+
}
399+
324400

325401
private Flip getTable() {
326402
String[] keys = { "key1", "key2", "key3" };

0 commit comments

Comments
 (0)