import cs2030s.fp.InfiniteList; class Test6 { public static void main(String[] args) { CS2030STest i = new CS2030STest(); InfiniteList numbers = InfiniteList.iterate(0, x -> x + 1); i.expectReturn( "InfiniteList.end().reduce(0, (x, y) -> x + y)", () -> InfiniteList.end().reduce(0, (x, y) -> x + y), 0); i.expectReturn( "InfiniteList.iterate(0, x -> x + 1).limit(5).reduce(0, (x, y) -> x + y)", () -> numbers.limit(5).reduce(0, (x, y) -> x + y), 10); i.expectReturn( "InfiniteList.iterate(0, x -> x + 1).limit(0).reduce(0, (x, y) -> x + y)", () -> InfiniteList.iterate(0, x -> x + 1).limit(0).reduce(0, (x, y) -> x + y), 0); i.expectReturn( "InfiniteList.iterate(1, x -> x + 1).map(x -> x * x).limit(5).reduce(1, (x, y) -> x * y)", () -> InfiniteList.iterate(1, x -> x + 1).map(x -> x * x).limit(5) .reduce(1, (x, y) -> x * y), 14400); i.expectReturn( "InfiniteList.end().count()", () -> InfiniteList.end().count(), 0L); i.expectReturn( "InfiniteList.iterate(0, x -> x + 1).limit(0).count()", () -> numbers.limit(0).count(), 0L); i.expectReturn( "InfiniteList.iterate(0, x -> x + 1).limit(1).count()", () -> numbers.limit(1).count(), 1L); i.expectReturn( "InfiniteList.iterate(0, x -> x + 1).filter(x -> x % 2 == 1).limit(10).count()", () -> numbers.filter(x -> x % 2 == 1).limit(10).count(), 10L); i.expectReturn( "InfiniteList.iterate(0, x -> x + 1).limit(10).filter(x -> x % 2 == 1).count()", () -> numbers.limit(10).filter(x -> x % 2 == 1).count(), 5L); i.expectReturn( "InfiniteList.iterate(0, x -> x + 1).takeWhile(x -> x < 10).count()", () -> numbers.takeWhile(x -> x < 10).count(), 10L); i.expectReturn( "InfiniteList.iterate(0, x -> x + 1).takeWhile(x -> x < 10).filter(x -> x % 2 == 0)" + ".count()", () -> numbers.takeWhile(x -> x < 10).filter(x -> x % 2 == 0).count(), 5L); } }