1 package org.opendaylight.controller.sal.binding.test.connect.dom;
3 import static org.junit.Assert.*;
5 import java.io.InputStream;
6 import java.util.ArrayList;
9 import java.util.Map.Entry;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeBuilder;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
16 import org.junit.Before;
17 import org.junit.Test;
18 import org.opendaylight.controller.sal.binding.impl.connect.dom.BindingIndependentMappingService;
19 import org.opendaylight.controller.sal.binding.impl.connect.dom.MappingServiceImpl;
20 import org.opendaylight.controller.sal.binding.test.AbstractDataServiceTest;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodesBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeBuilder;
25 import org.opendaylight.yangtools.sal.binding.generator.impl.ModuleContext;
26 import org.opendaylight.yangtools.yang.binding.Augmentation;
27 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
28 import org.opendaylight.yangtools.yang.common.QName;
29 import org.opendaylight.yangtools.yang.data.api.CompositeNode;
30 import org.opendaylight.yangtools.yang.model.api.Module;
31 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
32 import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
34 public class MappingServiceTest {
36 private static final QName NODES = QName.create("urn:opendaylight:inventory", "2013-08-19", "nodes");
37 private static final QName NODE = QName.create(NODES,"node");
38 private static final QName ID = QName.create(NODES,"id");
40 BindingIndependentMappingService service;
41 private MappingServiceImpl impl;
45 impl = new MappingServiceImpl();
50 public void baDataToBiData() throws Exception {
52 String[] yangFiles = AbstractDataServiceTest.getModelFilenamesImpl();
54 SchemaContext ctx = AbstractDataServiceTest.getContext(yangFiles);
56 impl.onGlobalContextUpdated(ctx);
58 NodesBuilder nodes = new NodesBuilder();
60 List<Node> nodeList = new ArrayList<>();
61 nodeList.add(createChildNode("foo"));
62 nodeList.add(createChildNode("bar"));
64 nodes.setNode(nodeList);
65 Nodes nodesTO = nodes.build();
66 CompositeNode xmlNodes = service.toDataDom(nodesTO);
67 assertNotNull(xmlNodes);
68 List<CompositeNode> invNodes = xmlNodes.getCompositesByName(NODE);
69 assertNotNull(invNodes);
70 assertEquals(2, invNodes.size());
74 public void instanceIdentifierTest() throws Exception {
76 String[] yangFiles = AbstractDataServiceTest.getModelFilenamesImpl();
77 SchemaContext ctx = AbstractDataServiceTest.getContext(yangFiles);
78 impl.onGlobalContextUpdated(ctx);
80 NodeKey nodeKey = new NodeKey(new NodeId("foo"));
81 InstanceIdentifier<Node> path = InstanceIdentifier.builder().node(Nodes.class).child(Node.class, nodeKey).toInstance();
82 org.opendaylight.yangtools.yang.data.api.InstanceIdentifier result = service.toDataDom(path);
83 assertNotNull(result);
84 assertEquals(2, result.getPath().size());
87 private Node createChildNode(String id) {
88 NodeBuilder node = new NodeBuilder();
89 NodeId nodeId = new NodeId(id);
92 node.setKey(new NodeKey(nodeId));
94 FlowCapableNodeBuilder aug = new FlowCapableNodeBuilder();
95 aug.setManufacturer(id);
96 node.addAugmentation(FlowCapableNode.class, aug.build());