Xml -> Composite node test
[controller.git] / opendaylight / md-sal / sal-rest-connector / src / test / java / org / opendaylight / controller / sal / restconf / impl / test / FromXmlToCompositeNode.java
1 package org.opendaylight.controller.sal.restconf.impl.test;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertNotNull;
5 import static org.junit.Assert.assertTrue;
6
7 import java.io.*;
8
9 import javax.ws.rs.WebApplicationException;
10
11 import org.junit.Test;
12 import org.opendaylight.controller.sal.rest.impl.XmlToCompositeNodeProvider;
13 import org.opendaylight.yangtools.yang.data.api.*;
14 import org.slf4j.*;
15
16 public class FromXmlToCompositeNode {
17     Logger LOG = LoggerFactory.getLogger(FromXmlToCompositeNode.class);
18
19     /**
20      * top level element represents container. second level element is list with
21      * two elements.
22      */
23     @Test
24     public void testXmlDataContainer() {
25         CompositeNode compNode = compositeContainerFromXml("/xml-to-composite-node/data-container.xml");
26         verifyCommonPartAOfXml(compNode, "");
27     }
28
29     @Test
30     public void testXmlDataList() {
31         CompositeNode compNode = compositeContainerFromXml("/xml-to-composite-node/data-list.xml");
32         assertNotNull(compNode);
33         assertEquals("cont", compNode.getNodeType().getLocalName());
34         assertEquals(2, compNode.getChildren().size());
35         CompositeNode lst1_1 = null;
36         CompositeNode lst1_2 = null;
37         int loopCount = 0;
38         for (Node<?> node : compNode.getChildren()) {
39             assertTrue(node instanceof CompositeNode);
40             switch (loopCount++) {
41             case 0:
42                 lst1_1 = (CompositeNode) node;
43                 break;
44             case 1:
45                 lst1_2 = (CompositeNode) node;
46                 break;
47             }
48
49         }
50         // lst1_1
51         verifyCommonPartAOfXml(lst1_1, "1");
52         // :lst1_1
53
54         // lst1_2
55         SimpleNode<?> lflst11 = null;
56         CompositeNode cont11 = null;
57         for (Node<?> node : lst1_2.getChildren()) {
58             String nodeName = node.getNodeType().getLocalName();
59             if (nodeName.equals("lflst11")) {
60                 assertTrue(node instanceof SimpleNode<?>);
61                 lflst11 = (SimpleNode<?>) node;
62
63             } else if (nodeName.equals("cont11")) {
64                 assertTrue(node instanceof CompositeNode);
65                 cont11 = (CompositeNode) node;
66             }
67         }
68         assertEquals("221", lflst11.getValue());
69
70         assertEquals(1, cont11.getChildren().size());
71         assertTrue(cont11.getChildren().get(0) instanceof SimpleNode<?>);
72         SimpleNode<?> cont11_lf111 = (SimpleNode<?>) cont11.getChildren().get(0);
73         assertEquals("lf111", cont11_lf111.getNodeType().getLocalName());
74         assertEquals("100", cont11_lf111.getValue());
75         // :lst1_2
76
77     }
78
79     @Test
80     public void testXmlEmptyData() {
81         CompositeNode compNode = compositeContainerFromXml("/xml-to-composite-node/empty-data.xml");
82         assertEquals("cont", compNode.getNodeType().getLocalName());
83         SimpleNode<?> lf1 = null;
84         SimpleNode<?> lflst1_1 = null;
85         SimpleNode<?> lflst1_2 = null;
86         CompositeNode lst1 = null;
87         int lflst1Count = 0;
88         for (Node<?> node : compNode.getChildren()) {
89             if (node.getNodeType().getLocalName().equals("lf1")) {
90                 assertTrue(node instanceof SimpleNode<?>);
91                 lf1 = (SimpleNode<?>) node;
92             } else if (node.getNodeType().getLocalName().equals("lflst1")) {
93                 assertTrue(node instanceof SimpleNode<?>);
94
95                 switch (lflst1Count++) {
96                 case 0:
97                     lflst1_1 = (SimpleNode<?>) node;
98                     break;
99                 case 1:
100                     lflst1_2 = (SimpleNode<?>) node;
101                     break;
102                 }
103             } else if (node.getNodeType().getLocalName().equals("lst1")) {
104                 assertTrue(node instanceof CompositeNode);
105                 lst1 = (CompositeNode) node;
106             }
107         }
108
109         assertNotNull(lf1);
110         assertNotNull(lflst1_1);
111         assertNotNull(lflst1_2);
112         assertNotNull(lst1);
113
114         assertEquals("", lf1.getValue());
115         assertEquals("", lflst1_1.getValue());
116         assertEquals("", lflst1_2.getValue());
117         assertEquals(1, lst1.getChildren().size());
118         assertEquals("lf11", lst1.getChildren().get(0).getNodeType().getLocalName());
119
120         assertTrue(lst1.getChildren().get(0) instanceof SimpleNode<?>);
121         assertEquals("", lst1.getChildren().get(0).getValue());
122
123     }
124
125     private void verifyCommonPartAOfXml(CompositeNode compNode, String suf) {
126         SimpleNode<?> lf1suf = null;
127         SimpleNode<?> lflst1suf_1 = null;
128         SimpleNode<?> lflst1suf_2 = null;
129         SimpleNode<?> lflst1suf_3 = null;
130         CompositeNode cont1suf = null;
131         CompositeNode lst1suf = null;
132
133         int lflstCount = 0;
134
135         for (Node<?> node : compNode.getChildren()) {
136             String localName = node.getNodeType().getLocalName();
137             if (localName.equals("lf1" + suf)) {
138                 assertTrue(node instanceof SimpleNode<?>);
139                 lf1suf = (SimpleNode<?>) node;
140             } else if (localName.equals("lflst1" + suf)) {
141                 assertTrue(node instanceof SimpleNode<?>);
142                 switch (lflstCount++) {
143                 case 0:
144                     lflst1suf_1 = (SimpleNode<?>) node;
145                     break;
146                 case 1:
147                     lflst1suf_2 = (SimpleNode<?>) node;
148                     break;
149                 case 2:
150                     lflst1suf_3 = (SimpleNode<?>) node;
151                     break;
152                 }
153             } else if (localName.equals("lst1" + suf)) {
154                 assertTrue(node instanceof CompositeNode);
155                 lst1suf = (CompositeNode) node;
156             } else if (localName.equals("cont1" + suf)) {
157                 assertTrue(node instanceof CompositeNode);
158                 cont1suf = (CompositeNode) node;
159             }
160         }
161         assertNotNull(lf1suf);
162         assertNotNull(lflst1suf_1);
163         assertNotNull(lflst1suf_2);
164         assertNotNull(lflst1suf_3);
165         assertNotNull(lst1suf);
166         assertNotNull(cont1suf);
167
168         assertEquals("str0", lf1suf.getValue());
169         assertEquals("121", lflst1suf_1.getValue());
170         assertEquals("131", lflst1suf_2.getValue());
171         assertEquals("str1", lflst1suf_3.getValue());
172
173         assertEquals(1, lst1suf.getChildren().size());
174
175         assertTrue(lst1suf.getChildren().get(0) instanceof SimpleNode<?>);
176         SimpleNode<?> lst11_lf11 = (SimpleNode<?>) lst1suf.getChildren().get(0);
177         assertEquals("lf11" + suf, lst11_lf11.getNodeType().getLocalName());
178         assertEquals("str2", lst11_lf11.getValue());
179
180         assertTrue(cont1suf.getChildren().get(0) instanceof SimpleNode<?>);
181         SimpleNode<?> cont1_lf11 = (SimpleNode<?>) cont1suf.getChildren().get(0);
182         assertEquals("lf11" + suf, cont1_lf11.getNodeType().getLocalName());
183         assertEquals("100", cont1_lf11.getValue());
184     }
185
186     private CompositeNode compositeContainerFromXml(String xmlPath) {
187         XmlToCompositeNodeProvider xmlToCompositeNodeProvider = XmlToCompositeNodeProvider.INSTANCE;
188         try {
189             InputStream xmlStream = FromXmlToCompositeNode.class.getResourceAsStream(xmlPath);
190             return xmlToCompositeNodeProvider.readFrom(null, null, null, null, null, xmlStream);
191         } catch (WebApplicationException | IOException e) {
192             LOG.error(e.getMessage());
193             assertTrue(false);
194         }
195         return null;
196     }
197
198 }