From 8fa05f62ea08506b4f827eb2fc9b54af1af9686a Mon Sep 17 00:00:00 2001 From: Jonas Blatt <jonasblatt@uni-koblenz.de> Date: Sun, 29 Sep 2019 12:15:28 +0200 Subject: [PATCH] Add String BiCreater Combine + Tests --- .../bicreater/BiCreaterStringCombine.java | 6 +- .../utils/boundary/impl/StringBoundary.java | 8 +- .../bicreater/BiCreaterStringCombineTest.java | 77 +++++++++++++++++++ 3 files changed, 83 insertions(+), 8 deletions(-) create mode 100644 dmnverifierapi/src/test/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringCombineTest.java diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringCombine.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringCombine.java index 150bf62e..a537cd73 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringCombine.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringCombine.java @@ -35,11 +35,9 @@ public class BiCreaterStringCombine extends AbstractBoundaryBiCreater<StringBoun Set<String> values = new HashSet<>(); if (b1.matchesNoneOfValues() && b2.matchesNoneOfValues()) { values = intersection(b1.getValues(), b2.getValues()); - } - if (b1.matchesNoneOfValues()) { + } else if (b1.matchesNoneOfValues()) { values = leftInter(b1.getValues(), b2.getValues()); - } - if (b2.matchesNoneOfValues()) { + } else if (b2.matchesNoneOfValues()) { values = leftInter(b2.getValues(), b1.getValues()); } return Optional.of( diff --git a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/impl/StringBoundary.java b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/impl/StringBoundary.java index 232c476c..12d091eb 100644 --- a/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/impl/StringBoundary.java +++ b/dmnverifierapi/src/main/java/de/unikoblenz/fgbks/base/utils/boundary/impl/StringBoundary.java @@ -192,10 +192,6 @@ public class StringBoundary extends AbstractBoundary<String> { public Builder isMatchAny(boolean matchAny) { value.matchAny = matchAny; - if (matchAny) { - value.matchNoneOfValues = false; - value.values = new String[0]; - } return this; } @@ -224,6 +220,10 @@ public class StringBoundary extends AbstractBoundary<String> { @Override public StringBoundary build() { value.values = buildingValues.toArray(new String[0]); + if (value.matchAny) { + value.matchNoneOfValues = false; + value.values = new String[0]; + } value.calcHashes(); value.text = value.getParsedText(); return super.build(); diff --git a/dmnverifierapi/src/test/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringCombineTest.java b/dmnverifierapi/src/test/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringCombineTest.java new file mode 100644 index 00000000..259b9f6f --- /dev/null +++ b/dmnverifierapi/src/test/java/de/unikoblenz/fgbks/base/utils/boundary/bicreater/BiCreaterStringCombineTest.java @@ -0,0 +1,77 @@ +package de.unikoblenz.fgbks.base.utils.boundary.bicreater; + +import static de.unikoblenz.fgbks.base.utils.boundary.bicreater.BoundaryBiCreaterType.COMBINE; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import de.unikoblenz.fgbks.base.utils.boundary.impl.StringBoundary; +import io.quarkus.test.junit.QuarkusTest; +import org.junit.jupiter.api.Test; + +@QuarkusTest +class BiCreaterStringCombineTest { + + StringBoundary sb1; + StringBoundary sb2; + StringBoundary sbR; + + @Test + void testCreater() { + sb1 = StringBoundary.getBuilder().addValue("a").build(); + sb2 = StringBoundary.getBuilder().addValue("b").build(); + sbR = (StringBoundary) sb1.createBi(COMBINE, sb2).get(); + assertArrayEquals(new String[]{"a", "b"}, sbR.getValues()); + assertFalse(sbR.matchesNoneOfValues()); + assertFalse(sbR.isMatchAny()); + + sb1 = StringBoundary.getBuilder().isMatchNoneOfValues(true).addValue("a").build(); + sb2 = StringBoundary.getBuilder().addValue("b").build(); + sbR = (StringBoundary) sb1.createBi(COMBINE, sb2).get(); + assertArrayEquals(new String[]{"a"}, sbR.getValues()); + assertTrue(sbR.matchesNoneOfValues()); + assertFalse(sbR.isMatchAny()); + + sb1 = StringBoundary.getBuilder().isMatchNoneOfValues(true).addValue("a").addValue("b").build(); + sb2 = StringBoundary.getBuilder().addValue("b").build(); + sbR = (StringBoundary) sb1.createBi(COMBINE, sb2).get(); + assertArrayEquals(new String[]{"a"}, sbR.getValues()); + assertTrue(sbR.matchesNoneOfValues()); + assertFalse(sbR.isMatchAny()); + + sb1 = StringBoundary.getBuilder().addValue("b").build(); + sb2 = StringBoundary.getBuilder().isMatchNoneOfValues(true).addValue("a").addValue("b").build(); + sbR = (StringBoundary) sb1.createBi(COMBINE, sb2).get(); + assertArrayEquals(new String[]{"a"}, sbR.getValues()); + assertTrue(sbR.matchesNoneOfValues()); + assertFalse(sbR.isMatchAny()); + + sb1 = StringBoundary.getBuilder().isMatchNoneOfValues(true).addValue("a").build(); + sb2 = StringBoundary.getBuilder().isMatchNoneOfValues(true).addValue("b").build(); + sbR = (StringBoundary) sb1.createBi(COMBINE, sb2).get(); + assertArrayEquals(new String[]{}, sbR.getValues()); + assertFalse(sbR.matchesNoneOfValues()); + assertTrue(sbR.isMatchAny()); + + sb1 = StringBoundary.getBuilder().isMatchNoneOfValues(true).addValue("a").build(); + sb2 = StringBoundary.getBuilder().isMatchNoneOfValues(true).addValue("b").addValue("a").build(); + sbR = (StringBoundary) sb1.createBi(COMBINE, sb2).get(); + assertArrayEquals(new String[]{"a"}, sbR.getValues()); + assertTrue(sbR.matchesNoneOfValues()); + assertFalse(sbR.isMatchAny()); + + sb1 = StringBoundary.getBuilder().isMatchAny(true).build(); + sb2 = StringBoundary.getBuilder().isMatchNoneOfValues(true).addValue("b").addValue("a").build(); + sbR = (StringBoundary) sb1.createBi(COMBINE, sb2).get(); + assertArrayEquals(new String[]{}, sbR.getValues()); + assertFalse(sbR.matchesNoneOfValues()); + assertTrue(sbR.isMatchAny()); + + sb1 = StringBoundary.getBuilder().isMatchAny(true).build(); + sb2 = StringBoundary.getBuilder().isMatchAny(true).build(); + sbR = (StringBoundary) sb1.createBi(COMBINE, sb2).get(); + assertArrayEquals(new String[]{}, sbR.getValues()); + assertFalse(sbR.matchesNoneOfValues()); + assertTrue(sbR.isMatchAny()); + } +} -- GitLab