320a174e1447c1a5a2a907e15a0ca2fdbbfb3f6e
[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.statements.yang.test;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertNotNull;
26 import static org.junit.Assert.assertTrue;
27 import static org.junit.Assert.fail;
28
29 import java.util.Arrays;
30 import java.util.List;
31
32 import org.junit.Test;
33
34 import org.oran.smo.yangtools.parser.findings.ParserFindingType;
35 import org.oran.smo.yangtools.parser.model.statements.AbstractStatement.StatementArgumentType;
36 import org.oran.smo.yangtools.parser.model.statements.yang.CY;
37 import org.oran.smo.yangtools.parser.model.statements.yang.YAnydata;
38 import org.oran.smo.yangtools.parser.model.statements.yang.YAnyxml;
39 import org.oran.smo.yangtools.parser.model.statements.yang.YArgument;
40 import org.oran.smo.yangtools.parser.model.statements.yang.YContact;
41 import org.oran.smo.yangtools.parser.model.statements.yang.YDescription;
42 import org.oran.smo.yangtools.parser.model.statements.yang.YExtension;
43 import org.oran.smo.yangtools.parser.model.statements.yang.YGrouping;
44 import org.oran.smo.yangtools.parser.model.statements.yang.YModule;
45 import org.oran.smo.yangtools.parser.model.statements.yang.YNamespace;
46 import org.oran.smo.yangtools.parser.model.statements.yang.YOrganization;
47 import org.oran.smo.yangtools.parser.model.statements.yang.YPrefix;
48 import org.oran.smo.yangtools.parser.model.statements.yang.YYangVersion;
49 import org.oran.smo.yangtools.parser.model.statements.yang.YYinElement;
50 import org.oran.smo.yangtools.parser.testutils.YangTestCommon;
51
52 public class ModuleTest extends YangTestCommon {
53
54     @Test
55     public void testIdentity() {
56
57         severityCalculator.suppressFinding(ParserFindingType.P133_GROUPING_USED_ONCE_ONLY.toString());
58
59         parseRelativeImplementsYangModels(Arrays.asList("module-test/module-test.yang"));
60
61         assertNoFindings();
62
63         final YModule yModule = getModule("module-test");
64         assertNotNull(yModule);
65
66         assertEquals(StatementArgumentType.NAME, yModule.getArgumentType());
67         assertEquals(CY.STMT_MODULE, yModule.getStatementModuleAndName());
68         assertEquals("module-test", yModule.getModuleName());
69         assertEquals("module-test", yModule.getStatementIdentifier());
70         assertFalse(yModule.definesDataNode());
71         assertFalse(yModule.definesSchemaNode());
72
73         final YYangVersion yYangVersion = yModule.getYangVersion();
74         assertNotNull(yYangVersion);
75
76         assertEquals(StatementArgumentType.VALUE, yYangVersion.getArgumentType());
77         assertEquals(CY.STMT_YANG_VERSION, yYangVersion.getStatementModuleAndName());
78         assertFalse(yYangVersion.is10Version());
79         assertTrue(yYangVersion.is11Version());
80         assertFalse(yYangVersion.definesDataNode());
81         assertFalse(yYangVersion.definesSchemaNode());
82
83         final YNamespace yNamespace = yModule.getNamespace();
84         assertNotNull(yNamespace);
85
86         assertEquals(StatementArgumentType.URI, yNamespace.getArgumentType());
87         assertEquals(CY.STMT_NAMESPACE, yNamespace.getStatementModuleAndName());
88         assertEquals("test:module-test", yNamespace.getNamespace());
89         assertFalse(yNamespace.definesDataNode());
90         assertFalse(yNamespace.definesSchemaNode());
91
92         final YPrefix yPrefix = yModule.getPrefix();
93         assertNotNull(yPrefix);
94
95         assertEquals(StatementArgumentType.VALUE, yPrefix.getArgumentType());
96         assertEquals(CY.STMT_PREFIX, yPrefix.getStatementModuleAndName());
97         assertEquals("this", yPrefix.getPrefix());
98         assertFalse(yPrefix.definesDataNode());
99         assertFalse(yPrefix.definesSchemaNode());
100
101         final YContact yContact = yModule.getContact();
102         assertNotNull(yContact);
103
104         assertEquals(StatementArgumentType.TEXT, yContact.getArgumentType());
105         assertEquals(CY.STMT_CONTACT, yContact.getStatementModuleAndName());
106         assertEquals("test-user", yContact.getValue());
107         assertFalse(yContact.definesDataNode());
108         assertFalse(yContact.definesSchemaNode());
109
110         final YOrganization yOrganization = yModule.getOrganization();
111         assertNotNull(yOrganization);
112
113         assertEquals(StatementArgumentType.TEXT, yOrganization.getArgumentType());
114         assertEquals(CY.STMT_ORGANIZATION, yOrganization.getStatementModuleAndName());
115         assertEquals("ORAN", yOrganization.getValue());
116         assertFalse(yOrganization.definesDataNode());
117         assertFalse(yOrganization.definesSchemaNode());
118
119         final YDescription yDescription = yModule.getDescription();
120         assertNotNull(yDescription);
121
122         assertEquals(StatementArgumentType.TEXT, yDescription.getArgumentType());
123         assertEquals(CY.STMT_DESCRIPTION, yDescription.getStatementModuleAndName());
124         assertTrue(yDescription.getValue().startsWith("some description"));
125         try {
126             yDescription.getDescription();
127             fail("Should have thrown.");
128         } catch (final Exception expected) {
129         }
130         assertFalse(yDescription.definesDataNode());
131         assertFalse(yDescription.definesSchemaNode());
132
133         final List<YExtension> yExtensions = yModule.getExtensions();
134         assertEquals(2, yExtensions.size());
135
136         assertEquals(StatementArgumentType.NAME, yExtensions.get(0).getArgumentType());
137         assertEquals(CY.STMT_EXTENSION, yExtensions.get(0).getStatementModuleAndName());
138         assertEquals("my-extension1", yExtensions.get(0).getExtensionName());
139         assertEquals("my-extension1", yExtensions.get(0).getStatementIdentifier());
140         assertTrue(yExtensions.get(0).getStatus().isDeprecated());
141         assertFalse(yExtensions.get(0).definesDataNode());
142         assertFalse(yExtensions.get(0).definesSchemaNode());
143         assertEquals("my-extension2", yExtensions.get(1).getExtensionName());
144
145         final YArgument yArgument = yExtensions.get(0).getArgument();
146         assertNotNull(yArgument);
147
148         assertEquals(StatementArgumentType.NAME, yArgument.getArgumentType());
149         assertEquals(CY.STMT_ARGUMENT, yArgument.getStatementModuleAndName());
150         assertEquals("some-arg", yArgument.getArgumentName());
151         assertFalse(yArgument.definesDataNode());
152         assertFalse(yArgument.definesSchemaNode());
153
154         final YYinElement yYinElement = yArgument.getYinElement();
155         assertNotNull(yYinElement);
156
157         assertEquals(StatementArgumentType.VALUE, yYinElement.getArgumentType());
158         assertEquals(CY.STMT_YIN_ELEMENT, yYinElement.getStatementModuleAndName());
159         assertFalse(yYinElement.definesDataNode());
160         assertFalse(yYinElement.definesSchemaNode());
161
162         final List<YAnydata> yAnydatas = yModule.getAnydata();
163         assertEquals(2, yAnydatas.size());
164         assertEquals("anydata1", yAnydatas.get(0).getName());
165         assertEquals("anydata2", yAnydatas.get(1).getName());
166
167         final List<YAnyxml> yAnyxmls = yModule.getAnyxmls();
168         assertEquals(2, yAnyxmls.size());
169         assertEquals("anyxml1", yAnyxmls.get(0).getName());
170         assertEquals("anyxml2", yAnyxmls.get(1).getName());
171
172         final List<YGrouping> yGrouping = yModule.getGroupings();
173         assertEquals(2, yGrouping.size());
174         assertEquals("grouping1", yGrouping.get(0).getGroupingName());
175         assertEquals("grouping2", yGrouping.get(1).getGroupingName());
176
177     }
178 }