Skip to content

Commit f5ee85e

Browse files
committed
add object merging
1 parent c66a958 commit f5ee85e

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

json/src/main/java/alpine/json/Element.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,20 @@ static ObjectElement object() {
8585
static ObjectElement object(Map<String, Element> map) {
8686
return new ObjectElement(new LinkedHashMap<>(map));
8787
}
88+
89+
static ObjectElement object(Collection<ObjectElement> objects) {
90+
var map = new LinkedHashMap<String, Element>();
91+
objects.forEach(object -> object.each(map::put));
92+
return new ObjectElement(map);
93+
}
94+
95+
static ObjectElement object(ObjectElement... objects) {
96+
var map = new LinkedHashMap<String, Element>();
97+
98+
for (var object : objects) {
99+
object.each(map::put);
100+
}
101+
102+
return new ObjectElement(map);
103+
}
88104
}

json/src/test/java/alpine/json/JsonTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,13 @@ void testObjectSorting() {
9191
assertEquals(unsortedObject.sort().toString(), sortedObject.toString());
9292
}
9393

94+
@Test
95+
void testObjectMerging() {
96+
var firstObject = object().set("a", "b");
97+
var secondObject = object().set("c", "d");
98+
assertEquals(object(firstObject, secondObject), object().set("a", "b").set("c", "d"));
99+
}
100+
94101
@ParameterizedTest(name = "{0} (encoding)")
95102
@MethodSource("arguments")
96103
void testEncoding(String label, Element element, String expected) {

0 commit comments

Comments
 (0)