epfl-archive/Alpano/tests/ch/epfl/alpano/Interval1DTest.java
2022-04-07 18:43:21 +02:00

258 lines
7.4 KiB
Java

package ch.epfl.alpano;
import static ch.epfl.test.TestRandomizer.RANDOM_ITERATIONS;
import static ch.epfl.test.TestRandomizer.newRandom;
import static org.junit.Assert.*;
import java.util.Random;
import org.junit.Test;
public class Interval1DTest {
@Test(expected = IllegalArgumentException.class)
public void testRandomIncludedFromAndToFails() {
Random rng = newRandom();
int a,b;
for (int i = 0; i < RANDOM_ITERATIONS; ++i){
a = rng.nextInt();
b = rng.nextInt();
if(a>b){
new Interval1D(a,b);
}
}
}
@Test
public void testRandomIncludedFromAndTo() {
Random rng = newRandom();
Interval1D interval;
int a,b;
for (int i = 0; i < RANDOM_ITERATIONS; ++i){
a = rng.nextInt();
b = rng.nextInt();
if(a<=b){
interval = new Interval1D(a,b);
assertEquals(interval.includedFrom(),a,0);
assertEquals(interval.includedTo(),b,0);
assertEquals(interval.size(),(b-a+1),0);
}
}
}
@Test
public void testLimitsIncludedFromAndTo() {
Interval1D interval = new Interval1D(0,0);
assertEquals(interval.includedFrom(),0,0);
assertEquals(interval.includedTo(),0,0);
assertEquals(interval.size(),1,0);
}
@Test
public void testContainsTrue() {
Random rng = newRandom();
Interval1D interval;
int a,b,m;
for (int i = 0; i < RANDOM_ITERATIONS; ++i){
a = rng.nextInt(500);
b = rng.nextInt(500);
if(a<=b){
m = (b+a)/2;
interval = new Interval1D(a,b);
assertTrue(interval.contains(m));
}
}
}
@Test
public void testContainsFails() {
Random rng = newRandom();
Interval1D interval;
int a,b,c;
for (int i = 0; i < RANDOM_ITERATIONS; ++i){
a = rng.nextInt(500);
b = rng.nextInt(500);
c = rng.nextInt(500);
if(a<=b && (c<a ||c>b)){
interval = new Interval1D(a,b);
assertFalse(interval.contains(c));
}
}
}
@Test
public void testSizeOfIntersectionWith() {
Interval1D interval1;
Interval1D interval2;
int num[] = {
1,1,0,2,1,
1,2,1,5,2,
1,4,0,2,2,
1,4,0,1,1,
2,4,0,1,0
};
for (int i = 0; i < num.length; i += 5) {
interval1 = new Interval1D(num[i],num[i+1]);
interval2 = new Interval1D(num[i+2],num[i+3]);
assertEquals(interval1.sizeOfIntersectionWith(interval2), interval2.sizeOfIntersectionWith(interval1));
assertEquals(interval1.sizeOfIntersectionWith(interval2), num[i+4], 0);
}
}
@Test
public void testBoundingUnion() {
Interval1D interval1;
Interval1D interval2;
Interval1D interval3;
int num[] = {
1,1,0,2,0,2,
1,1,1,1,1,1,
0,0,0,0,0,0,
0,0,1,1,0,1,
0,1,0,1,0,1,
0,5,1,1,0,5,
0,4,1,5,0,5,
1,5,0,4,0,5,
1,4,0,5,0,5,
0,0,9,9,0,9
};
for (int i = 0; i < num.length; i += 6) {
interval1 = new Interval1D(num[i],num[i+1]);
interval2 = new Interval1D(num[i+2],num[i+3]);
interval3 = new Interval1D(num[i+4],num[i+5]);
assertTrue(interval1.boundingUnion(interval2).equals(interval3));
}
}
@Test
public void testIsUnionableWithTrue() {
Interval1D interval1;
Interval1D interval2;
int num[] = {
1,1,0,2,
1,2,1,5,
1,4,0,2,
1,4,0,1,
2,4,0,2,
0,0,0,1,
0,5,5,5,
0,1,1,1,
-1,1,0,2
};
for (int i = 0; i < num.length; i += 4) {
interval1 = new Interval1D(num[i],num[i+1]);
interval2 = new Interval1D(num[i+2],num[i+3]);
assertEquals(interval1.isUnionableWith(interval2), interval2.isUnionableWith(interval1));
assertTrue(interval1.isUnionableWith(interval2));
}
}
@Test
public void testIsUnionableWithFalse() {
Interval1D interval1;
Interval1D interval2;
int num[] = {
0,0,2,2,
0,0,2,3,
0,0,4,4,
0,4,6,8,
2,2,0,0,
};
for (int i = 0; i < num.length; i += 4) {
interval1 = new Interval1D(num[i],num[i+1]);
interval2 = new Interval1D(num[i+2],num[i+3]);
assertEquals(interval1.isUnionableWith(interval2), interval2.isUnionableWith(interval1));
assertFalse(interval1.isUnionableWith(interval2));
}
}
@Test
public void testUnion() {
Interval1D interval1;
Interval1D interval2;
String str;
int num[] = {
1,1,0,2,0,2,
1,1,1,1,1,1,
0,0,0,0,0,0,
0,1,0,1,0,1,
0,1,0,1,0,1,
0,5,1,1,0,5,
0,4,1,5,0,5,
1,5,0,4,0,5,
1,4,0,5,0,5,
};
for (int i = 0; i < num.length; i += 6) {
interval1 = new Interval1D(num[i],num[i+1]);
interval2 = new Interval1D(num[i+2],num[i+3]);
str =("["+num[i+4]+".."+num[i+5]+"]");
assertEquals(str,interval1.union(interval2).toString());
}
}
@Test(expected = IllegalArgumentException.class)
public void testUnionFails() {
Interval1D interval1 = new Interval1D(0,0);
Interval1D interval2 = new Interval1D(2,2);
interval1.union(interval2);
}
@Test
public void testEqualsObjectTrue() {
Random rng = newRandom();
Interval1D interval1;
Interval1D interval2;
int a,b;
for (int i = 0; i < RANDOM_ITERATIONS; ++i){
a = rng.nextInt(500);
b = rng.nextInt(500);
if(a<=b){
interval1 = new Interval1D(a,b);
interval2 = new Interval1D(a,b);
assertTrue(interval1.equals(interval2));
assertEquals(interval1.equals(interval2), interval2.equals(interval1));
}
}
}
@Test
public void testEqualsObjectFalse() {
Random rng = newRandom();
Interval1D interval1;
String str = "";
int a,b;
for (int i = 0; i < RANDOM_ITERATIONS; ++i){
a = rng.nextInt(500);
b = rng.nextInt(500);
if(a<=b){
interval1 = new Interval1D(a,b);
assertFalse(interval1.equals(str));
assertEquals(interval1.equals(str), str.equals(interval1));
}
}
}
@Test
public void testToString() {
Random rng = newRandom();
Interval1D interval1;
int a,b;
for (int i = 0; i < RANDOM_ITERATIONS; ++i){
a = rng.nextInt(500);
b = rng.nextInt(500);
if(a<=b){
interval1 = new Interval1D(a,b);
assertEquals(interval1.toString(),"["+a+".."+b+"]");
}
}
}
}