Skip to content

Commit db24e88

Browse files
committed
Test improvement
1 parent 35468cf commit db24e88

1 file changed

Lines changed: 41 additions & 34 deletions

File tree

properties/src/test/java/com/fasterxml/jackson/dataformat/javaprop/deser/convert/CoerceToBooleanTest.java

Lines changed: 41 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,24 @@
1515
public class CoerceToBooleanTest
1616
extends ModuleTestBase
1717
{
18-
static class BooleanPOJO {
18+
static class BooleanPrimitivePOJO {
1919
public boolean value;
2020

2121
public void setValue(boolean v) { value = v; }
2222
}
2323

24+
static class BooleanWrapperPOJO {
25+
public Boolean value;
26+
27+
public void setValue(Boolean v) { value = v; }
28+
}
29+
30+
static class AtomicBooleanWrapper {
31+
public AtomicBoolean value;
32+
33+
public void setValue(AtomicBoolean v) { value = v; }
34+
}
35+
2436
private final ObjectMapper DEFAULT_MAPPER = newPropertiesMapper();
2537

2638
private final ObjectMapper MAPPER_STRING_TO_BOOLEAN_FAIL; {
@@ -45,9 +57,9 @@ static class BooleanPOJO {
4557
public void testEmptyStringFailForBooleanPrimitive() throws IOException
4658
{
4759
final ObjectReader reader = MAPPER_EMPTY_TO_BOOLEAN_FAIL
48-
.readerFor(BooleanPOJO.class);
60+
.readerFor(BooleanPrimitivePOJO.class);
4961
try {
50-
reader.readValue("<BooleanPOJO><value></value></BooleanPOJO>");
62+
reader.readValue("value:\n");
5163
fail("Expected failure for boolean + empty String");
5264
} catch (JsonMappingException e) {
5365
verifyException(e, "Cannot coerce empty String");
@@ -77,32 +89,33 @@ public void testStringToBooleanOkDespiteCoercionConfig() throws Exception {
7789

7890
public void _verifyStringToBooleanOk(ObjectMapper mapper) throws Exception
7991
{
80-
// first successful coercions, basic types:
81-
_verifyCoerceSuccess(mapper, _xmlWrapped("boolean", "true"), Boolean.TYPE, Boolean.TRUE);
82-
_verifyCoerceSuccess(mapper, _xmlWrapped("boolean", "false"), Boolean.TYPE, Boolean.FALSE);
83-
84-
_verifyCoerceSuccess(mapper, _xmlWrapped("Boolean", "true"), Boolean.class, Boolean.TRUE);
85-
_verifyCoerceSuccess(mapper, _xmlWrapped("Boolean", "false"), Boolean.class, Boolean.FALSE);
86-
87-
// and then allowed variants:
88-
_verifyCoerceSuccess(mapper, _xmlWrapped("boolean", "True"), Boolean.TYPE, Boolean.TRUE);
89-
_verifyCoerceSuccess(mapper, _xmlWrapped("Boolean", "True"), Boolean.class, Boolean.TRUE);
90-
_verifyCoerceSuccess(mapper, _xmlWrapped("boolean", "TRUE"), Boolean.TYPE, Boolean.TRUE);
91-
_verifyCoerceSuccess(mapper, _xmlWrapped("Boolean", "TRUE"), Boolean.class, Boolean.TRUE);
92-
_verifyCoerceSuccess(mapper, _xmlWrapped("boolean", "False"), Boolean.TYPE, Boolean.FALSE);
93-
_verifyCoerceSuccess(mapper, _xmlWrapped("Boolean", "False"), Boolean.class, Boolean.FALSE);
94-
_verifyCoerceSuccess(mapper, _xmlWrapped("boolean", "FALSE"), Boolean.TYPE, Boolean.FALSE);
95-
_verifyCoerceSuccess(mapper, _xmlWrapped("Boolean", "FALSE"), Boolean.class, Boolean.FALSE);
92+
// first successful coercions, basic types, some variants
93+
94+
assertEquals(true,
95+
_verifyCoerceSuccess(mapper, "value: true", BooleanPrimitivePOJO.class).value);
96+
assertEquals(false,
97+
_verifyCoerceSuccess(mapper, "value: false", BooleanPrimitivePOJO.class).value);
98+
assertEquals(true,
99+
_verifyCoerceSuccess(mapper, "value: True", BooleanPrimitivePOJO.class).value);
100+
assertEquals(false,
101+
_verifyCoerceSuccess(mapper, "value: False", BooleanPrimitivePOJO.class).value);
102+
103+
assertEquals(Boolean.TRUE,
104+
_verifyCoerceSuccess(mapper, "value: true", BooleanWrapperPOJO.class).value);
105+
assertEquals(Boolean.FALSE,
106+
_verifyCoerceSuccess(mapper, "value: false", BooleanWrapperPOJO.class).value);
107+
assertEquals(Boolean.TRUE,
108+
_verifyCoerceSuccess(mapper, "value: True", BooleanWrapperPOJO.class).value);
109+
assertEquals(Boolean.FALSE,
110+
_verifyCoerceSuccess(mapper, "value: False", BooleanWrapperPOJO.class).value);
96111

97112
// and then Special boolean derivatives:
98-
// Alas, AtomicBoolean.equals() does not work so...
99-
final ObjectReader r = mapper.readerFor(AtomicBoolean.class);
100113

101-
AtomicBoolean ab = r.readValue(_xmlWrapped("AtomicBoolean", "true"));
102-
assertTrue(ab.get());
114+
AtomicBooleanWrapper abw = _verifyCoerceSuccess(mapper, "value: true", AtomicBooleanWrapper.class);
115+
assertTrue(abw.value.get());
103116

104-
ab = r.readValue(_xmlWrapped("AtomicBoolean", "false"));
105-
assertFalse(ab.get());
117+
abw = _verifyCoerceSuccess(mapper, "value: false", AtomicBooleanWrapper.class);
118+
assertFalse(abw.value.get());
106119
}
107120

108121
/*
@@ -111,16 +124,10 @@ public void _verifyStringToBooleanOk(ObjectMapper mapper) throws Exception
111124
/**********************************************************
112125
*/
113126

114-
private String _xmlWrapped(String element, String value) {
115-
return String.format("<%s>%s</%s>", element, value, element);
116-
}
117-
118-
private void _verifyCoerceSuccess(ObjectMapper mapper,
119-
String input, Class<?> type, Object exp) throws IOException
127+
private <T> T _verifyCoerceSuccess(ObjectMapper mapper,
128+
String input, Class<T> type) throws IOException
120129
{
121-
Object result = mapper.readerFor(type)
130+
return mapper.readerFor(type)
122131
.readValue(input);
123-
assertEquals(exp.getClass(), result.getClass());
124-
assertEquals(exp, result);
125132
}
126133
}

0 commit comments

Comments
 (0)