2364d1a68a43e0da22337bf2256827ce16aecde1
[smo/teiv.git] /
1 /*
2  *  ============LICENSE_START=======================================================
3  *  Copyright (C) 2024 Ericsson
4  *  Modifications Copyright (C) 2024 OpenInfra Foundation Europe
5  *  ================================================================================
6  *  Licensed under the Apache License, Version 2.0 (the "License");
7  *  you may not use this file except in compliance with the License.
8  *  You may obtain a copy of the License at
9  *
10  *        http://www.apache.org/licenses/LICENSE-2.0
11  *
12  *  Unless required by applicable law or agreed to in writing, software
13  *  distributed under the License is distributed on an "AS IS" BASIS,
14  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  *  See the License for the specific language governing permissions and
16  *  limitations under the License.
17  *
18  *  SPDX-License-Identifier: Apache-2.0
19  *  ============LICENSE_END=========================================================
20  */
21 package org.oran.smo.yangtools.parser.model.schema.test;
22
23 import static org.junit.Assert.assertTrue;
24
25 import java.util.Arrays;
26 import java.util.Collections;
27 import java.util.List;
28 import java.util.Set;
29
30 import org.junit.Test;
31
32 import org.oran.smo.yangtools.parser.model.schema.IdentityRegistry;
33 import org.oran.smo.yangtools.parser.model.util.YangIdentity;
34 import org.oran.smo.yangtools.parser.testutils.YangTestCommon;
35
36 public class IdentityRegistryTest extends YangTestCommon {
37
38     @Test
39     public void test_all_modules() {
40
41         final List<String> absoluteImplementsFilePath = Arrays.asList(
42                 "src/test/resources/model-schema/identity-registry-test/module1.yang",
43                 "src/test/resources/model-schema/identity-registry-test/module2.yang",
44                 "src/test/resources/model-schema/identity-registry-test/module3.yang",
45                 "src/test/resources/model-schema/identity-registry-test/submodule4.yang");
46         final List<String> absoluteImportsFilePath = Collections.<String> emptyList();
47
48         parseAbsoluteYangModels(absoluteImplementsFilePath, absoluteImportsFilePath);
49
50         assertNoFindings();
51
52         final IdentityRegistry identityRegistry = yangDeviceModel.getTopLevelSchema().getIdentityRegistry();
53
54         // ---- module 1 ---- bases ------
55
56         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity11"))
57                 .size() == 0);
58         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity12"))
59                 .size() == 0);
60         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity13"))
61                 .size() == 0);
62
63         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity14"))
64                 .size() == 3);
65         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity14")).contains(
66                 new YangIdentity("test:module1", "module1", "identity11")));
67         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity14")).contains(
68                 new YangIdentity("test:module1", "module1", "identity12")));
69         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity14")).contains(
70                 new YangIdentity("test:module1", "module1", "identity13")));
71
72         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity15"))
73                 .size() == 1);
74         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity15")).contains(
75                 new YangIdentity("test:module1", "module1", "identity14")));
76
77         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity61"))
78                 .size() == 2);
79         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity61")).contains(
80                 new YangIdentity("test:module1", "module1", "identity14")));
81         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity61")).contains(
82                 new YangIdentity("test:module1", "module1", "identity42")));
83
84         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity99"))
85                 .size() == 1);
86         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity99")).contains(
87                 new YangIdentity("test:module2", "module2", "identity99")));
88
89         // ---- module 2 ---- bases ------
90
91         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module2", "module2", "identity21"))
92                 .size() == 0);
93
94         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module2", "module2", "identity22"))
95                 .size() == 1);
96         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module2", "module2", "identity22")).contains(
97                 new YangIdentity("test:module2", "module2", "identity21")));
98
99         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module2", "module2", "identity23"))
100                 .size() == 1);
101         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module2", "module2", "identity23")).contains(
102                 new YangIdentity("test:module1", "module1", "identity11")));
103
104         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module2", "module2", "identity99"))
105                 .size() == 0);
106
107         // ---- module 3 ---- bases ------
108
109         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module3", "module3", "identity31"))
110                 .size() == 0);
111
112         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module3", "module3", "identity32"))
113                 .size() == 1);
114         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module3", "module3", "identity32")).contains(
115                 new YangIdentity("test:module3", "module3", "identity31")));
116
117         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module3", "module3", "identity33"))
118                 .size() == 1);
119         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module3", "module3", "identity33")).contains(
120                 new YangIdentity("test:module2", "module2", "identity21")));
121
122         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module3", "module3", "identity99"))
123                 .size() == 0);
124
125         // ---- submodule 4 ---- bases ------
126
127         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity41"))
128                 .size() == 0);
129         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity42"))
130                 .size() == 0);
131
132         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity43"))
133                 .size() == 2);
134         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity43")).contains(
135                 new YangIdentity("test:module1", "module1", "identity41")));
136         assertTrue(identityRegistry.getBasesForIdentity(new YangIdentity("test:module1", "module1", "identity43")).contains(
137                 new YangIdentity("test:module1", "module1", "identity42")));
138
139         // ---- module 1 ---- derivates ------
140
141         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity11"))
142                 .size() == 2);
143         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity11"))
144                 .contains(new YangIdentity("test:module1", "module1", "identity14")));
145         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity11"))
146                 .contains(new YangIdentity("test:module2", "module2", "identity23")));
147
148         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity12"))
149                 .size() == 1);
150         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity12"))
151                 .contains(new YangIdentity("test:module1", "module1", "identity14")));
152
153         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity13"))
154                 .size() == 1);
155         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity13"))
156                 .contains(new YangIdentity("test:module1", "module1", "identity14")));
157
158         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity14"))
159                 .size() == 2);
160         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity14"))
161                 .contains(new YangIdentity("test:module1", "module1", "identity15")));
162         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity14"))
163                 .contains(new YangIdentity("test:module1", "module1", "identity61")));
164
165         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity15"))
166                 .size() == 0);
167
168         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity61"))
169                 .size() == 0);
170
171         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity99"))
172                 .size() == 0);
173
174         // ---- module 2 ---- derivates ------
175
176         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module2", "module2", "identity21"))
177                 .size() == 2);
178         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module2", "module2", "identity21"))
179                 .contains(new YangIdentity("test:module2", "module2", "identity22")));
180         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module2", "module2", "identity21"))
181                 .contains(new YangIdentity("test:module3", "module3", "identity33")));
182
183         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module2", "module2", "identity22"))
184                 .size() == 0);
185
186         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module2", "module2", "identity23"))
187                 .size() == 0);
188
189         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module2", "module2", "identity99"))
190                 .size() == 1);
191         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module2", "module2", "identity99"))
192                 .contains(new YangIdentity("test:module1", "module1", "identity99")));
193
194         // ---- module 3 ---- derivates ------
195
196         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module3", "module3", "identity31"))
197                 .size() == 1);
198         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module3", "module3", "identity31"))
199                 .contains(new YangIdentity("test:module3", "module3", "identity32")));
200
201         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module3", "module3", "identity32"))
202                 .size() == 0);
203
204         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module3", "module3", "identity33"))
205                 .size() == 0);
206
207         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module3", "module3", "identity99"))
208                 .size() == 0);
209
210         // ---- submodule 4 ---- derivates ------
211
212         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity41"))
213                 .size() == 1);
214         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity41"))
215                 .contains(new YangIdentity("test:module1", "module1", "identity43")));
216
217         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity42"))
218                 .size() == 2);
219         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity42"))
220                 .contains(new YangIdentity("test:module1", "module1", "identity43")));
221         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity42"))
222                 .contains(new YangIdentity("test:module1", "module1", "identity61")));
223
224         assertTrue(identityRegistry.getDerivatesOfIdentity(new YangIdentity("test:module1", "module1", "identity43"))
225                 .size() == 0);
226
227         // ---------------- check the derived trees ---------------
228
229         Set<YangIdentity> identityAndDerivedIdentities = identityRegistry.getIdentityAndDerivedIdentitiesRecursively(
230                 new YangIdentity("test:module1", "module1", "identity11"));
231
232         assertTrue(identityAndDerivedIdentities.contains(new YangIdentity("test:module1", "module1", "identity11")));
233         assertTrue(identityAndDerivedIdentities.contains(new YangIdentity("test:module1", "module1", "identity14")));
234         assertTrue(identityAndDerivedIdentities.contains(new YangIdentity("test:module1", "module1", "identity15")));
235         assertTrue(identityAndDerivedIdentities.contains(new YangIdentity("test:module1", "module1", "identity61")));
236         assertTrue(identityAndDerivedIdentities.contains(new YangIdentity("test:module2", "module2", "identity23")));
237         assertTrue(identityAndDerivedIdentities.size() == 5);
238
239         identityAndDerivedIdentities = identityRegistry.getIdentityAndDerivedIdentitiesRecursively(new YangIdentity(
240                 "test:module1", "module1", "identity12"));
241
242         assertTrue(identityAndDerivedIdentities.contains(new YangIdentity("test:module1", "module1", "identity12")));
243         assertTrue(identityAndDerivedIdentities.contains(new YangIdentity("test:module1", "module1", "identity14")));
244         assertTrue(identityAndDerivedIdentities.contains(new YangIdentity("test:module1", "module1", "identity15")));
245         assertTrue(identityAndDerivedIdentities.contains(new YangIdentity("test:module1", "module1", "identity61")));
246         assertTrue(identityAndDerivedIdentities.size() == 4);
247
248         identityAndDerivedIdentities = identityRegistry.getIdentityAndDerivedIdentitiesRecursively(new YangIdentity(
249                 "unknown-namespace", "unknown-module", "unknown-identity"));
250         assertTrue(identityAndDerivedIdentities.size() == 0);
251     }
252
253 }