package org.osgl.util; import org.junit.Before; import org.junit.Test; import org.osgl.$; import org.osgl.exception.InvalidArgException; import java.io.IOException; import java.util.Random; public class LazyRangeTest extends UtilTestBase { protected C.Range<Integer> range; @Before public void setUp() { range = C.range(0, 100); } @Test public void from() { eq(0, range.from()); } @Test public void to() { eq(100, range.to()); } @Test public void merge() { eq(C.range(0, 200), range.merge(C.range(100, 200))); eq(C.range(0, 200), range.merge(C.range(0, 200))); eq(C.range(0, 100), range.merge(C.range(0, 100))); eq(C.range(-100, 100), range.merge(C.range(-100, 0))); eq(C.range(-100, 100), range.merge(C.range(-100, 50))); eq(C.range(-1, 101), range.merge(C.range(-1, 101))); eq(C.range(0, 100), range.merge(C.range(10, 20))); } @Test(expected = IllegalArgumentException.class) public void merge1() { eq(C.range(0, 200), range.merge(C.range(200, 100))); } @Test(expected = InvalidArgException.class) public void merge2() { range.merge(C.range(101, 200)); } @Test public void reverse() { eq(C.range(99, -1), range.reverse()); } @Test public void last() { eq(99, range.last()); } @Test public void tail() { eq(C.range(1, 100), range.tail()); } @Test public void tailN() { eq(C.range(90, 100), range.tail(10)); } @Test public void take() { eq(C.range(0, 10), range.take(10)); } @Test public void drop() { eq(C.range(10, 100), range.drop(10)); } @Test public void contains() { yes(range.contains(new Random().nextInt(100))); no(range.contains(new Random().nextInt(100) + 100)); } @Test public void containsAll() { yes(range.containsAll(C.range(10, 20))); } @Test public void serialize() throws IOException { C.Range<Integer> newRange = $.materialize($.serialize(range)); eq(newRange, range); } }