1 package software.amazon.awssdk.protocols.json.internal.dom; 2 3 import static org.assertj.core.api.Assertions.assertThat; 4 import static org.assertj.core.api.Assertions.assertThatExceptionOfType; 5 6 import java.math.BigDecimal; 7 import java.text.ParseException; 8 import java.util.ArrayList; 9 import java.util.LinkedHashMap; 10 import java.util.List; 11 import java.util.Map; 12 import org.junit.jupiter.api.Test; 13 import software.amazon.awssdk.core.SdkNumber; 14 import software.amazon.awssdk.core.document.Document; 15 import software.amazon.awssdk.protocols.json.internal.unmarshall.document.DocumentUnmarshaller; 16 import software.amazon.awssdk.protocols.jsoncore.JsonNode; 17 import software.amazon.awssdk.protocols.jsoncore.internal.EmbeddedObjectJsonNode; 18 19 20 public class DocumentUnmarshallerTest { 21 @Test testDocumentFromNumberNode()22 public void testDocumentFromNumberNode() throws ParseException { 23 JsonNode node = JsonNode.parser().parse("100"); 24 assertThat(Document.fromNumber(SdkNumber.fromInteger(100)).asNumber().intValue()) 25 .isEqualTo(node.visit(new DocumentUnmarshaller()).asNumber().intValue()); 26 } 27 28 @Test testDocumentFromBoolean()29 public void testDocumentFromBoolean() { 30 JsonNode node = JsonNode.parser().parse("true"); 31 assertThat(Document.fromBoolean(true)).isEqualTo(node.visit(new DocumentUnmarshaller())); 32 } 33 34 @Test testDocumentFromString()35 public void testDocumentFromString() { 36 JsonNode node = JsonNode.parser().parse("\"100.00\""); 37 assertThat(Document.fromString("100.00")).isEqualTo(node.visit(new DocumentUnmarshaller())); 38 } 39 40 @Test testDocumentFromNull()41 public void testDocumentFromNull() { 42 JsonNode node = JsonNode.parser().parse("null"); 43 assertThat(Document.fromNull()).isEqualTo(node.visit(new DocumentUnmarshaller())); 44 } 45 46 @Test testExceptionIsThrownFromEmbededObjectType()47 public void testExceptionIsThrownFromEmbededObjectType() { 48 assertThatExceptionOfType(UnsupportedOperationException.class) 49 .isThrownBy(() -> new EmbeddedObjectJsonNode(new Object()).visit(new DocumentUnmarshaller())); 50 } 51 52 @Test testDocumentFromObjectNode()53 public void testDocumentFromObjectNode(){ 54 JsonNode node = JsonNode.parser().parse("{\"firstKey\": \"firstValue\", \"secondKey\": \"secondValue\"}"); 55 56 Document documentMap = node.visit(new DocumentUnmarshaller()); 57 Map<String, Document> expectedMap = new LinkedHashMap<>(); 58 expectedMap.put("firstKey", Document.fromString("firstValue")); 59 expectedMap.put("secondKey", Document.fromString("secondValue")); 60 final Document expectedDocumentMap = Document.fromMap(expectedMap); 61 assertThat(documentMap).isEqualTo(expectedDocumentMap); 62 } 63 64 @Test testDocumentFromArrayNode()65 public void testDocumentFromArrayNode(){ 66 JsonNode node = JsonNode.parser().parse("[\"One\", 10, true, null]"); 67 List<Document> documentList = new ArrayList<>(); 68 documentList.add(Document.fromString("One")); 69 documentList.add(Document.fromNumber(SdkNumber.fromBigDecimal(BigDecimal.TEN))); 70 documentList.add(Document.fromBoolean(true)); 71 documentList.add(Document.fromNull()); 72 final Document document = Document.fromList(documentList); 73 final Document actualDocument = node.visit(new DocumentUnmarshaller()); 74 assertThat(actualDocument).isEqualTo(document); 75 } 76 } 77