From 1423c904075b7a356616d3ed081df11dbb0c1921 Mon Sep 17 00:00:00 2001
From: oblonski <4sschroeder@gmail.com>
Date: Tue, 18 Feb 2014 09:49:54 +0100
Subject: [PATCH] added method to invert capacity
---
.../java/jsprit/core/problem/Capacity.java | 22 +++++++++++++----
.../jsprit/core/problem/CapacityTest.java | 24 ++++++++++++++-----
2 files changed, 35 insertions(+), 11 deletions(-)
diff --git a/jsprit-core/src/main/java/jsprit/core/problem/Capacity.java b/jsprit-core/src/main/java/jsprit/core/problem/Capacity.java
index a5599672..5cf09f4e 100644
--- a/jsprit-core/src/main/java/jsprit/core/problem/Capacity.java
+++ b/jsprit-core/src/main/java/jsprit/core/problem/Capacity.java
@@ -38,20 +38,34 @@ public class Capacity {
* @return new capacity
* @throws NullPointerException if one of the args is null
* @throws IllegalStateException if number of capacityDimensions of cap1 and cap2 are different (i.e. cap1.getNuOfDimension() != cap2.getNuOfDimension()).
- * @throws IllegalStateException if one of the capacityDimenstions has a negative value after subtracting
+ *
*/
public static Capacity subtract(Capacity cap, Capacity cap2substract){
if(cap==null || cap2substract==null) throw new NullPointerException("arguments must not be null");
Capacity.Builder capacityBuilder= Capacity.Builder.newInstance();
for(int i=0;iNote that it automatically resizes dimensions according to index, i.e. if index=7 there are 8 dimensions.
* New dimensions then are initialized with 0
*
- * @throw IllegalStateException if dimValue < 0
* @param index
* @param dimValue
* @return
*/
public Builder addDimension(int index, int dimValue){
- if(dimValue<0) throw new IllegalStateException("dimValue can never be negative");
if(index < dimensions.length){
dimensions[index] = dimValue;
}
diff --git a/jsprit-core/src/test/java/jsprit/core/problem/CapacityTest.java b/jsprit-core/src/test/java/jsprit/core/problem/CapacityTest.java
index 2f969f0e..361f6f6e 100644
--- a/jsprit-core/src/test/java/jsprit/core/problem/CapacityTest.java
+++ b/jsprit-core/src/test/java/jsprit/core/problem/CapacityTest.java
@@ -176,12 +176,13 @@ public class CapacityTest {
assertEquals(1, result.get(2));
}
- @Test(expected=IllegalStateException.class)
- public void whenSubtractingTwoCapacitiesWithDifferentNuOfDimensions_itShouldThrowException(){
+ @Test
+ public void whenSubtractingTwoCapacitiesWithDifferentNuOfDimensions_itShouldSubtractCorrectly(){
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);
+ assertEquals(1,result.get(0));
+ assertEquals(-2,result.get(1));
}
@Test(expected=NullPointerException.class)
@@ -191,12 +192,14 @@ public class CapacityTest {
Capacity result = Capacity.subtract(cap1, null);
}
- @Test(expected=IllegalStateException.class)
- public void whenSubtractingBiggerFromLower_itShouldReturnException(){
+ @Test
+ public void whenSubtractingBiggerFromLower_itShouldSubtractCorrectly(){
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);
+ assertEquals(-1,result.get(0));
+ assertEquals(-1,result.get(1));
+ assertEquals(-1,result.get(2));
}
@Test
@@ -255,4 +258,13 @@ public class CapacityTest {
assertFalse(wheelChair_plus_passenger.isLessOrEqual(cap1));
}
+ @Test
+ public void whenInvertingCap_itShouldBeDoneCorrectly(){
+ Capacity cap = Capacity.Builder.newInstance().addDimension(0, 2).addDimension(1, 3).addDimension(2, 4).build();
+ Capacity inverted = Capacity.invert(cap);
+ assertEquals(-2,inverted.get(0));
+ assertEquals(-3,inverted.get(1));
+ assertEquals(-4,inverted.get(2));
+ }
+
}