Skip to content

Commit f4f92f0

Browse files
committed
* PrimitiveIntegerValidator.isNotEqualTo() and PrimitiveUnsignedIntegerValidator.isNotEqualTo() were validating the opposite conditions that they were supposed to.
* Added JsonNodeValidator.size(). * Warn the user if they invoke DefaultJavaValidators.requireThat() on a Jackson type instead of DefaultJacksonValidators.requireThat(). * Added a dependency on SLF4J.
1 parent 7a74f38 commit f4f92f0

File tree

7 files changed

+81
-6
lines changed

7 files changed

+81
-6
lines changed

docs/changelog.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@ Minor updates involving cosmetic changes have been omitted from this list.
22

33
See https://github.com/cowwoc/requirements.java/commits/main for a full list.
44

5-
## Version 10.12 - ?
5+
## Version 10.12 - 2025/02/13
66

7+
* Bugfixes
8+
* `PrimitiveIntegerValidator.isNotEqualTo()` and `PrimitiveUnsignedIntegerValidator.isNotEqualTo()` were
9+
validating the opposite conditions that they were supposed to.
10+
* Added `JsonNodeValidator.size()`.
711
* Warn the user if they invoke `DefaultJavaValidators.requireThat()` on a Jackson type instead of
812
`DefaultJacksonValidators.requireThat()`.
913
* Added a dependency on SLF4J.

jackson/src/main/java/com/github/cowwoc/requirements10/jackson/internal/validator/JsonNodeValidatorImpl.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,11 @@
2020
import com.github.cowwoc.requirements10.java.ValidationFailure;
2121
import com.github.cowwoc.requirements10.java.internal.Configuration;
2222
import com.github.cowwoc.requirements10.java.internal.scope.ApplicationScope;
23+
import com.github.cowwoc.requirements10.java.internal.util.Pluralizer;
2324
import com.github.cowwoc.requirements10.java.internal.util.ValidationTarget;
2425
import com.github.cowwoc.requirements10.java.internal.validator.AbstractObjectValidator;
26+
import com.github.cowwoc.requirements10.java.internal.validator.ObjectSizeValidatorImpl;
27+
import com.github.cowwoc.requirements10.java.validator.PrimitiveUnsignedIntegerValidator;
2528

2629
import java.util.List;
2730
import java.util.Map;
@@ -67,6 +70,14 @@ public JsonNodeValidator<JsonNode> property(String name)
6770
failures);
6871
}
6972

73+
@Override
74+
public PrimitiveUnsignedIntegerValidator size()
75+
{
76+
failOnNull();
77+
return new ObjectSizeValidatorImpl(scope, configuration, this, name + ".size()",
78+
value.nullToInvalid().map(JsonNode::size), Pluralizer.ELEMENT, context, failures);
79+
}
80+
7081
@Override
7182
public JsonNodeValidator<NumericNode> isNumber()
7283
{

jackson/src/main/java/com/github/cowwoc/requirements10/jackson/validator/JsonNodeValidator.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.fasterxml.jackson.databind.node.ObjectNode;
1717
import com.fasterxml.jackson.databind.node.TextNode;
1818
import com.fasterxml.jackson.databind.node.ValueNode;
19+
import com.github.cowwoc.requirements10.java.validator.PrimitiveUnsignedIntegerValidator;
1920
import com.github.cowwoc.requirements10.java.validator.component.ObjectComponent;
2021
import com.github.cowwoc.requirements10.java.validator.component.ValidatorComponent;
2122

@@ -38,6 +39,14 @@ public interface JsonNodeValidator<T extends JsonNode> extends
3839
*/
3940
JsonNodeValidator<JsonNode> property(String name);
4041

42+
/**
43+
* Returns a validator over the node's {@link JsonNode#size() size}.
44+
*
45+
* @return a validator over the node's {@link JsonNode#size() size}
46+
* @throws NullPointerException if the value is null
47+
*/
48+
PrimitiveUnsignedIntegerValidator size();
49+
4150
/**
4251
* Ensures that the node contains a {@code Number}.
4352
*

java/src/main/java/com/github/cowwoc/requirements10/java/internal/validator/Integers.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ public S isNotEqualTo(int unwanted, String name)
108108

109109
private S isNotEqualToImpl(int unwanted, String name)
110110
{
111-
if (validator.value.validationFailed(v -> v == unwanted))
111+
if (validator.value.validationFailed(v -> v != unwanted))
112112
{
113113
validator.addIllegalArgumentException(
114114
ValidatorMessages.isNotEqualToFailed(validator, name, unwanted).toString());

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,9 @@
6262
<error_prone_annotations.version>2.26.1</error_prone_annotations.version>
6363
<jackson.version>2.18.2</jackson.version>
6464
<slf4j.version>2.0.16</slf4j.version>
65-
<testng.version>7.10.2</testng.version>
65+
<testng.version>7.11.0</testng.version>
6666
<jmh.version>1.37</jmh.version>
67-
<pmd.version>7.9.0</pmd.version>
67+
<pmd.version>7.10.0</pmd.version>
6868
</properties>
6969

7070
<dependencyManagement>

test/src/test/java/com/github/cowwoc/requirements10/test/java/ArrayTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1035,8 +1035,7 @@ public void lengthIsNotEqualToVariable()
10351035
{
10361036
"element"
10371037
};
1038-
validators.requireThat(actual, "actual").length().
1039-
isNotEqualTo(2, "expectedName");
1038+
validators.requireThat(actual, "actual").length().isNotEqualTo(2, "expectedName");
10401039
}
10411040
}
10421041

test/src/test/java/com/github/cowwoc/requirements10/test/java/NumberTest.java

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,58 @@ public void nameIsEmpty()
4141
}
4242
}
4343

44+
@Test
45+
public void isEqualTo()
46+
{
47+
try (ApplicationScope scope = new TestApplicationScope(NONE))
48+
{
49+
TestValidators validators = TestValidators.of(scope);
50+
51+
int actual = 0;
52+
int expected = 0;
53+
validators.requireThat(actual, "actual").isEqualTo(expected);
54+
}
55+
}
56+
57+
@Test(expectedExceptions = IllegalArgumentException.class)
58+
public void isEqualTo_False()
59+
{
60+
try (ApplicationScope scope = new TestApplicationScope(NONE))
61+
{
62+
TestValidators validators = TestValidators.of(scope);
63+
64+
int actual = 0;
65+
int expected = 1;
66+
validators.requireThat(actual, "actual").isEqualTo(expected);
67+
}
68+
}
69+
70+
@Test
71+
public void isNotEqualTo()
72+
{
73+
try (ApplicationScope scope = new TestApplicationScope(NONE))
74+
{
75+
TestValidators validators = TestValidators.of(scope);
76+
77+
int actual = 0;
78+
int expected = 1;
79+
validators.requireThat(actual, "actual").isNotEqualTo(expected);
80+
}
81+
}
82+
83+
@Test(expectedExceptions = IllegalArgumentException.class)
84+
public void isNotEqualTo_False()
85+
{
86+
try (ApplicationScope scope = new TestApplicationScope(NONE))
87+
{
88+
TestValidators validators = TestValidators.of(scope);
89+
90+
int actual = 0;
91+
int expected = 0;
92+
validators.requireThat(actual, "actual").isNotEqualTo(expected);
93+
}
94+
}
95+
4496
@Test
4597
public void isBetween_actualIsLowerBound()
4698
{

0 commit comments

Comments
 (0)