package com.kaching.platform.common;
import static com.google.common.collect.Lists.newArrayList;
import static com.kaching.platform.common.Range.range;
import static com.kaching.platform.testing.EquivalenceTester.check;
import static junit.framework.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
public class RangeTest {
@Test
public void testContains() throws Exception {
assertTrue(new Range(0, 5).contains(new Range(2, 4)));
assertTrue(new Range(0, 5).contains(new Range(0, 5)));
assertFalse(new Range(3, 5).contains(new Range(0, 5)));
assertFalse(new Range(0, 5).contains(new Range(0, 6)));
assertFalse(new Range(0, 5).contains(new Range(7, 8)));
}
@Test
public void testOverlaps() throws Exception {
assertTrue(new Range(0, 5).overlaps(new Range(2, 4)));
assertTrue(new Range(0, 5).overlaps(new Range(0, 5)));
assertTrue(new Range(3, 5).overlaps(new Range(0, 5)));
assertTrue(new Range(0, 5).overlaps(new Range(0, 6)));
assertFalse(new Range(0, 5).overlaps(new Range(7, 8)));
assertFalse(new Range(4, 6).overlaps(new Range(0, 4)));
assertTrue(new Range(3, 6).overlaps(new Range(0, 4)));
assertFalse(new Range(4, 6).overlaps(new Range(6, 7)));
assertTrue(new Range(4, 6).overlaps(new Range(5, 7)));
assertTrue(new Range(0, 22).overlaps(new Range(13, 16)));
assertTrue(new Range(13, 16).overlaps(new Range(0, 22)));
}
@Test
public void equivalence() {
check(
newArrayList(
new Range(0, 2),
new Range(0, 2)),
newArrayList(
new Range(1, 3),
new Range(1, 3)));
}
@Test public void itShouldBeFunctional() {
List<Integer> accumulator = new ArrayList<Integer>();
for (Integer i : range(1, 10)) {
accumulator.add(i);
}
assertEquals(newArrayList(1, 2, 3, 4, 5, 6, 7, 8, 9), accumulator);
}
@Test public void itShouldBeFunctionalCountdown() {
List<Integer> accumulator = new ArrayList<Integer>();
for (Integer i : range(10, 0)) {
accumulator.add(i);
}
assertEquals(newArrayList(10, 9, 8, 7, 6, 5, 4, 3, 2, 1), accumulator);
}
}