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.gcube.data.streams.test.Utils.*; import java.util.List; import org.gcube.data.streams.dsl.Streams; import org.gcube.data.streams.generators.Generator; import org.gcube.data.streams.test.StreamProvider; import org.junit.Test; public class UnfoldedStreamTest { static Generator, Stream> streamer = new Generator, Stream>() { @Override public Stream yield(List element) { return convert(element); } }; @Test public void consume() throws Exception { @SuppressWarnings("unchecked") final List> data = asList(asList("1","2","3"),asList("1","2","3")); StreamProvider provider = new StreamProvider() { public Stream get() { Stream> stream = convert(data); return unfold(stream).through(streamer); } }; List unfoldedData = asList("1","2","3","1","2","3"); assertEquals(unfoldedData,elementsOf(provider.get())); } @Test public void handleFailures() { @SuppressWarnings("unchecked") final List data = asList(asList(fault1,"1",fault2,"2","3",fault3), asList("1",fault1,"2",fault2,"3")); StreamProvider provider = new StreamProvider() { public Stream get() { @SuppressWarnings("all") Stream> stream = (Stream) Streams.convertWithFaults(List.class,data); return unfold(stream).through(streamer); } }; List unfoldedFailingData = asList(fault1,"1",fault2,"2","3",fault3,"1",fault1,"2",fault2,"3"); assertEquals(unfoldedFailingData,elementsOf(provider.get())); } @Test public void ignoreFailures() { @SuppressWarnings("unchecked") final List> data = asList(asList("1","2","3"),asList("1","2","3")); StreamProvider provider = new StreamProvider() { public Stream get() { Stream> stream = convert(data); Stream unfolded = unfold(stream).through(streamer); return guard(unfolded).with(IGNORE_POLICY); } }; List unfoldedData = asList("1","2","3","1","2","3"); assertEquals(unfoldedData,elementsOf(provider.get())); } }