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)); + } + }