diff --git a/src/main/java/co/nstant/in/cbor/builder/MapEntryBuilder.java b/src/main/java/co/nstant/in/cbor/builder/MapEntryBuilder.java index 7b95ee1..419324f 100644 --- a/src/main/java/co/nstant/in/cbor/builder/MapEntryBuilder.java +++ b/src/main/java/co/nstant/in/cbor/builder/MapEntryBuilder.java @@ -1,6 +1,8 @@ package co.nstant.in.cbor.builder; +import co.nstant.in.cbor.model.Array; import co.nstant.in.cbor.model.DataItem; +import co.nstant.in.cbor.model.Map; public class MapEntryBuilder> extends AbstractBuilder { private final DataItem key; @@ -26,6 +28,18 @@ public T value(String value) { return put(key, convert(value)); } + public ArrayBuilder valueArray() { + Array nestedArray = new Array(); + this.put(key, nestedArray); + return new ArrayBuilder<>(getParent(), nestedArray); + } + + public MapBuilder valueMap() { + Map nestedMap = new Map(); + this.put(key, nestedMap); + return new MapBuilder<>(getParent(), nestedMap); + } + private T put(DataItem key, DataItem value) { getParent().put(key, value); return getParent(); diff --git a/src/test/java/co/nstant/in/cbor/builder/MapBuilderTest.java b/src/test/java/co/nstant/in/cbor/builder/MapBuilderTest.java index 953ce7e..cceaa54 100644 --- a/src/test/java/co/nstant/in/cbor/builder/MapBuilderTest.java +++ b/src/test/java/co/nstant/in/cbor/builder/MapBuilderTest.java @@ -52,6 +52,12 @@ public void testMapBuilder() { .addKey("28").value(1.0f) .addKey("29").value(1L) .addKey("30").value("value") + .addKey(31) + .valueMap() + .addKey(3111).value(3112) + .addKey(3121).value(3122) + .end() + .addKey(34).valueArray().add(35).end() .end() .startMap() .startArray(1).end() @@ -61,7 +67,7 @@ public void testMapBuilder() { assertEquals(2, dataItems.size()); assertTrue(dataItems.get(0) instanceof Map); Map map = (Map) dataItems.get(0); - assertEquals(31, map.getKeys().size()); + assertEquals(33, map.getKeys().size()); } @Test