From dc52d9b2d89d604120cd922d681c1e90ea05b235 Mon Sep 17 00:00:00 2001 From: Heinrich Filter Date: Tue, 27 Jun 2017 23:21:07 +0200 Subject: [PATCH 1/8] Add createTwoVehicleTypeAndInstancesBuilder method --- .../jsprit/io/problem/VrpXMLWriterTest.java | 41 ++++++++----------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java index e75e1ba8..83f984e4 100644 --- a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java +++ b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java @@ -774,17 +774,7 @@ public class VrpXMLWriterTest { @Test public void whenWritingVehicleV2_readingItsLocationsAgainReturnsCorrectLocations() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false).setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2") - .setStartLocation(TestUtils.loc("startLoc", Coordinate.newInstance(1, 2))) - .setEndLocation(TestUtils.loc("endLoc", Coordinate.newInstance(4, 5))).setType(type2).build(); - - builder.addVehicle(v1); - builder.addVehicle(v2); + VehicleRoutingProblem.Builder builder = createTwoVehicleTypeAndInstancesBuilder(); Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); @@ -803,18 +793,7 @@ public class VrpXMLWriterTest { @Test public void whenWritingVehicleV2_readingItsLocationsCoordsAgainReturnsCorrectLocationsCoords() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false) - .setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2") - .setStartLocation(TestUtils.loc("startLoc", Coordinate.newInstance(1, 2))) - .setEndLocation(TestUtils.loc("endLoc", Coordinate.newInstance(4, 5))).setType(type2).build(); - - builder.addVehicle(v1); - builder.addVehicle(v2); + VehicleRoutingProblem.Builder builder = createTwoVehicleTypeAndInstancesBuilder(); Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); @@ -834,6 +813,22 @@ public class VrpXMLWriterTest { Assert.assertEquals(5.0, v.getEndLocation().getCoordinate().getY(), 0.01); } + private VehicleRoutingProblem.Builder createTwoVehicleTypeAndInstancesBuilder() { + VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); + + VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); + VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); + VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setReturnToDepot(false) + .setStartLocation(TestUtils.loc("loc")).setType(type1).build(); + VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2") + .setStartLocation(TestUtils.loc("startLoc", Coordinate.newInstance(1, 2))) + .setEndLocation(TestUtils.loc("endLoc", Coordinate.newInstance(4, 5))).setType(type2).build(); + + builder.addVehicle(v1); + builder.addVehicle(v2); + return builder; + } + @Test public void whenWritingVehicleWithSeveralCapacityDimensions_itShouldBeWrittenAndRereadCorrectly() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); From 6d0f0c38b399253685063ae7bd77a5ae60798ad5 Mon Sep 17 00:00:00 2001 From: Heinrich Filter Date: Wed, 28 Jun 2017 00:11:05 +0200 Subject: [PATCH 2/8] Extract method to write and re-read the XML Also combine skill check tests into one with multiple assertions --- .../jsprit/io/problem/VrpXMLWriterTest.java | 253 ++++-------------- 1 file changed, 57 insertions(+), 196 deletions(-) diff --git a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java index 83f984e4..ae48e513 100644 --- a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java +++ b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java @@ -84,22 +84,19 @@ public class VrpXMLWriterTest { VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build(); builder.addVehicle(v1); builder.addVehicle(v2); - VehicleRoutingProblem vrp = builder.build(); - new VrpXMLWriter(vrp, null).write(infileName); - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); + VehicleRoutingProblem vrp = builder.build(); + writeAndRereadXml(vrp); + } @Test public void whenWritingServices_itWritesThemCorrectly() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build(); VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build(); - builder.addVehicle(v1); builder.addVehicle(v2); @@ -108,11 +105,7 @@ public class VrpXMLWriterTest { Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); assertEquals(2, readVrp.getJobs().size()); Service s1_read = (Service) vrp.getJobs().get("1"); @@ -128,11 +121,7 @@ public class VrpXMLWriterTest { Service s1 = Service.Builder.newInstance("1").setName("cleaning").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); VehicleRoutingProblem vrp = builder.addJob(s1).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Service s1_read = (Service) readVrp.getJobs().get("1"); assertTrue(s1_read.getName().equals("cleaning")); } @@ -146,11 +135,7 @@ public class VrpXMLWriterTest { .setDeliveryLocation(TestUtils.loc("del")).build(); VehicleRoutingProblem vrp = builder.addJob(s1).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Shipment s1_read = (Shipment) readVrp.getJobs().get("1"); assertTrue(s1_read.getName().equals("cleaning")); Assert.assertEquals(1, s1_read.getPickupLocation().getIndex()); @@ -167,11 +152,7 @@ public class VrpXMLWriterTest { Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); assertEquals(2, readVrp.getJobs().size()); Service s1_read = (Service) vrp.getJobs().get("1"); @@ -205,11 +186,7 @@ public class VrpXMLWriterTest { VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); assertEquals(2, readVrp.getJobs().size()); Assert.assertEquals("pickLoc", ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getId()); @@ -240,11 +217,7 @@ public class VrpXMLWriterTest { VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); assertEquals(2, readVrp.getJobs().size()); Assert.assertEquals(1.0, ((Shipment) readVrp.getJobs().get("1")).getPickupTimeWindow().getStart(), 0.01); @@ -276,11 +249,7 @@ public class VrpXMLWriterTest { VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); assertEquals(2, readVrp.getJobs().size()); Assert.assertEquals(3.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryTimeWindow().getStart(), 0.01); @@ -311,11 +280,7 @@ public class VrpXMLWriterTest { VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); assertEquals(2, readVrp.getJobs().size()); assertEquals(100.0, ((Shipment) readVrp.getJobs().get("1")).getPickupServiceTime(), 0.01); @@ -345,11 +310,7 @@ public class VrpXMLWriterTest { VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); assertEquals(2, readVrp.getJobs().size()); Assert.assertEquals("[x=1.0][y=2.0]", ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getId()); @@ -364,11 +325,7 @@ public class VrpXMLWriterTest { builder.addVehicle(v); VehicleRoutingProblem vrp = builder.build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle veh1 = getVehicle("v1", readVrp); Assert.assertEquals(3, veh1.getSkills().values().size()); @@ -383,11 +340,7 @@ public class VrpXMLWriterTest { builder.addVehicle(v); VehicleRoutingProblem vrp = builder.build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle veh1 = getVehicle("v1", readVrp); assertTrue(veh1.getSkills().containsSkill("skill5")); @@ -402,11 +355,7 @@ public class VrpXMLWriterTest { builder.addVehicle(v); VehicleRoutingProblem vrp = builder.build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle veh1 = getVehicle("v1", readVrp); assertTrue(veh1.getSkills().containsSkill("skill1")); @@ -421,11 +370,7 @@ public class VrpXMLWriterTest { builder.addVehicle(v); VehicleRoutingProblem vrp = builder.build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle veh1 = getVehicle("v1", readVrp); assertTrue(veh1.getSkills().containsSkill("skill2")); @@ -439,11 +384,7 @@ public class VrpXMLWriterTest { builder.addVehicle(v); VehicleRoutingProblem vrp = builder.build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle veh = getVehicle("v1", readVrp); Assert.assertEquals(0, veh.getSkills().values().size()); @@ -468,11 +409,7 @@ public class VrpXMLWriterTest { .setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).setPickupServiceTime(100).setDeliveryServiceTime(50).build(); VehicleRoutingProblem vrp = builder.addJob(s).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Assert.assertEquals(3, readVrp.getJobs().get("1").getRequiredSkills().values().size()); } @@ -489,11 +426,7 @@ public class VrpXMLWriterTest { .setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).setPickupServiceTime(100).setDeliveryServiceTime(50).build(); VehicleRoutingProblem vrp = builder.addJob(s).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill1")); } @@ -510,11 +443,7 @@ public class VrpXMLWriterTest { .setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).setPickupServiceTime(100).setDeliveryServiceTime(50).build(); VehicleRoutingProblem vrp = builder.addJob(s).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill2")); } @@ -531,11 +460,7 @@ public class VrpXMLWriterTest { .setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).setPickupServiceTime(100).setDeliveryServiceTime(50).build(); VehicleRoutingProblem vrp = builder.addJob(s).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill3")); } @@ -564,11 +489,7 @@ public class VrpXMLWriterTest { VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); assertEquals(2, readVrp.getJobs().size()); Assert.assertEquals(1.0, ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getCoordinate().getX(), 0.01); @@ -597,11 +518,7 @@ public class VrpXMLWriterTest { .setDeliveryTimeWindow(TimeWindow.newInstance(7, 8)).build(); VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Assert.assertEquals(3, (readVrp.getJobs().get("1")).getSize().getNuOfDimensions()); Assert.assertEquals(10, (readVrp.getJobs().get("1")).getSize().get(0)); @@ -628,11 +545,7 @@ public class VrpXMLWriterTest { Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle v = getVehicle("v1", readVrp.getVehicles()); Assert.assertEquals("loc", v.getStartLocation().getId()); @@ -641,56 +554,23 @@ public class VrpXMLWriterTest { } @Test - public void whenWritingService_itShouldHaveTheCorrectNuSkills() { + public void whenWritingService_itShouldContain_bothSkills() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - Service s = Service.Builder.newInstance("1").addRequiredSkill("sKill1").addRequiredSkill("skill2").addSizeDimension(0, 1) - .setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); + //skill names are case-insensitive + Service s = Service.Builder.newInstance("1").addRequiredSkill("skill1").addRequiredSkill("SKILL2").addSizeDimension(0, 1) + .setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); VehicleRoutingProblem vrp = builder.addJob(s).build(); - new VrpXMLWriter(vrp, null).write(infileName); - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); - - Assert.assertEquals(2, readVrp.getJobs().get("1").getRequiredSkills().values().size()); - } - - @Test - public void whenWritingService_itShouldContain_skill1() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - Service s = Service.Builder.newInstance("1").addRequiredSkill("sKill1").addRequiredSkill("skill2").addSizeDimension(0, 1) - .setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); - - VehicleRoutingProblem vrp = builder.addJob(s).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); + assertEquals(2, readVrp.getJobs().get("1").getRequiredSkills().values().size()); assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill1")); - } - - @Test - public void whenWritingService_itShouldContain_skill2() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - Service s = Service.Builder.newInstance("1").addRequiredSkill("sKill1").addRequiredSkill("skill2").addSizeDimension(0, 1) - .setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); - - VehicleRoutingProblem vrp = builder.addJob(s).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); - assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill2")); } + @Test public void whenWritingVehicleV1_itDoesNotReturnToDepotMustBeWrittenCorrectly() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); @@ -708,11 +588,7 @@ public class VrpXMLWriterTest { Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle v = getVehicle("v1", readVrp.getVehicles()); assertFalse(v.isReturnToDepot()); @@ -734,11 +610,7 @@ public class VrpXMLWriterTest { Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle v = getVehicle("v1", readVrp.getVehicles()); assertEquals("vehType", v.getType().getTypeId()); @@ -760,11 +632,7 @@ public class VrpXMLWriterTest { Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle v = getVehicle("v2", readVrp.getVehicles()); assertEquals("vehType2", v.getType().getTypeId()); @@ -780,11 +648,7 @@ public class VrpXMLWriterTest { Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle v = getVehicle("v2", readVrp.getVehicles()); Assert.assertEquals("startLoc", v.getStartLocation().getId()); @@ -799,11 +663,7 @@ public class VrpXMLWriterTest { Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle v = getVehicle("v2", readVrp.getVehicles()); Assert.assertEquals(1.0, v.getStartLocation().getCoordinate().getX(), 0.01); @@ -845,11 +705,7 @@ public class VrpXMLWriterTest { builder.addVehicle(v2); VehicleRoutingProblem vrp = builder.build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle v = getVehicle("v", readVrp.getVehicles()); Assert.assertEquals(3, v.getType().getCapacityDimensions().getNuOfDimensions()); @@ -874,11 +730,7 @@ public class VrpXMLWriterTest { builder.addVehicle(v2); VehicleRoutingProblem vrp = builder.build(); - new VrpXMLWriter(vrp, null).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - new VrpXMLReader(vrpToReadBuilder, null).read(infileName); - VehicleRoutingProblem readVrp = vrpToReadBuilder.build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle v = getVehicle("v", readVrp.getVehicles()); Assert.assertEquals(11, v.getType().getCapacityDimensions().getNuOfDimensions()); @@ -911,11 +763,7 @@ public class VrpXMLWriterTest { List solutions = new ArrayList(); solutions.add(solution); - new VrpXMLWriter(vrp, solutions).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - List solutionsToRead = new ArrayList(); - new VrpXMLReader(vrpToReadBuilder, solutionsToRead).read(infileName); + List solutionsToRead = writeAndRereadXmlWithSolutions(vrp, solutions); assertEquals(1, solutionsToRead.size()); Assert.assertEquals(10., Solutions.bestOf(solutionsToRead).getCost(), 0.01); @@ -943,11 +791,7 @@ public class VrpXMLWriterTest { List solutions = new ArrayList(); solutions.add(solution); - new VrpXMLWriter(vrp, solutions).write(infileName); - - VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); - List solutionsToRead = new ArrayList(); - new VrpXMLReader(vrpToReadBuilder, solutionsToRead).read(infileName); + List solutionsToRead = writeAndRereadXmlWithSolutions(vrp, solutions); assertEquals(1, solutionsToRead.size()); Assert.assertEquals(10., Solutions.bestOf(solutionsToRead).getCost(), 0.01); @@ -955,4 +799,21 @@ public class VrpXMLWriterTest { Assert.assertEquals("2", Solutions.bestOf(solutionsToRead).getUnassignedJobs().iterator().next().getId()); } + private VehicleRoutingProblem writeAndRereadXml(VehicleRoutingProblem vrp) { + new VrpXMLWriter(vrp, null).write(infileName); + + VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); + new VrpXMLReader(vrpToReadBuilder, null).read(infileName); + return vrpToReadBuilder.build(); + } + + private List writeAndRereadXmlWithSolutions(VehicleRoutingProblem vrp, List solutions) { + new VrpXMLWriter(vrp, solutions).write(infileName); + + VehicleRoutingProblem.Builder vrpToReadBuilder = VehicleRoutingProblem.Builder.newInstance(); + List solutionsToRead = new ArrayList(); + new VrpXMLReader(vrpToReadBuilder, solutionsToRead).read(infileName); + return solutionsToRead; + } + } From 69aee1660acadc666dce0954311d30df4727a5d4 Mon Sep 17 00:00:00 2001 From: Heinrich Filter Date: Wed, 28 Jun 2017 00:14:53 +0200 Subject: [PATCH 3/8] Make static Assert accessors uniform --- .../jsprit/io/problem/VrpXMLWriterTest.java | 86 +++++++++---------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java index ae48e513..e0f83644 100644 --- a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java +++ b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java @@ -157,9 +157,9 @@ public class VrpXMLWriterTest { Service s1_read = (Service) vrp.getJobs().get("1"); - Assert.assertEquals(2, s1_read.getSize().getNuOfDimensions()); - Assert.assertEquals(20, s1_read.getSize().get(0)); - Assert.assertEquals(200, s1_read.getSize().get(1)); + assertEquals(2, s1_read.getSize().getNuOfDimensions()); + assertEquals(20, s1_read.getSize().get(0)); + assertEquals(200, s1_read.getSize().get(1)); } @@ -189,8 +189,8 @@ public class VrpXMLWriterTest { VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); assertEquals(2, readVrp.getJobs().size()); - Assert.assertEquals("pickLoc", ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getId()); - Assert.assertEquals("delLoc", ((Shipment) readVrp.getJobs().get("1")).getDeliveryLocation().getId()); + assertEquals("pickLoc", ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getId()); + assertEquals("delLoc", ((Shipment) readVrp.getJobs().get("1")).getDeliveryLocation().getId()); } @@ -220,8 +220,8 @@ public class VrpXMLWriterTest { VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); assertEquals(2, readVrp.getJobs().size()); - Assert.assertEquals(1.0, ((Shipment) readVrp.getJobs().get("1")).getPickupTimeWindow().getStart(), 0.01); - Assert.assertEquals(2.0, ((Shipment) readVrp.getJobs().get("1")).getPickupTimeWindow().getEnd(), 0.01); + assertEquals(1.0, ((Shipment) readVrp.getJobs().get("1")).getPickupTimeWindow().getStart(), 0.01); + assertEquals(2.0, ((Shipment) readVrp.getJobs().get("1")).getPickupTimeWindow().getEnd(), 0.01); } @@ -252,8 +252,8 @@ public class VrpXMLWriterTest { VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); assertEquals(2, readVrp.getJobs().size()); - Assert.assertEquals(3.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryTimeWindow().getStart(), 0.01); - Assert.assertEquals(4.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryTimeWindow().getEnd(), 0.01); + assertEquals(3.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryTimeWindow().getStart(), 0.01); + assertEquals(4.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryTimeWindow().getEnd(), 0.01); } @@ -313,7 +313,7 @@ public class VrpXMLWriterTest { VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); assertEquals(2, readVrp.getJobs().size()); - Assert.assertEquals("[x=1.0][y=2.0]", ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getId()); + assertEquals("[x=1.0][y=2.0]", ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getId()); } @Test @@ -328,7 +328,7 @@ public class VrpXMLWriterTest { VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle veh1 = getVehicle("v1", readVrp); - Assert.assertEquals(3, veh1.getSkills().values().size()); + assertEquals(3, veh1.getSkills().values().size()); } @Test @@ -387,7 +387,7 @@ public class VrpXMLWriterTest { VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle veh = getVehicle("v1", readVrp); - Assert.assertEquals(0, veh.getSkills().values().size()); + assertEquals(0, veh.getSkills().values().size()); } private Vehicle getVehicle(String v1, VehicleRoutingProblem readVrp) { @@ -411,7 +411,7 @@ public class VrpXMLWriterTest { VehicleRoutingProblem vrp = builder.addJob(s).build(); VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - Assert.assertEquals(3, readVrp.getJobs().get("1").getRequiredSkills().values().size()); + assertEquals(3, readVrp.getJobs().get("1").getRequiredSkills().values().size()); } @Test @@ -492,11 +492,11 @@ public class VrpXMLWriterTest { VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); assertEquals(2, readVrp.getJobs().size()); - Assert.assertEquals(1.0, ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getCoordinate().getX(), 0.01); - Assert.assertEquals(2.0, ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getCoordinate().getY(), 0.01); + assertEquals(1.0, ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getCoordinate().getX(), 0.01); + assertEquals(2.0, ((Shipment) readVrp.getJobs().get("1")).getPickupLocation().getCoordinate().getY(), 0.01); - Assert.assertEquals(5.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryLocation().getCoordinate().getX(), 0.01); - Assert.assertEquals(6.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryLocation().getCoordinate().getY(), 0.01); + assertEquals(5.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryLocation().getCoordinate().getX(), 0.01); + assertEquals(6.0, ((Shipment) readVrp.getJobs().get("1")).getDeliveryLocation().getCoordinate().getY(), 0.01); } @Test @@ -520,13 +520,13 @@ public class VrpXMLWriterTest { VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - Assert.assertEquals(3, (readVrp.getJobs().get("1")).getSize().getNuOfDimensions()); - Assert.assertEquals(10, (readVrp.getJobs().get("1")).getSize().get(0)); - Assert.assertEquals(0, (readVrp.getJobs().get("1")).getSize().get(1)); - Assert.assertEquals(100, (readVrp.getJobs().get("1")).getSize().get(2)); + assertEquals(3, (readVrp.getJobs().get("1")).getSize().getNuOfDimensions()); + assertEquals(10, (readVrp.getJobs().get("1")).getSize().get(0)); + assertEquals(0, (readVrp.getJobs().get("1")).getSize().get(1)); + assertEquals(100, (readVrp.getJobs().get("1")).getSize().get(2)); - Assert.assertEquals(1, (readVrp.getJobs().get("2")).getSize().getNuOfDimensions()); - Assert.assertEquals(20, (readVrp.getJobs().get("2")).getSize().get(0)); + assertEquals(1, (readVrp.getJobs().get("2")).getSize().getNuOfDimensions()); + assertEquals(20, (readVrp.getJobs().get("2")).getSize().get(0)); } @Test @@ -548,8 +548,8 @@ public class VrpXMLWriterTest { VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle v = getVehicle("v1", readVrp.getVehicles()); - Assert.assertEquals("loc", v.getStartLocation().getId()); - Assert.assertEquals("loc", v.getEndLocation().getId()); + assertEquals("loc", v.getStartLocation().getId()); + assertEquals("loc", v.getEndLocation().getId()); } @@ -636,7 +636,7 @@ public class VrpXMLWriterTest { Vehicle v = getVehicle("v2", readVrp.getVehicles()); assertEquals("vehType2", v.getType().getTypeId()); - Assert.assertEquals(200, v.getType().getCapacityDimensions().get(0)); + assertEquals(200, v.getType().getCapacityDimensions().get(0)); } @@ -651,8 +651,8 @@ public class VrpXMLWriterTest { VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle v = getVehicle("v2", readVrp.getVehicles()); - Assert.assertEquals("startLoc", v.getStartLocation().getId()); - Assert.assertEquals("endLoc", v.getEndLocation().getId()); + assertEquals("startLoc", v.getStartLocation().getId()); + assertEquals("endLoc", v.getEndLocation().getId()); } @Test @@ -666,11 +666,11 @@ public class VrpXMLWriterTest { VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle v = getVehicle("v2", readVrp.getVehicles()); - Assert.assertEquals(1.0, v.getStartLocation().getCoordinate().getX(), 0.01); - Assert.assertEquals(2.0, v.getStartLocation().getCoordinate().getY(), 0.01); + assertEquals(1.0, v.getStartLocation().getCoordinate().getX(), 0.01); + assertEquals(2.0, v.getStartLocation().getCoordinate().getY(), 0.01); - Assert.assertEquals(4.0, v.getEndLocation().getCoordinate().getX(), 0.01); - Assert.assertEquals(5.0, v.getEndLocation().getCoordinate().getY(), 0.01); + assertEquals(4.0, v.getEndLocation().getCoordinate().getX(), 0.01); + assertEquals(5.0, v.getEndLocation().getCoordinate().getY(), 0.01); } private VehicleRoutingProblem.Builder createTwoVehicleTypeAndInstancesBuilder() { @@ -708,10 +708,10 @@ public class VrpXMLWriterTest { VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle v = getVehicle("v", readVrp.getVehicles()); - Assert.assertEquals(3, v.getType().getCapacityDimensions().getNuOfDimensions()); - Assert.assertEquals(100, v.getType().getCapacityDimensions().get(0)); - Assert.assertEquals(1000, v.getType().getCapacityDimensions().get(1)); - Assert.assertEquals(10000, v.getType().getCapacityDimensions().get(2)); + assertEquals(3, v.getType().getCapacityDimensions().getNuOfDimensions()); + assertEquals(100, v.getType().getCapacityDimensions().get(0)); + assertEquals(1000, v.getType().getCapacityDimensions().get(1)); + assertEquals(10000, v.getType().getCapacityDimensions().get(2)); } @Test @@ -733,9 +733,9 @@ public class VrpXMLWriterTest { VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); Vehicle v = getVehicle("v", readVrp.getVehicles()); - Assert.assertEquals(11, v.getType().getCapacityDimensions().getNuOfDimensions()); - Assert.assertEquals(0, v.getType().getCapacityDimensions().get(9)); - Assert.assertEquals(10000, v.getType().getCapacityDimensions().get(10)); + assertEquals(11, v.getType().getCapacityDimensions().getNuOfDimensions()); + assertEquals(0, v.getType().getCapacityDimensions().get(9)); + assertEquals(10000, v.getType().getCapacityDimensions().get(10)); } private Vehicle getVehicle(String string, Collection vehicles) { @@ -766,7 +766,7 @@ public class VrpXMLWriterTest { List solutionsToRead = writeAndRereadXmlWithSolutions(vrp, solutions); assertEquals(1, solutionsToRead.size()); - Assert.assertEquals(10., Solutions.bestOf(solutionsToRead).getCost(), 0.01); + assertEquals(10., Solutions.bestOf(solutionsToRead).getCost(), 0.01); assertTrue(Solutions.bestOf(solutionsToRead).getUnassignedJobs().isEmpty()); } @@ -794,9 +794,9 @@ public class VrpXMLWriterTest { List solutionsToRead = writeAndRereadXmlWithSolutions(vrp, solutions); assertEquals(1, solutionsToRead.size()); - Assert.assertEquals(10., Solutions.bestOf(solutionsToRead).getCost(), 0.01); - Assert.assertEquals(1, Solutions.bestOf(solutionsToRead).getUnassignedJobs().size()); - Assert.assertEquals("2", Solutions.bestOf(solutionsToRead).getUnassignedJobs().iterator().next().getId()); + assertEquals(10., Solutions.bestOf(solutionsToRead).getCost(), 0.01); + assertEquals(1, Solutions.bestOf(solutionsToRead).getUnassignedJobs().size()); + assertEquals("2", Solutions.bestOf(solutionsToRead).getUnassignedJobs().iterator().next().getId()); } private VehicleRoutingProblem writeAndRereadXml(VehicleRoutingProblem vrp) { From 06afdb6e15243142d709abefbc54af55f114a338 Mon Sep 17 00:00:00 2001 From: Heinrich Filter Date: Tue, 27 Jun 2017 23:11:13 +0200 Subject: [PATCH 4/8] Combine test for writing and then reading finite Vrp --- .../jsprit/io/problem/VrpXMLWriterTest.java | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java index e0f83644..140b1daa 100644 --- a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java +++ b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java @@ -61,21 +61,7 @@ public class VrpXMLWriterTest { } @Test - public void whenWritingFiniteVrp_itWritesCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - builder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE); - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build(); - builder.addVehicle(v1); - builder.addVehicle(v2); - VehicleRoutingProblem vrp = builder.build(); - new VrpXMLWriter(vrp, null).write(infileName); - } - - @Test - public void t() { + public void whenWritingFiniteVrp_itWritesAndReadsCorrectly() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); builder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE); VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); @@ -90,6 +76,7 @@ public class VrpXMLWriterTest { } + @Test public void whenWritingServices_itWritesThemCorrectly() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); From b5b4b67400dfdbb60bab82391a95a7d86e7f99d0 Mon Sep 17 00:00:00 2001 From: Heinrich Filter Date: Wed, 28 Jun 2017 00:37:25 +0200 Subject: [PATCH 5/8] Extract method to create common builder for 2 Vechicle type and impls --- .../jsprit/io/problem/VrpXMLWriterTest.java | 149 +++++------------- 1 file changed, 37 insertions(+), 112 deletions(-) diff --git a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java index 140b1daa..a9b9d4f4 100644 --- a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java +++ b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java @@ -62,31 +62,17 @@ public class VrpXMLWriterTest { @Test public void whenWritingFiniteVrp_itWritesAndReadsCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); + VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); builder.setFleetSize(VehicleRoutingProblem.FleetSize.FINITE); - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build(); - builder.addVehicle(v1); - builder.addVehicle(v2); VehicleRoutingProblem vrp = builder.build(); writeAndRereadXml(vrp); - } @Test public void whenWritingServices_itWritesThemCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build(); - builder.addVehicle(v1); - builder.addVehicle(v2); - + VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); @@ -152,15 +138,7 @@ public class VrpXMLWriterTest { @Test public void whenWritingShipments_readingThemAgainMustReturnTheWrittenLocationIdsOfS1() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build(); - - builder.addVehicle(v1); - builder.addVehicle(v2); + VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10) .setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()) @@ -183,15 +161,7 @@ public class VrpXMLWriterTest { @Test public void whenWritingShipments_readingThemAgainMustReturnTheWrittenPickupTimeWindowsOfS1() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build(); - - builder.addVehicle(v1); - builder.addVehicle(v2); + VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10) .setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()) @@ -215,15 +185,7 @@ public class VrpXMLWriterTest { @Test public void whenWritingShipments_readingThemAgainMustReturnTheWrittenDeliveryTimeWindowsOfS1() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build(); - - builder.addVehicle(v1); - builder.addVehicle(v2); + VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10) .setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()) @@ -246,15 +208,7 @@ public class VrpXMLWriterTest { @Test public void whenWritingShipments_readingThemAgainMustReturnTheWrittenDeliveryServiceTimeOfS1() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build(); - - builder.addVehicle(v1); - builder.addVehicle(v2); + VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10) .setPickupLocation(Location.Builder.newInstance().setId("pickLoc").build()) @@ -277,15 +231,7 @@ public class VrpXMLWriterTest { @Test public void whenWritingShipments_readingThemAgainMustReturnTheWrittenLocationIdOfS1() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build(); - - builder.addVehicle(v1); - builder.addVehicle(v2); + VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10) .setPickupLocation(TestUtils.loc(Coordinate.newInstance(1, 2))).setDeliveryLocation(TestUtils.loc("delLoc")).setPickupTimeWindow(TimeWindow.newInstance(1, 2)) @@ -454,15 +400,7 @@ public class VrpXMLWriterTest { @Test public void whenWritingShipments_readingThemAgainMustReturnTheWrittenLocationCoordinateOfS1() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build(); - - builder.addVehicle(v1); - builder.addVehicle(v2); + VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); Shipment s1 = Shipment.Builder.newInstance("1").addSizeDimension(0, 10).setPickupLocation(TestUtils.loc(Coordinate.newInstance(1, 2))) .setDeliveryLocation(TestUtils.loc("delLoc", Coordinate.newInstance(5, 6))) @@ -518,15 +456,7 @@ public class VrpXMLWriterTest { @Test public void whenWritingVehicleV1_itsStartLocationMustBeWrittenCorrectly() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); - VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build(); - - builder.addVehicle(v1); - builder.addVehicle(v2); + VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); @@ -540,6 +470,19 @@ public class VrpXMLWriterTest { } + private VehicleRoutingProblem.Builder twoVehicleTypesAndImpls() { + VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); + + VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); + VehicleTypeImpl type2 = VehicleTypeImpl.Builder.newInstance("vehType2").addCapacityDimension(0, 200).build(); + VehicleImpl v1 = VehicleImpl.Builder.newInstance("v1").setStartLocation(TestUtils.loc("loc")).setType(type1).build(); + VehicleImpl v2 = VehicleImpl.Builder.newInstance("v2").setStartLocation(TestUtils.loc("loc")).setType(type2).build(); + + builder.addVehicle(v1); + builder.addVehicle(v2); + return builder; + } + @Test public void whenWritingService_itShouldContain_bothSkills() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); @@ -629,38 +572,6 @@ public class VrpXMLWriterTest { @Test public void whenWritingVehicleV2_readingItsLocationsAgainReturnsCorrectLocations() { - VehicleRoutingProblem.Builder builder = createTwoVehicleTypeAndInstancesBuilder(); - - Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); - Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); - - VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - - Vehicle v = getVehicle("v2", readVrp.getVehicles()); - assertEquals("startLoc", v.getStartLocation().getId()); - assertEquals("endLoc", v.getEndLocation().getId()); - } - - @Test - public void whenWritingVehicleV2_readingItsLocationsCoordsAgainReturnsCorrectLocationsCoords() { - VehicleRoutingProblem.Builder builder = createTwoVehicleTypeAndInstancesBuilder(); - - Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); - Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); - - VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - - Vehicle v = getVehicle("v2", readVrp.getVehicles()); - assertEquals(1.0, v.getStartLocation().getCoordinate().getX(), 0.01); - assertEquals(2.0, v.getStartLocation().getCoordinate().getY(), 0.01); - - assertEquals(4.0, v.getEndLocation().getCoordinate().getX(), 0.01); - assertEquals(5.0, v.getEndLocation().getCoordinate().getY(), 0.01); - } - - private VehicleRoutingProblem.Builder createTwoVehicleTypeAndInstancesBuilder() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); @@ -673,9 +584,23 @@ public class VrpXMLWriterTest { builder.addVehicle(v1); builder.addVehicle(v2); - return builder; + + Service s1 = Service.Builder.newInstance("1").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc")).setServiceTime(2.0).build(); + Service s2 = Service.Builder.newInstance("2").addSizeDimension(0, 1).setLocation(TestUtils.loc("loc2")).setServiceTime(4.0).build(); + + VehicleRoutingProblem vrp = builder.addJob(s1).addJob(s2).build(); + VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); + + Vehicle v = getVehicle("v2", readVrp.getVehicles()); + assertEquals("startLoc", v.getStartLocation().getId()); + assertEquals("endLoc", v.getEndLocation().getId()); + assertEquals(1.0, v.getStartLocation().getCoordinate().getX(), 0.01); + assertEquals(2.0, v.getStartLocation().getCoordinate().getY(), 0.01); + assertEquals(4.0, v.getEndLocation().getCoordinate().getX(), 0.01); + assertEquals(5.0, v.getEndLocation().getCoordinate().getY(), 0.01); } + @Test public void whenWritingVehicleWithSeveralCapacityDimensions_itShouldBeWrittenAndRereadCorrectly() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); From 4f0936526799e661c7dff5b5bbef91302adc6ee0 Mon Sep 17 00:00:00 2001 From: Heinrich Filter Date: Wed, 28 Jun 2017 00:40:03 +0200 Subject: [PATCH 6/8] Consolidate skills assertions for shipments into one test --- .../jsprit/io/problem/VrpXMLWriterTest.java | 48 ------------------- 1 file changed, 48 deletions(-) diff --git a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java index a9b9d4f4..ec4d7a2c 100644 --- a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java +++ b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java @@ -345,56 +345,8 @@ public class VrpXMLWriterTest { VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); assertEquals(3, readVrp.getJobs().get("1").getRequiredSkills().values().size()); - } - - @Test - public void whenWritingShipments_shipmentShouldContain_skill1() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - Shipment s = Shipment.Builder.newInstance("1").addRequiredSkill("skill1").addRequiredSkill("skill2").addRequiredSkill("skill3") - .addSizeDimension(0, 10) - .setPickupLocation(TestUtils.loc(Coordinate.newInstance(1, 2))) - .setDeliveryLocation(TestUtils.loc("delLoc", Coordinate.newInstance(5, 6))) - .setPickupTimeWindow(TimeWindow.newInstance(1, 2)) - .setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).setPickupServiceTime(100).setDeliveryServiceTime(50).build(); - - VehicleRoutingProblem vrp = builder.addJob(s).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill1")); - } - - @Test - public void whenWritingShipments_shipmentShouldContain_skill2() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - Shipment s = Shipment.Builder.newInstance("1").addRequiredSkill("skill1").addRequiredSkill("Skill2").addRequiredSkill("skill3") - .addSizeDimension(0, 10) - .setPickupLocation(TestUtils.loc(Coordinate.newInstance(1, 2))) - .setDeliveryLocation(TestUtils.loc("delLoc", Coordinate.newInstance(5, 6))) - .setPickupTimeWindow(TimeWindow.newInstance(1, 2)) - .setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).setPickupServiceTime(100).setDeliveryServiceTime(50).build(); - - VehicleRoutingProblem vrp = builder.addJob(s).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill2")); - } - - @Test - public void whenWritingShipments_shipmentShouldContain_skill3() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - - Shipment s = Shipment.Builder.newInstance("1").addRequiredSkill("skill1").addRequiredSkill("Skill2").addRequiredSkill("skill3") - .addSizeDimension(0, 10) - .setPickupLocation(TestUtils.loc(Coordinate.newInstance(1, 2))) - .setDeliveryLocation(TestUtils.loc("delLoc", Coordinate.newInstance(5, 6))) - .setPickupTimeWindow(TimeWindow.newInstance(1, 2)) - .setDeliveryTimeWindow(TimeWindow.newInstance(3, 4)).setPickupServiceTime(100).setDeliveryServiceTime(50).build(); - - VehicleRoutingProblem vrp = builder.addJob(s).build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - assertTrue(readVrp.getJobs().get("1").getRequiredSkills().containsSkill("skill3")); } From bf40087b222decb95073722ccc2e6cf0f01d673e Mon Sep 17 00:00:00 2001 From: Heinrich Filter Date: Wed, 28 Jun 2017 00:43:19 +0200 Subject: [PATCH 7/8] Consolidate skills assertions for vehicles into one test --- .../jsprit/io/problem/VrpXMLWriterTest.java | 44 +------------------ 1 file changed, 1 insertion(+), 43 deletions(-) diff --git a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java index ec4d7a2c..5783f398 100644 --- a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java +++ b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java @@ -250,7 +250,7 @@ public class VrpXMLWriterTest { } @Test - public void whenWritingVehicles_vehShouldHave2Skills() { + public void whenWritingVehicles_vehShouldHave3Skills() { VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); VehicleImpl v = VehicleImpl.Builder.newInstance("v1").addSkill("SKILL5").addSkill("skill1").addSkill("Skill2") @@ -262,50 +262,8 @@ public class VrpXMLWriterTest { Vehicle veh1 = getVehicle("v1", readVrp); assertEquals(3, veh1.getSkills().values().size()); - } - - @Test - public void whenWritingVehicles_vehShouldContain_skill5() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v1").addSkill("SKILL5").addSkill("skill1").addSkill("Skill2") - .setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - builder.addVehicle(v); - - VehicleRoutingProblem vrp = builder.build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - Vehicle veh1 = getVehicle("v1", readVrp); - assertTrue(veh1.getSkills().containsSkill("skill5")); - } - - @Test - public void whenWritingVehicles_vehShouldContain_skill1() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v1").addSkill("SKILL5").addSkill("skill1").addSkill("Skill2") - .setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - builder.addVehicle(v); - - VehicleRoutingProblem vrp = builder.build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - Vehicle veh1 = getVehicle("v1", readVrp); - assertTrue(veh1.getSkills().containsSkill("skill1")); - } - - @Test - public void whenWritingVehicles_vehShouldContain_skill2() { - VehicleRoutingProblem.Builder builder = VehicleRoutingProblem.Builder.newInstance(); - VehicleTypeImpl type1 = VehicleTypeImpl.Builder.newInstance("vehType").addCapacityDimension(0, 20).build(); - VehicleImpl v = VehicleImpl.Builder.newInstance("v1").addSkill("SKILL5").addSkill("skill1").addSkill("Skill2") - .setStartLocation(TestUtils.loc("loc")).setType(type1).build(); - builder.addVehicle(v); - - VehicleRoutingProblem vrp = builder.build(); - VehicleRoutingProblem readVrp = writeAndRereadXml(vrp); - Vehicle veh1 = getVehicle("v1", readVrp); - assertTrue(veh1.getSkills().containsSkill("skill2")); } From bab1f7d6a84c5cc45cfe165a732ec24420d0ad2b Mon Sep 17 00:00:00 2001 From: Heinrich Filter Date: Tue, 27 Jun 2017 23:12:32 +0200 Subject: [PATCH 8/8] Add VrpXMLWrite method that returns OutputStream Add test to check that two outputs are the same --- .../jsprit/io/problem/VrpXMLWriter.java | 55 +++++++++++++------ .../jsprit/io/problem/VrpXMLWriterTest.java | 17 ++++++ 2 files changed, 54 insertions(+), 18 deletions(-) diff --git a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/problem/VrpXMLWriter.java b/jsprit-io/src/main/java/com/graphhopper/jsprit/io/problem/VrpXMLWriter.java index 024d4958..57ba77f2 100644 --- a/jsprit-io/src/main/java/com/graphhopper/jsprit/io/problem/VrpXMLWriter.java +++ b/jsprit-io/src/main/java/com/graphhopper/jsprit/io/problem/VrpXMLWriter.java @@ -41,9 +41,7 @@ import org.slf4j.LoggerFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; -import java.io.FileWriter; -import java.io.IOException; -import java.io.Writer; +import java.io.*; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -94,8 +92,36 @@ public class VrpXMLWriter { public void write(String filename) { if (!filename.endsWith(".xml")) filename += ".xml"; log.info("write vrp: " + filename); + XMLConf xmlConfig = createXMLConfiguration(); + + try { + xmlConfig.setFileName(filename); + Writer out = new FileWriter(filename); + XMLSerializer serializer = new XMLSerializer(out, createOutputFormat()); + serializer.serialize(xmlConfig.getDocument()); + out.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + public OutputStream write() { + XMLConf xmlConfig = createXMLConfiguration(); + OutputStream out = new ByteArrayOutputStream(); + + try { + XMLSerializer serializer = new XMLSerializer(out, createOutputFormat()); + serializer.serialize(xmlConfig.getDocument()); + out.close(); + } catch (IOException e) { + throw new RuntimeException(e); + } + + return out; + } + + private XMLConf createXMLConfiguration() { XMLConf xmlConfig = new XMLConf(); - xmlConfig.setFileName(filename); xmlConfig.setRootElementName("problem"); xmlConfig.setAttributeSplittingDisabled(true); xmlConfig.setDelimiterParsingDisabled(true); @@ -123,10 +149,6 @@ public class VrpXMLWriter { writeSolutions(xmlConfig); - OutputFormat format = new OutputFormat(); - format.setIndenting(true); - format.setIndent(5); - try { Document document = xmlConfig.createDoc(); @@ -138,17 +160,14 @@ public class VrpXMLWriter { } catch (ConfigurationException e) { throw new RuntimeException(e); } + return xmlConfig; + } - try { - Writer out = new FileWriter(filename); - XMLSerializer serializer = new XMLSerializer(out, format); - serializer.serialize(xmlConfig.getDocument()); - out.close(); - } catch (IOException e) { - throw new RuntimeException(e); - } - - + private OutputFormat createOutputFormat() { + OutputFormat format = new OutputFormat(); + format.setIndenting(true); + format.setIndent(5); + return format; } private void writeInitialRoutes(XMLConf xmlConfig) { diff --git a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java index 5783f398..54ea122f 100644 --- a/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java +++ b/jsprit-io/src/test/java/com/graphhopper/jsprit/io/problem/VrpXMLWriterTest.java @@ -34,6 +34,10 @@ import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import java.io.IOException; +import java.io.OutputStream; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -621,6 +625,19 @@ public class VrpXMLWriterTest { assertEquals("2", Solutions.bestOf(solutionsToRead).getUnassignedJobs().iterator().next().getId()); } + @Test + public void outputStreamAndFileContentsAreEqual() throws IOException { + VehicleRoutingProblem.Builder builder = twoVehicleTypesAndImpls(); + VehicleRoutingProblem vrp = builder.build(); + + new VrpXMLWriter(vrp, null).write(infileName); + String outputStringFromFile = new String(Files.readAllBytes(Paths.get(infileName))); + String outputStringFromStream = new VrpXMLWriter(vrp, null).write().toString(); + + assertEquals(outputStringFromFile, outputStringFromStream); + + } + private VehicleRoutingProblem writeAndRereadXml(VehicleRoutingProblem vrp) { new VrpXMLWriter(vrp, null).write(infileName);