package jetbrains.mps.baseLanguage.math.tests;
/*Generated by MPS */
import org.junit.Test;
import jetbrains.mps.baseLanguage.math.runtime.Interval;
import org.junit.Assert;
import java.util.Arrays;
import java.util.List;
import java.util.ArrayList;
public class IntervalTest {
public IntervalTest() {
}
@Test
public void simpleInterval() {
Interval<Integer> interval = new Interval<Integer>(0, 10);
Assert.assertTrue(interval.contains(5));
Assert.assertTrue(interval.contains(0));
Assert.assertTrue(interval.contains(10));
Assert.assertFalse(interval.contains(-1));
Assert.assertFalse(interval.contains(11));
}
@Test
public void leftNotIncluded() {
Interval<Integer> interval = new Interval<Integer>(0, false, 10, true);
Assert.assertTrue(interval.contains(5));
Assert.assertFalse(interval.contains(0));
Assert.assertTrue(interval.contains(10));
}
@Test
public void rightNotIncluded() {
Interval<Integer> interval = new Interval<Integer>(0, true, 10, false);
Assert.assertTrue(interval.contains(5));
Assert.assertTrue(interval.contains(0));
Assert.assertFalse(interval.contains(10));
}
@Test
public void leftInfinity() {
Interval<Integer> interval = new Interval<Integer>(null, false, 10, true);
Assert.assertTrue(interval.contains(-1000));
Assert.assertTrue(interval.contains(10));
Assert.assertFalse(interval.contains(100));
}
@Test
public void rightInfinity() {
Interval<Integer> interval = new Interval<Integer>(0, true, null, false);
Assert.assertTrue(interval.contains(0));
Assert.assertTrue(interval.contains(1000));
Assert.assertFalse(interval.contains(-1));
}
@Test
public void integerIterationAllIncluded() {
Interval<Integer> interval = new Interval<Integer>(0, 2);
Assert.assertEquals(Arrays.asList(0, 1, 2), elements(interval));
}
@Test
public void integerIterationLeftNotIncluded() {
Interval<Integer> interval = new Interval<Integer>(0, false, 2, true);
Assert.assertEquals(Arrays.asList(1, 2), elements(interval));
}
@Test
public void integerIterationRightNotIncluded() {
Interval<Integer> interval = new Interval<Integer>(0, true, 2, false);
Assert.assertEquals(Arrays.asList(0, 1), elements(interval));
}
@Test
public void oneElementIntervalIteration() {
Interval<Integer> interval = new Interval<Integer>(0, 0);
Assert.assertEquals(Arrays.asList(0), elements(interval));
}
@Test(expected = IllegalArgumentException.class)
public void endBeforStart() {
new Interval<Integer>(100, 1);
}
@Test(expected = IllegalArgumentException.class)
public void minusInfinityIncluded() {
new Interval<Integer>(null, true, 1, false);
}
@Test(expected = IllegalArgumentException.class)
public void plusInfinityIncluded() {
new Interval<Integer>(1, true, null, true);
}
@Test(expected = IllegalArgumentException.class)
public void emptyInterval() {
new Interval<Comparable>(0, false, 0, false);
}
@Test(expected = UnsupportedOperationException.class)
public void iterationFromInfinity() {
for (Integer i : new Interval<Integer>(null, false, 100, true)) {
}
}
private <T extends Comparable> List<T> elements(Interval<T> interval) {
List<T> result = new ArrayList<T>();
for (T t : interval) {
result.add(t);
}
return result;
}
}