Merge "Yang parser refactoring."
[yangtools.git] / yang / yang-parser-impl / src / test / java / org / opendaylight / yangtools / yang / parser / util / RefineHolderTest.java
1 package org.opendaylight.yangtools.yang.parser.util;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertFalse;
5 import static org.junit.Assert.assertNotNull;
6 import static org.junit.Assert.assertTrue;
7
8 import java.net.URI;
9 import java.net.URISyntaxException;
10 import java.util.ArrayList;
11 import java.util.Date;
12 import java.util.List;
13
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.opendaylight.yangtools.yang.common.QName;
17 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
18 import org.opendaylight.yangtools.yang.parser.builder.impl.UnknownSchemaNodeBuilder;
19
20 public class RefineHolderTest {
21
22     private RefineHolder rh;
23     private RefineHolder rh1;
24
25     @Before
26     public void init() {
27         rh = new RefineHolder("module", 2104, "name");
28         rh1 = new RefineHolder("module", 2104, "name");
29     }
30
31
32     @Test
33     public void testRefineEquality() {
34         // hashCode method test
35         assertEquals("rh should equals to itsefl", rh, rh);
36         assertFalse("rh shouldn't equal to null", rh.equals(null));
37         assertFalse("rh shouldn't equal to object of other type", rh.equals(new String("str")));
38
39         assertEquals("rh1 should equals to rh", rh, rh1);
40
41         RefineHolder rh2 = new RefineHolder("module", 2104, null);
42         assertFalse("rh shouldn't equal to rh2", rh2.equals(rh1));
43         rh2 = new RefineHolder("module", 2104, "name2");
44         assertFalse("rh shouldn't equal to rh2", rh.equals(rh2));
45
46         assertEquals("Wrong hash code", 1557537141, rh.hashCode());
47     }
48
49     @Test
50     public void testConfigurationEqualsBranch() {
51         assertEquals("rh should equal to rh1", rh, rh1);
52         rh1.setConfiguration(false);
53         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
54         rh.setConfiguration(false);
55         assertEquals("rh should equal to rh1", rh, rh1);
56         rh.setConfiguration(true);
57         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
58         rh1.setConfiguration(true);
59     }
60
61     @Test
62     public void testDefaultStrEqualsBranch() {
63         assertEquals("rh should equal to rh1", rh, rh1);
64         rh1.setDefaultStr("default string1");
65         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
66         rh.setDefaultStr("default string1");
67         assertEquals("rh should equal to rh1", rh, rh1);
68         rh.setDefaultStr("default string");
69         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
70         rh1.setDefaultStr("default string");
71     }
72
73     @Test
74     public void testDescriptionEqualsBranch() {
75         assertEquals("rh should equal to rh1", rh, rh1);
76         rh1.setDescription("description1");
77         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
78         rh.setDescription("description1");
79         assertEquals("rh should equal to rh1", rh, rh1);
80         rh.setDescription("description");
81         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
82         rh1.setDescription("description");
83     }
84
85     @Test
86     public void testMandatoryEqualsBranch() {
87         assertEquals("rh should equal to rh1", rh, rh1);
88         rh1.setMandatory(false);
89         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
90         rh.setMandatory(false);
91         assertEquals("rh should equal to rh1", rh, rh1);
92         rh.setMandatory(true);
93         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
94         rh1.setMandatory(true);
95     }
96
97     @Test
98     public void testMaxElementsEqualsBranch() {
99         assertEquals("rh should equal to rh1", rh, rh1);
100         rh1.setMaxElements(5400);
101         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
102         rh.setMaxElements(5400);
103         assertEquals("rh should equal to rh1", rh, rh1);
104         rh.setMaxElements(5435);
105         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
106         rh1.setMaxElements(5435);
107     }
108
109     @Test
110     public void testMinElementsEqualsBranch() {
111         assertEquals("rh should equal to rh1", rh, rh1);
112         rh1.setMinElements(16);
113         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
114         rh.setMinElements(16);
115         assertEquals("rh should equal to rh1", rh, rh1);
116         rh.setMinElements(159);
117         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
118         rh1.setMinElements(159);
119     }
120
121     @Test
122     public void testMustEqualsBranch() {
123         assertEquals("rh should equal to rh1", rh, rh1);
124         rh1.setMust(new MustDefinitionImpl("mustStr1", "description1", "reference1", "errorAppTag1", "errorMessage1"));
125         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
126         rh.setMust(new MustDefinitionImpl("mustStr1", "description1", "reference1", "errorAppTag1", "errorMessage1"));
127         assertEquals("rh should equal to rh1", rh, rh1);
128         rh.setMust(new MustDefinitionImpl("mustStr", "description", "reference", "errorAppTag", "errorMessage"));
129         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
130         rh1.setMust(new MustDefinitionImpl("mustStr", "description", "reference", "errorAppTag", "errorMessage"));
131     }
132
133     @Test
134     public void testPresenceEqualsBranch() {
135         assertEquals("rh should equal to rh1", rh, rh1);
136         rh1.setPresence(false);
137         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
138         rh.setPresence(false);
139         assertEquals("rh should equal to rh1", rh, rh1);
140         rh.setPresence(true);
141         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
142         rh1.setPresence(true);
143     }
144
145     @Test
146     public void testReferenceEqualsBranch() {
147         assertEquals("rh should equal to rh1", rh, rh1);
148         rh1.setReference("reference1");
149         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
150         rh.setReference("reference1");
151         assertEquals("rh should equal to rh1", rh, rh1);
152         rh.setReference("reference");
153         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
154         rh1.setReference("reference");
155     }
156
157     private URI getUri(String uri) {
158         URI simpleUri = null;
159         boolean instantionated = false;
160         try {
161             simpleUri = new URI(uri);
162             instantionated = true;
163         } catch (URISyntaxException e1) {
164             e1.printStackTrace();
165             assertTrue("Uri instance wasn't created.", instantionated);
166         }
167         return simpleUri;
168     }
169
170     @Test
171     public void testAddUnknownNodeBuilderEqualsBranch() {
172         URI simpleUri = null;
173         simpleUri = getUri("very:simple:URI");
174         assertNotNull("URI can't be null", simpleUri);
175
176         URI uriA = getUri("some:uriA");
177         assertNotNull("URI can't be null", simpleUri);
178         QName qnameA = new QName(uriA, new Date(5000000), "some nameA");
179         QName qnameB = new QName(uriA, new Date(6000000), "some nameB");
180         List<QName> qnamesA = new ArrayList<>();
181         List<QName> qnamesB = new ArrayList<>();
182         qnamesA.add(qnameA);
183         qnamesB.add(qnameB);
184         SchemaPath schemaPathB = new SchemaPath(qnamesB, true);
185
186         UnknownSchemaNodeBuilder usnb = new UnknownSchemaNodeBuilder("usnb", 151, new QName(simpleUri, "tst"), schemaPathB);
187         UnknownSchemaNodeBuilder usnb1 = new UnknownSchemaNodeBuilder("usnb", 151, new QName(simpleUri, "tst"), schemaPathB);
188
189         assertEquals("rh should equal to rh1", rh, rh1);
190         rh1.addUnknownNodeBuilder(usnb);
191         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
192         rh.addUnknownNodeBuilder(usnb1);
193         assertEquals("rh should equal to rh1", rh, rh1);
194     }
195
196     @Test
197     public void testParentEqualsBranch() {
198         URI simpleUriA = getUri("very:simple:URI:a");
199         URI simpleUriB = getUri("very:simple:URI:b");
200
201         SchemaPath path = org.mockito.Mockito.mock(SchemaPath.class);
202
203         UnknownSchemaNodeBuilder usnbA = new UnknownSchemaNodeBuilder("usnbA", 151, new QName(simpleUriA, "tst"), path);
204         UnknownSchemaNodeBuilder usnbB = new UnknownSchemaNodeBuilder("usnbB", 151, new QName(simpleUriB, "tst"), path);
205         UnknownSchemaNodeBuilder usnbAParent = new UnknownSchemaNodeBuilder("usnbAParent", 151, new QName(simpleUriA,
206                 "tst"), path);
207         usnbA.setParent(usnbAParent);
208
209         assertEquals("rh should equal to rh1", rh, rh1);
210         rh1.setParent(usnbB);
211         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
212         rh.setParent(usnbB);
213         assertEquals("rh should equal to rh1", rh, rh1);
214         rh.setParent(usnbA);
215         assertFalse("rh shouldn't equal to rh1", rh.equals(rh1));
216         rh1.setParent(usnbA);
217
218         assertEquals("rh should equal to rh1", rh, rh1);
219     }
220
221 }