X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-codec-gson%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fcodec%2Fgson%2FJsonStreamToNormalizedNodeTest.java;h=5ab681dc290ed29a6282ebf4edf2bb9ce7f17d00;hb=21b3fb1ea12d1e28115f6c216bbbfd9c80b2216f;hp=c1ff375d2374ba29a7e3a9e61bd02ad768e4ccf2;hpb=e1a3876862c946f484edd03c0012575037a32d03;p=yangtools.git diff --git a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonStreamToNormalizedNodeTest.java b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonStreamToNormalizedNodeTest.java index c1ff375d23..5ab681dc29 100644 --- a/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonStreamToNormalizedNodeTest.java +++ b/yang/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonStreamToNormalizedNodeTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. + * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -10,22 +10,31 @@ package org.opendaylight.yangtools.yang.data.codec.gson; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.loadModules; +import static org.junit.Assert.fail; import static org.opendaylight.yangtools.yang.data.codec.gson.TestUtils.loadTextFile; +import static org.opendaylight.yangtools.yang.data.impl.schema.Builders.augmentationBuilder; +import static org.opendaylight.yangtools.yang.data.impl.schema.Builders.choiceBuilder; +import static org.opendaylight.yangtools.yang.data.impl.schema.Builders.containerBuilder; +import static org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes.leafNode; +import com.google.common.collect.Sets; import com.google.gson.stream.JsonReader; import java.io.IOException; import java.io.StringReader; import java.net.URISyntaxException; import org.junit.BeforeClass; -import org.junit.Ignore; import org.junit.Test; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter; import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaNode; +import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; +import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; /** * @@ -33,31 +42,13 @@ import org.opendaylight.yangtools.yang.model.api.SchemaNode; */ public class JsonStreamToNormalizedNodeTest { + private static final QName CONT_1 = QName.create("ns:complex:json", "2014-08-11", "cont1"); + private static final QName EMPTY_LEAF = QName.create(CONT_1,"empty"); private static SchemaContext schemaContext; @BeforeClass - public static void initialization() throws IOException, URISyntaxException { - schemaContext = loadModules("/complexjson/yang"); - } - - /** - * case when anyxml contains simple value will be implemented when anyxml normalized node reprezentation will be - * specified - */ - @Ignore - @Test - public void anyXmlNodeWithSimpleValueInContainer() throws IOException, URISyntaxException { - - } - - /** - * case when anyxml contains complex xml will be implemented when anyxml normalized node reprezentation will be - * specified - */ - @Ignore - @Test - public void anyXmlNodeWithCompositeValueInContainer() throws IOException, URISyntaxException { - + public static void initialization() throws IOException, URISyntaxException, ReactorException { + schemaContext = YangParserTestUtils.parseYangSources("/complexjson/yang"); } @Test @@ -161,6 +152,7 @@ public class JsonStreamToNormalizedNodeTest { try { //second parameter isn't necessary because error will be raised before it is used. verifyTransformationToNormalizedNode(inputJson, null); + fail("Expected exception not raised"); } catch (final IllegalStateException e) { final String errorMessage = e.getMessage(); assertTrue(errorMessage.contains("Choose suitable module name for element lf11-namesake:")); @@ -169,6 +161,17 @@ public class JsonStreamToNormalizedNodeTest { } } + @Test + public void emptyTypeTest() throws IOException, URISyntaxException { + final String inputJson = loadTextFile("/complexjson/type-empty.json"); + final ContainerNode awaitedStructure = containerBuilder() + .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(CONT_1)) + .addChild(leafNode(EMPTY_LEAF, null)) + .build(); + + verifyTransformationToNormalizedNode(inputJson, awaitedStructure); + } + /** * * Exception expected. @@ -182,7 +185,7 @@ public class JsonStreamToNormalizedNodeTest { //second parameter isn't necessary because error will be raised before it is used. verifyTransformationToNormalizedNode(inputJson, null); } catch (final IllegalStateException e) { - assertTrue(e.getMessage().contains("Schema node with name dummy-element wasn't found.")); + assertTrue(e.getMessage().contains("Schema node with name dummy-element wasn't found")); } } @@ -193,7 +196,7 @@ public class JsonStreamToNormalizedNodeTest { final NormalizedNodeResult result = new NormalizedNodeResult(); final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result); - final SchemaNode parentNode = schemaContext.getDataChildByName("cont1"); + final SchemaNode parentNode = schemaContext.getDataChildByName(CONT_1); final JsonParserStream jsonParser = JsonParserStream.create(streamWriter, schemaContext, parentNode); jsonParser.parse(new JsonReader(new StringReader(inputJson))); final NormalizedNode transformedInput = result.getResult(); @@ -206,14 +209,59 @@ public class JsonStreamToNormalizedNodeTest { final NormalizedNodeResult result = new NormalizedNodeResult(); final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result); - final SchemaNode parentNode = schemaContext.getDataChildByName("cont1"); + final SchemaNode parentNode = schemaContext.getDataChildByName(CONT_1); final JsonParserStream jsonParser = JsonParserStream.create(streamWriter, schemaContext, parentNode); jsonParser.parse(new JsonReader(new StringReader(inputJson))); final NormalizedNode transformedInput = result.getResult(); assertNotNull(transformedInput); } - private void verifyTransformationToNormalizedNode(final String inputJson, + @Test + public void multipleChoiceAugmentation() throws IOException, URISyntaxException { + final String inputJson = loadTextFile("/complexjson/multiple-choice-augmentation-in-container.json"); + + final NormalizedNodeResult result = new NormalizedNodeResult(); + final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result); + final SchemaNode parentNode = schemaContext.getDataChildByName(CONT_1); + + final QName augmentChoice1QName = QName.create(parentNode.getQName(), "augment-choice1"); + final QName augmentChoice2QName = QName.create(augmentChoice1QName, "augment-choice2"); + final QName containerQName = QName.create(augmentChoice1QName, "case11-choice-case-container"); + final QName leafQName = QName.create(augmentChoice1QName, "case11-choice-case-leaf"); + + final YangInstanceIdentifier.AugmentationIdentifier aug1Id = + new YangInstanceIdentifier.AugmentationIdentifier(Sets.newHashSet(augmentChoice1QName)); + final YangInstanceIdentifier.AugmentationIdentifier aug2Id = + new YangInstanceIdentifier.AugmentationIdentifier(Sets.newHashSet(augmentChoice2QName)); + final YangInstanceIdentifier.NodeIdentifier augmentChoice1Id = + new YangInstanceIdentifier.NodeIdentifier(augmentChoice1QName); + final YangInstanceIdentifier.NodeIdentifier augmentChoice2Id = + new YangInstanceIdentifier.NodeIdentifier(augmentChoice2QName); + final YangInstanceIdentifier.NodeIdentifier containerId = + new YangInstanceIdentifier.NodeIdentifier(containerQName); + + final NormalizedNode cont1Normalized = + containerBuilder().withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(parentNode.getQName())) + .withChild(augmentationBuilder().withNodeIdentifier(aug1Id) + .withChild(choiceBuilder().withNodeIdentifier(augmentChoice1Id) + .withChild(augmentationBuilder().withNodeIdentifier(aug2Id) + .withChild(choiceBuilder().withNodeIdentifier(augmentChoice2Id) + .withChild(containerBuilder().withNodeIdentifier(containerId) + .withChild(leafNode(leafQName, "leaf-value")) + .build()) + .build()) + .build()) + .build()) + .build()).build(); + + final JsonParserStream jsonParser = JsonParserStream.create(streamWriter, schemaContext); + jsonParser.parse(new JsonReader(new StringReader(inputJson))); + final NormalizedNode transformedInput = result.getResult(); + assertNotNull(transformedInput); + assertEquals(cont1Normalized, transformedInput); + } + + private static void verifyTransformationToNormalizedNode(final String inputJson, final NormalizedNode awaitedStructure) { final NormalizedNodeResult result = new NormalizedNodeResult(); final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);