From f73c6a1d9c32fd587d66e58b75b17341fbc52c62 Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Fri, 24 Jul 2009 13:45:00 +0200 Subject: [PATCH] ItEr18S14CUAsignacionRecursosEspecificosAPlanificacion: Added a new method "buildAnd" to CriterionCompounder that receives a List of ICriterion. Javier Moran Rua : The commit has been ammended to include a missing static import in CriterionTest. --- .../entities/CriterionCompounder.java | 8 ++++ .../resources/entities/CriterionTest.java | 43 ++++++++++++++++++- 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/CriterionCompounder.java b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/CriterionCompounder.java index 83e22b4a9..84f30ddec 100644 --- a/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/CriterionCompounder.java +++ b/navalplanner-business/src/main/java/org/navalplanner/business/resources/entities/CriterionCompounder.java @@ -17,6 +17,14 @@ public class CriterionCompounder { return new CriterionCompounder(); } + public static CriterionCompounder buildAnd(List criterions) { + CriterionCompounder compounder = new CriterionCompounder(); + for (ICriterion criterion : criterions) { + compounder = compounder.and(criterion); + } + return compounder; + } + public static CriterionCompounder atom(ICriterion criterion) { return build().and(criterion); } diff --git a/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/entities/CriterionTest.java b/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/entities/CriterionTest.java index 7a3223a75..4fdeef32b 100644 --- a/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/entities/CriterionTest.java +++ b/navalplanner-business/src/test/java/org/navalplanner/business/test/resources/entities/CriterionTest.java @@ -3,12 +3,14 @@ package org.navalplanner.business.test.resources.entities; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.navalplanner.business.resources.entities.CriterionCompounder.atom; +import static org.navalplanner.business.resources.entities.CriterionCompounder.buildAnd; import static org.navalplanner.business.resources.entities.CriterionCompounder.build; import static org.navalplanner.business.resources.entities.CriterionCompounder.not; import java.util.Arrays; import java.util.Date; import java.util.HashSet; +import java.util.List; import org.junit.Test; import org.navalplanner.business.resources.entities.Criterion; @@ -23,8 +25,8 @@ import org.navalplanner.business.resources.entities.Worker; * Created at May 12, 2009 * @author Óscar González Fernández */ -public class CriterionTest { +public class CriterionTest { @Test public void testCreateWithAType() throws Exception { Criterion firedCriterion = PredefinedCriterionTypes.WORK_RELATIONSHIP @@ -61,6 +63,45 @@ public class CriterionTest { assertFalse(compositedCriterion.isSatisfiedBy(worker2)); } + @Test + public void testWorkerSatisfySeveralCriterions() { + Worker worker1 = new Worker(); + Worker worker2 = new Worker(); + + ICriterion criterion1 = justThisResourcesCriterion(worker1); + ICriterion criterion2 = justThisResourcesCriterion(worker1); + ICriterion criterion3 = justThisResourcesCriterion(worker2); + ICriterion criterion4 = justThisResourcesCriterion(worker1, worker2); + + assertTrue(criterion1.isSatisfiedBy(worker1)); + assertFalse(criterion1.isSatisfiedBy(worker2)); + assertTrue(criterion2.isSatisfiedBy(worker1)); + assertFalse(criterion2.isSatisfiedBy(worker2)); + assertFalse(criterion3.isSatisfiedBy(worker1)); + assertTrue(criterion3.isSatisfiedBy(worker2)); + assertTrue(criterion4.isSatisfiedBy(worker1)); + assertTrue(criterion4.isSatisfiedBy(worker2)); + + List criterionList1 = Arrays.asList(criterion1, criterion2); + List criterionList2 = Arrays.asList(criterion1, criterion2, + criterion3); + List criterionList3 = Arrays.asList(criterion3, criterion4); + + ICriterion compositedCriterion1 = CriterionCompounder.buildAnd( + criterionList1).getResult(); + ICriterion compositedCriterion2 = CriterionCompounder.buildAnd( + criterionList2).getResult(); + ICriterion compositedCriterion3 = CriterionCompounder.buildAnd( + criterionList3).getResult(); + + assertTrue(compositedCriterion1.isSatisfiedBy(worker1)); + assertFalse(compositedCriterion1.isSatisfiedBy(worker2)); + assertFalse(compositedCriterion2.isSatisfiedBy(worker1)); + assertFalse(compositedCriterion2.isSatisfiedBy(worker2)); + assertFalse(compositedCriterion3.isSatisfiedBy(worker1)); + assertTrue(compositedCriterion3.isSatisfiedBy(worker2)); + } + @Test public void testEmptyMatchesAll() throws Exception { assertTrue(build().getResult().isSatisfiedBy(new Worker()));