package org.osgl.util;
import org.osgl.$;
import org.osgl.exception.NotAppliedException;
import java.util.Arrays;
import java.util.List;
/**
* Created with IntelliJ IDEA.
* User: luog
* Date: 10/11/13
* Time: 11:37 AM
* To change this template use File | Settings | File Templates.
*/
public class LazySeqTest extends SequenceTestBase {
private static class MyLazySeq<T> extends LazySeq<T> {
MyLazySeq(final List<T> data, final int cursor) {
super(data.get(cursor), new $.F0<C.Sequence<T>>() {
@Override
public C.Sequence<T> apply() throws NotAppliedException, $.Break {
if (cursor < data.size() - 1) {
return new MyLazySeq<T>(data, cursor + 1);
}
return Nil.seq();
}
});
}
}
@Override
protected C.Sequence<Integer> prepareData(final int... ia) {
return new MyLazySeq<Integer>(Arrays.asList($.asObject(ia)), 0);
}
@Override
protected C.Sequence<Integer> prepareEmptyData() {
return Nil.list();
}
@Override
protected <T> C.Sequence<T> prepareTypedData(T... ta) {
return new MyLazySeq<T>(Arrays.asList(ta), 0);
}
}