KStreamTransformValues implements ProcessorSupplier<K, V> { @Override public Processor<K, V> get() { return new KStreamTransformValuesProcessor<>(valueTransformerSupplier.get()); } KStreamTransformValues(ValueTransformerSupplier<V, R> valueTransformerSupplier); @Override Processor<K, V> get();  }
@Test public void testTransform() { KStreamBuilder builder = new KStreamBuilder(); ValueTransformerSupplier<Integer, Integer> valueTransformerSupplier = new ValueTransformerSupplier<Integer, Integer>() { public ValueTransformer<Integer, Integer> get() { return new ValueTransformer<Integer, Integer>() { private int total = 0; @Override public void init(ProcessorContext context) { } @Override public Integer transform(Integer value) { total += value; return total; } @Override public Integer punctuate(long timestamp) { return (int) timestamp; } @Override public void close() { } }; } }; final int[] expectedKeys = {1, 10, 100, 1000}; KStream<Integer, Integer> stream; MockProcessorSupplier<Integer, Integer> processor = new MockProcessorSupplier<>(); stream = builder.stream(intSerde, intSerde, topicName); stream.transformValues(valueTransformerSupplier).process(processor); driver = new KStreamTestDriver(builder); for (int i = 0; i < expectedKeys.length; i++) { driver.process(topicName, expectedKeys[i], expectedKeys[i] * 10); } assertEquals(4, processor.processed.size()); driver.punctuate(2); driver.punctuate(3); String[] expected = {"1:10", "10:110", "100:1110", "1000:11110", "null:2", "null:3"}; for (int i = 0; i < expected.length; i++) { assertEquals(expected[i], processor.processed.get(i)); } }