@Test
public void testBuild() {
Flow flow = Flow.create("TEST");
Dataset<String> dataset = Util.createMockDataset(flow, 2);
Time<String> windowing = Time.of(Duration.ofHours(1));
Dataset<Triple<String, Long, Long>> result = TopPerKey.named("TopPerKey1")
.of(dataset)
.keyBy(s -> s)
.valueBy(s -> 1L)
.scoreBy(s -> 1L)
.windowBy(windowing)
.output();
assertEquals(flow, result.getFlow());
assertEquals(1, flow.size());
TopPerKey tpk = (TopPerKey) Iterables.getOnlyElement(flow.operators());
assertEquals(flow, tpk.getFlow());
assertEquals("TopPerKey1", tpk.getName());
assertNotNull(tpk.getKeyExtractor());
assertNotNull(tpk.getValueExtractor());
assertNotNull(tpk.getScoreExtractor());
assertEquals(result, tpk.output());
assertSame(windowing, tpk.getWindowing());
}