mirror of
https://github.com/graphhopper/jsprit.git
synced 2020-01-24 07:45:05 +01:00
added helper methods to deal with adding and subtracting of capacities
and multiple dimensions, and their corresponding tests
This commit is contained in:
parent
9f1580927c
commit
ea5fc1a3de
3 changed files with 281 additions and 6 deletions
|
|
@ -2,6 +2,7 @@
|
|||
package jsprit.core.problem;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.util.Random;
|
||||
|
|
@ -45,12 +46,12 @@ public class CapacityTest {
|
|||
assertEquals(4,cap.get(0));
|
||||
}
|
||||
|
||||
@Test(expected=IndexOutOfBoundsException.class)
|
||||
public void whenGettingIndexWhichIsHigherThanNuOfCapDimensions_throwIndexOutOfBoundsException(){
|
||||
@Test
|
||||
public void whenGettingIndexWhichIsHigherThanNuOfCapDimensions_itShouldReturn0(){
|
||||
Capacity.Builder capBuilder = Capacity.Builder.newInstance();
|
||||
capBuilder.addDimension(0, 4);
|
||||
Capacity cap = capBuilder.build();
|
||||
cap.get(2);
|
||||
assertEquals(0,cap.get(2));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -89,5 +90,169 @@ public class CapacityTest {
|
|||
Capacity nullCap = Capacity.copyOf(null);
|
||||
assertTrue(nullCap==null);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenAddingUpTwoOneDimensionalCapacities_itShouldReturnCorrectCapacityValues(){
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).build();
|
||||
Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).build();
|
||||
Capacity result = Capacity.addup(cap1, cap2);
|
||||
assertEquals(3, result.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenAddingUpTwoOneDimensionalCapacities_itShouldReturnCorrectNuOfDimensions(){
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).build();
|
||||
Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).build();
|
||||
Capacity result = Capacity.addup(cap1, cap2);
|
||||
assertEquals(1, result.getNuOfDimensions());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenAddingUpTwoThreeDimensionalCapacities_itShouldReturnCorrectNuOfDimensions(){
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(2, 3).build();
|
||||
Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build();
|
||||
Capacity result = Capacity.addup(cap1, cap2);
|
||||
assertEquals(3, result.getNuOfDimensions());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenAddingUpTwoThreeDimensionalCapacities_itShouldReturnCorrectCapValues(){
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(2, 3).build();
|
||||
Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build();
|
||||
Capacity result = Capacity.addup(cap1, cap2);
|
||||
assertEquals(3, result.get(0));
|
||||
assertEquals(5, result.get(1));
|
||||
assertEquals(7, result.get(2));
|
||||
}
|
||||
|
||||
public void whenAddingUpTwoCapacitiesWithDifferentNuOfDimensions_itShouldAddThemCorrectly(){
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).build();
|
||||
Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).build();
|
||||
Capacity result = Capacity.addup(cap1, cap2);
|
||||
assertEquals(3,result.get(0));
|
||||
assertEquals(2,result.get(1));
|
||||
}
|
||||
|
||||
@Test(expected=NullPointerException.class)
|
||||
public void whenOneOfArgsIsNullWhenAdding_itShouldThrowException(){
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).build();
|
||||
@SuppressWarnings("unused")
|
||||
Capacity result = Capacity.addup(cap1, null);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Test
|
||||
public void whenSubtractingTwoOneDimensionalCapacities_itShouldReturnCorrectCapacityValues(){
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).build();
|
||||
Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).build();
|
||||
Capacity result = Capacity.subtract(cap2, cap1);
|
||||
assertEquals(1, result.get(0));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenSubtractingTwoOneDimensionalCapacities_itShouldReturnCorrectNuOfDimensions(){
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).build();
|
||||
Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).build();
|
||||
Capacity result = Capacity.subtract(cap2, cap1);
|
||||
assertEquals(1, result.getNuOfDimensions());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenSubtractingTwoThreeDimensionalCapacities_itShouldReturnCorrectNuOfDimensions(){
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(2, 3).build();
|
||||
Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build();
|
||||
Capacity result = Capacity.subtract(cap2, cap1);
|
||||
assertEquals(3, result.getNuOfDimensions());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenSubtractingTwoThreeDimensionalCapacities_itShouldReturnCorrectCapValues(){
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(2, 3).build();
|
||||
Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build();
|
||||
Capacity result = Capacity.subtract(cap2, cap1);
|
||||
assertEquals(1, result.get(0));
|
||||
assertEquals(1, result.get(1));
|
||||
assertEquals(1, result.get(2));
|
||||
}
|
||||
|
||||
@Test(expected=IllegalStateException.class)
|
||||
public void whenSubtractingTwoCapacitiesWithDifferentNuOfDimensions_itShouldThrowException(){
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).build();
|
||||
Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).build();
|
||||
@SuppressWarnings("unused")
|
||||
Capacity result = Capacity.subtract(cap2, cap1);
|
||||
}
|
||||
|
||||
@Test(expected=NullPointerException.class)
|
||||
public void whenOneOfArgsIsNullWhenSubtracting_itShouldThrowException(){
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).build();
|
||||
@SuppressWarnings("unused")
|
||||
Capacity result = Capacity.subtract(cap1, null);
|
||||
}
|
||||
|
||||
@Test(expected=IllegalStateException.class)
|
||||
public void whenSubtractingBiggerFromLower_itShouldReturnException(){
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(2, 3).build();
|
||||
Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build();
|
||||
@SuppressWarnings("unused")
|
||||
Capacity result = Capacity.subtract(cap1, cap2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenOneCapIsLessThanAnother_itShouldReturnCorrectBoolean(){
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 1).addDimension(1, 2).addDimension(2, 3).build();
|
||||
Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build();
|
||||
assertTrue(cap1.isLessOrEqual(cap2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenOneCapIsLessThanAnother_itShouldReturnCorrectBoolean_v2(){
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 2).addDimension(2, 4).build();
|
||||
Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build();
|
||||
assertTrue(cap1.isLessOrEqual(cap2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenOneCapIsLessThanAnother_itShouldReturnCorrectBoolean_v3(){
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build();
|
||||
Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build();
|
||||
assertTrue(cap1.isLessOrEqual(cap2));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenOneCapIsBiggerThanAnother_itShouldReturnCorrectBoolean(){
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build();
|
||||
Capacity cap2 = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 4).addDimension(2, 4).build();
|
||||
assertFalse(cap2.isLessOrEqual(cap1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenAddingTwo_itShouldReturnCorrectCap(){
|
||||
int wheelChairSpace = 0;
|
||||
int passengerSeats = 1;
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(wheelChairSpace, 2).addDimension(passengerSeats, 10).build();
|
||||
Capacity wheelChair = Capacity.Builder.newInstance().addDimension(wheelChairSpace, 1).build();
|
||||
Capacity passenger = Capacity.Builder.newInstance().addDimension(passengerSeats, 1).build();
|
||||
Capacity wheelChair_plus_passenger = Capacity.addup(wheelChair, passenger);
|
||||
assertEquals(1,wheelChair_plus_passenger.get(wheelChairSpace));
|
||||
assertEquals(1,wheelChair_plus_passenger.get(passengerSeats));
|
||||
assertTrue(wheelChair_plus_passenger.isLessOrEqual(cap1));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void whenAddingTwo_itShouldReturnCorrectCap_v2(){
|
||||
int wheelChairSpace = 0;
|
||||
int passengerSeats = 1;
|
||||
int weight = 2;
|
||||
Capacity cap1 = Capacity.Builder.newInstance().addDimension(wheelChairSpace, 2).addDimension(passengerSeats, 10).addDimension(2, 100).build();
|
||||
Capacity wheelChair = Capacity.Builder.newInstance().addDimension(wheelChairSpace, 1).addDimension(weight, 80).build();
|
||||
Capacity passenger = Capacity.Builder.newInstance().addDimension(passengerSeats, 1).addDimension(weight, 30).build();
|
||||
Capacity wheelChair_plus_passenger = Capacity.addup(wheelChair, passenger);
|
||||
assertEquals(1,wheelChair_plus_passenger.get(wheelChairSpace));
|
||||
assertEquals(1,wheelChair_plus_passenger.get(passengerSeats));
|
||||
assertEquals(110,wheelChair_plus_passenger.get(weight));
|
||||
assertFalse(wheelChair_plus_passenger.isLessOrEqual(cap1));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue