From 1f5f61a05fb4b4e9dc4e0de604da10977b6c30d5 Mon Sep 17 00:00:00 2001 From: Savan Maheshkumar Patel Date: Fri, 1 Mar 2024 21:37:36 -0400 Subject: [PATCH] Add : additional test cases for BooleanArrayConstraint and CompositeCodePoints --- .../array/BooleanArrayConstraint.java | 12 ++++++ .../codepoints/CompositeCodePoints.java | 2 + .../array/BooleanArrayConstraintTest.java | 39 +++++++++++++++++++ .../codepoints/CompositeCodePointsTest.java | 22 +++++++++++ 4 files changed, 75 insertions(+) create mode 100644 src/test/java/am/ik/yavi/constraint/array/BooleanArrayConstraintTest.java diff --git a/src/main/java/am/ik/yavi/constraint/array/BooleanArrayConstraint.java b/src/main/java/am/ik/yavi/constraint/array/BooleanArrayConstraint.java index 934738fa..5e9f8962 100644 --- a/src/main/java/am/ik/yavi/constraint/array/BooleanArrayConstraint.java +++ b/src/main/java/am/ik/yavi/constraint/array/BooleanArrayConstraint.java @@ -43,6 +43,18 @@ public BooleanArrayConstraint contains(boolean v) { return this; } + public BooleanArrayConstraint onlyContains(boolean v){ + this.predicates().add(ConstraintPredicate.of(x -> { + for(boolean e : x){ + if(e != v) + return false; + } + return true; + },ARRAY_CONTAINS,() -> new Object[]{v},VALID)); + return this; + } + + @Override protected ToIntFunction size() { return x -> x.length; diff --git a/src/main/java/am/ik/yavi/constraint/charsequence/codepoints/CompositeCodePoints.java b/src/main/java/am/ik/yavi/constraint/charsequence/codepoints/CompositeCodePoints.java index 21a6d51c..7ed6fe0f 100644 --- a/src/main/java/am/ik/yavi/constraint/charsequence/codepoints/CompositeCodePoints.java +++ b/src/main/java/am/ik/yavi/constraint/charsequence/codepoints/CompositeCodePoints.java @@ -52,6 +52,8 @@ else if (points instanceof CodePointsRanges) { } } + + @Override public Set allExcludedCodePoints(E s) { Set excluded = null; diff --git a/src/test/java/am/ik/yavi/constraint/array/BooleanArrayConstraintTest.java b/src/test/java/am/ik/yavi/constraint/array/BooleanArrayConstraintTest.java new file mode 100644 index 00000000..a4041eb8 --- /dev/null +++ b/src/test/java/am/ik/yavi/constraint/array/BooleanArrayConstraintTest.java @@ -0,0 +1,39 @@ +package am.ik.yavi.constraint.array; + +import org.junit.jupiter.api.Test; + +import java.util.function.Predicate; + +import static org.assertj.core.api.Assertions.assertThat; + +public class BooleanArrayConstraintTest { + + private BooleanArrayConstraint constraint = new BooleanArrayConstraint<>(); + + @Test + void containsTest(){ + Predicate predicate = constraint.contains(true).predicates().peekFirst().predicate(); + assertThat(predicate.test(new boolean[]{true,false})).isTrue(); + assertThat(predicate.test(new boolean[]{false,false})).isFalse(); + } + + @Test + void onlyContainsTest(){ + Predicate predicate = constraint.onlyContains(true).predicates().peekFirst().predicate(); + assertThat(predicate.test(new boolean[]{true,true,true})).isTrue(); + assertThat(predicate.test(new boolean[]{true,true,false})).isFalse(); + } + + @Test + void sizeTestFailed(){ + Predicate predicate = constraint.fixedSize(3).predicates().peekFirst().predicate(); + assertThat(predicate.test(new boolean[]{true,true})).isFalse(); + } + + @Test + void sizeTestPass(){ + Predicate predicate = constraint.fixedSize(3).predicates().peekFirst().predicate(); + assertThat(predicate.test(new boolean[]{true,true,true})).isTrue(); + } + +} diff --git a/src/test/java/am/ik/yavi/constraint/charsequence/codepoints/CompositeCodePointsTest.java b/src/test/java/am/ik/yavi/constraint/charsequence/codepoints/CompositeCodePointsTest.java index 86769586..ce37b135 100644 --- a/src/test/java/am/ik/yavi/constraint/charsequence/codepoints/CompositeCodePointsTest.java +++ b/src/test/java/am/ik/yavi/constraint/charsequence/codepoints/CompositeCodePointsTest.java @@ -23,6 +23,7 @@ import static am.ik.yavi.constraint.charsequence.codepoints.UnicodeCodePoints.HIRAGANA; import static am.ik.yavi.constraint.charsequence.codepoints.UnicodeCodePoints.KATAKANA; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; import am.ik.yavi.constraint.charsequence.CodePoints; import am.ik.yavi.constraint.charsequence.CodePoints.CodePointsSet; @@ -44,6 +45,27 @@ void codePointRange() { assertThat(codePoints.allExcludedCodePoints("あいアイEF")).contains(0x0045, 0x0046); } + @Test + void checkCodePointRange(){ + + CodePoints.CodePointsRanges cp = () -> Arrays.asList( + CodePoints.Range.of('A','D')); + + CodePoints codePoints = new CompositeCodePoints<>(cp); + assertThat(codePoints.allExcludedCodePoints("ABCD")).isEmpty(); + assertThat(codePoints.allExcludedCodePoints("EF")).contains(0x0045, 0x0046); + assertThat(codePoints.allExcludedCodePoints("CDE")).contains(0x0045); + } + + @Test + void checkEmptyCompositeCodePoints() + { + assertThrows(IllegalArgumentException.class, () -> { + CodePoints codePoints = new CompositeCodePoints<>(); + }, "No code point is included"); + + } + @Test void codePointsSet() { CodePointsSet cp1 = () -> new LinkedHashSet<>(