package com.fasterxml.jackson.databind.format; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.fasterxml.jackson.databind.BaseMapTest; import com.fasterxml.jackson.databind.ObjectMapper; // [databind#1480] public class BooleanFormatTest extends BaseMapTest { @JsonPropertyOrder({ "b1", "b2", "b3" }) static class BeanWithBoolean { @JsonFormat(shape=JsonFormat.Shape.NUMBER) public boolean b1; @JsonFormat(shape=JsonFormat.Shape.NUMBER) public Boolean b2; public boolean b3; public BeanWithBoolean() { } public BeanWithBoolean(boolean b1, Boolean b2, boolean b3) { this.b1 = b1; this.b2 = b2; this.b3 = b3; } } /** * Simple wrapper around boolean types, usually to test value * conversions or wrapping */ protected static class BooleanWrapper { public Boolean b; public BooleanWrapper() { } public BooleanWrapper(Boolean value) { b = value; } } static class AltBoolean extends BooleanWrapper { public AltBoolean() { } public AltBoolean(Boolean b) { super(b); } } /* /********************************************************** /* Test methods /********************************************************** */ private final static ObjectMapper MAPPER = newObjectMapper(); public void testShapeViaDefaults() throws Exception { assertEquals(aposToQuotes("{'b':true}"), MAPPER.writeValueAsString(new BooleanWrapper(true))); ObjectMapper m = newObjectMapper(); m.configOverride(Boolean.class) .setFormat(JsonFormat.Value.forShape(JsonFormat.Shape.NUMBER)); assertEquals(aposToQuotes("{'b':1}"), m.writeValueAsString(new BooleanWrapper(true))); } public void testShapeOnProperty() throws Exception { assertEquals(aposToQuotes("{'b1':1,'b2':0,'b3':true}"), MAPPER.writeValueAsString(new BeanWithBoolean(true, false, true))); } }