Skip to content

Commit 8b27fdc

Browse files
committed
adding NumberSchema#describePropertiesTo()
1 parent 7e42390 commit 8b27fdc

File tree

3 files changed

+57
-0
lines changed

3 files changed

+57
-0
lines changed

core/src/main/java/org/everit/json/schema/NumberSchema.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
package org.everit.json.schema;
1717

18+
import org.everit.json.schema.internal.JSONPrinter;
19+
1820
import java.math.BigDecimal;
1921
import java.util.Objects;
2022

@@ -218,6 +220,22 @@ public boolean equals(Object o) {
218220
}
219221
}
220222

223+
@Override
224+
void describePropertiesTo(JSONPrinter writer) {
225+
if (requiresInteger) {
226+
writer.key("type");
227+
writer.value("integer");
228+
} else if (requiresNumber) {
229+
writer.key("type");
230+
writer.value("number");
231+
}
232+
writer.ifPresent("minimum", minimum);
233+
writer.ifPresent("maximum", maximum);
234+
writer.ifPresent("multipleOf", multipleOf);
235+
writer.ifTrue("exclusiveMinimum", exclusiveMinimum);
236+
writer.ifTrue("exclusiveMaximum", exclusiveMaximum);
237+
}
238+
221239
@Override
222240
public int hashCode() {
223241
return Objects

core/src/test/java/org/everit/json/schema/NumberSchemaTest.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,18 @@
1717

1818
import nl.jqno.equalsverifier.EqualsVerifier;
1919
import nl.jqno.equalsverifier.Warning;
20+
import org.everit.json.schema.loader.SchemaLoader;
21+
import org.json.JSONObject;
22+
import org.junit.Ignore;
2023
import org.junit.Test;
2124

25+
import static org.junit.Assert.assertEquals;
26+
import static org.junit.Assert.assertTrue;
27+
2228
public class NumberSchemaTest {
2329

30+
private final ResourceLoader loader = new ResourceLoader("/org/everit/jsonvalidator/tostring/");
31+
2432
@Test
2533
public void exclusiveMinimum() {
2634
NumberSchema subject = NumberSchema.builder().minimum(10.0).exclusiveMinimum(true).build();
@@ -119,4 +127,27 @@ public void equalsVerifier() {
119127
.suppress(Warning.STRICT_INHERITANCE)
120128
.verify();
121129
}
130+
131+
@Test
132+
public void toStringTest() {
133+
JSONObject rawSchemaJson = loader.readObj("numberschema.json");
134+
String actual = SchemaLoader.load(rawSchemaJson).toString();
135+
assertTrue(ObjectComparator.deepEquals(rawSchemaJson, new JSONObject(actual)));
136+
}
137+
138+
@Test
139+
public void toStringNoExplicitType() {
140+
JSONObject rawSchemaJson = loader.readObj("numberschema.json");
141+
rawSchemaJson.remove("type");
142+
String actual = SchemaLoader.load(rawSchemaJson).toString();
143+
assertTrue(ObjectComparator.deepEquals(rawSchemaJson, new JSONObject(actual)));
144+
}
145+
146+
@Test
147+
public void toStringReqInteger() {
148+
JSONObject rawSchemaJson = loader.readObj("numberschema.json");
149+
rawSchemaJson.put("type", "integer");
150+
String actual = SchemaLoader.load(rawSchemaJson).toString();
151+
assertTrue(ObjectComparator.deepEquals(rawSchemaJson, new JSONObject(actual)));
152+
}
122153
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"type": "number",
3+
"minimum": 0,
4+
"maximum": 10,
5+
"multipleOf": 5,
6+
"exclusiveMinimum": true,
7+
"exclusiveMaximum": true
8+
}

0 commit comments

Comments
 (0)