Skip to content
Snippets Groups Projects
Commit 7b370d7d authored by Jonas Blatt's avatar Jonas Blatt :ant:
Browse files

Add string boundary bicreater: between

parent fd29a011
No related branches found
No related tags found
No related merge requests found
package de.unikoblenz.fgbks.base.utils.boundary.bicreater;
import de.unikoblenz.fgbks.base.utils.boundary.impl.StringBoundary;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
public class BiCreaterStringBetween extends AbstractBoundaryBiCreater<StringBoundary> {
......@@ -22,6 +25,43 @@ public class BiCreaterStringBetween extends AbstractBoundaryBiCreater<StringBoun
@Override
public Optional<StringBoundary> create(StringBoundary b1, StringBoundary b2) {
return Optional.empty();
if (b1.matchesAny() || b2.matchesAny()) {
return Optional.empty();
}
if (b1.matchesNoneOfValues() && b2.matchesNoneOfValues()) {
Set<String> vals1 = new HashSet<>(Arrays.asList(b1.getValues()));
Set<String> vals2 = new HashSet<>(Arrays.asList(b2.getValues()));
Set<String> values = new HashSet<>();
for (String v1 : vals1) {
if (vals2.contains(v1)) {
values.add(v1);
}
}
if (values.size() == 0) {
return Optional.empty();
}
return Optional.of(StringBoundary.getBuilder().addValues(values).build());
}
if (b1.matchesNoneOfValues()) {
return getOneIsNoneOfValues(b1, b2);
}
if (b2.matchesNoneOfValues()) {
return getOneIsNoneOfValues(b2, b1);
}
return Optional.of(
StringBoundary.getBuilder()
.matchesNoneOfValues(true)
.addValues(b1.getValues())
.addValues(b2.getValues())
.build());
}
private Optional<StringBoundary> getOneIsNoneOfValues(StringBoundary b1, StringBoundary b2) {
Set<String> values = new HashSet<>(Arrays.asList(b1.getValues()));
values.removeAll(Arrays.asList(b2.getValues()));
if (values.size() == 0) {
return Optional.empty();
}
return Optional.of(StringBoundary.getBuilder().addValues(values).build());
}
}
package de.unikoblenz.fgbks.base.utils.boundary.bicreater;
import static de.unikoblenz.fgbks.base.utils.boundary.bicreater.BoundaryBiCreaterType.BETWEEN;
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 BiCreaterStringBetweenTest {
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(BETWEEN, sb2).get();
assertArrayEquals(new String[]{"a", "b"}, sbR.getValues());
assertTrue(sbR.matchesNoneOfValues());
assertFalse(sbR.matchesAny());
sb1 = StringBoundary.getBuilder().addValue("a").matchesNoneOfValues(true).build();
sb2 = StringBoundary.getBuilder().addValue("b").build();
sbR = (StringBoundary) sb1.createBi(BETWEEN, sb2).get();
assertArrayEquals(new String[]{"a"}, sbR.getValues());
assertFalse(sbR.matchesNoneOfValues());
assertFalse(sbR.matchesAny());
sb1 = StringBoundary.getBuilder().addValue("a").matchesNoneOfValues(true).build();
sb2 = StringBoundary.getBuilder().addValue("a").build();
assertFalse(sb1.createBi(BETWEEN, sb2).isPresent());
assertFalse(sb2.createBi(BETWEEN, sb1).isPresent());
sb1 = StringBoundary.getBuilder().addValue("a").matchesNoneOfValues(true).build();
sb2 = StringBoundary.getBuilder().addValue("b").matchesNoneOfValues(true).build();
assertFalse(sb1.createBi(BETWEEN, sb2).isPresent());
assertFalse(sb2.createBi(BETWEEN, sb1).isPresent());
sb1 = StringBoundary.getBuilder().addValue("a").matchesNoneOfValues(true).build();
sb2 = StringBoundary.getBuilder().addValue("a").matchesNoneOfValues(true).build();
sbR = (StringBoundary) sb1.createBi(BETWEEN, sb2).get();
assertArrayEquals(new String[]{"a"}, sbR.getValues());
assertFalse(sbR.matchesNoneOfValues());
assertFalse(sbR.matchesAny());
sb1 =
StringBoundary.getBuilder()
.addValue("a")
.addValue("b")
.addValue("c")
.matchesNoneOfValues(true)
.build();
sb2 = StringBoundary.getBuilder().addValue("a").matchesNoneOfValues(true).build();
sbR = (StringBoundary) sb1.createBi(BETWEEN, sb2).get();
assertArrayEquals(new String[]{"a"}, sbR.getValues());
assertFalse(sbR.matchesNoneOfValues());
assertFalse(sbR.matchesAny());
sb1 = StringBoundary.getBuilder().addValue("a").build();
sb2 = StringBoundary.getBuilder().addValue("a").build();
sbR = (StringBoundary) sb1.createBi(BETWEEN, sb2).get();
assertArrayEquals(new String[]{"a"}, sbR.getValues());
assertTrue(sbR.matchesNoneOfValues());
assertFalse(sbR.matchesAny());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment