package org.gcube.data.streams; import static java.util.Arrays.*; import static junit.framework.Assert.*; import static org.gcube.data.streams.TestUtils.*; import static org.gcube.data.streams.dsl.Streams.*; import static org.mockito.Mockito.*; import java.util.ArrayList; import java.util.List; import org.junit.Test; public class CallbackTest { @Test public void callbackConsumeStreams() { final List data = asList("1","2","3"); Stream stream = convert(data); final List consumed = new ArrayList(); Callback callback = new Callback() { @Override public void consume(String element) { consumed.add(element); } }; consume(stream).with(callback); assertTrue(stream.isClosed()); assertEquals(data,consumed); } @Test public void callbackStopIteration() { final List data = asList("1","2","3"); Stream stream = convert(data); final List consumed = new ArrayList(); Callback callback = new Callback() { @Override public void consume(String element) { if (element.equals("2")) iteration.stop(); else consumed.add(element); } }; consume(stream).with(callback); assertTrue(stream.isClosed()); assertEquals(asList("1"),consumed); } @Test public void callbackSkipsElement() { final List data = asList("1","2","3"); Stream stream = convert(data); final List consumed = new ArrayList(); Callback callback = new Callback() { @Override public void consume(String element) { if (element.equals("2")) iteration.skip(); else consumed.add(element); } }; consume(stream).with(callback); assertTrue(stream.isClosed()); assertEquals(asList("1","3"),consumed); } @Test public void consumerPropagatesFailures() { Stream stream = stringsAndFaults("1",fault1,"3"); @SuppressWarnings("unchecked") Callback callback = mock(Callback.class); try { consume(stream).with(callback); fail(); } catch(Exception e) { assertEquals(fault1,e); } } }