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
10 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 * SPDX-License-Identifier: Apache-2.0
19 * ============LICENSE_END=========================================================
21 package org.oran.smo.yangtools.parser.model.statements.yang.test;
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;
29 import java.util.Arrays;
30 import java.util.List;
32 import org.junit.Test;
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;
52 public class ModuleTest extends YangTestCommon {
55 public void testIdentity() {
57 severityCalculator.suppressFinding(ParserFindingType.P133_GROUPING_USED_ONCE_ONLY.toString());
59 parseRelativeImplementsYangModels(Arrays.asList("module-test/module-test.yang"));
63 final YModule yModule = getModule("module-test");
64 assertNotNull(yModule);
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());
73 final YYangVersion yYangVersion = yModule.getYangVersion();
74 assertNotNull(yYangVersion);
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());
83 final YNamespace yNamespace = yModule.getNamespace();
84 assertNotNull(yNamespace);
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());
92 final YPrefix yPrefix = yModule.getPrefix();
93 assertNotNull(yPrefix);
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());
101 final YContact yContact = yModule.getContact();
102 assertNotNull(yContact);
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());
110 final YOrganization yOrganization = yModule.getOrganization();
111 assertNotNull(yOrganization);
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());
119 final YDescription yDescription = yModule.getDescription();
120 assertNotNull(yDescription);
122 assertEquals(StatementArgumentType.TEXT, yDescription.getArgumentType());
123 assertEquals(CY.STMT_DESCRIPTION, yDescription.getStatementModuleAndName());
124 assertTrue(yDescription.getValue().startsWith("some description"));
126 yDescription.getDescription();
127 fail("Should have thrown.");
128 } catch (final Exception expected) {
130 assertFalse(yDescription.definesDataNode());
131 assertFalse(yDescription.definesSchemaNode());
133 final List<YExtension> yExtensions = yModule.getExtensions();
134 assertEquals(2, yExtensions.size());
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());
145 final YArgument yArgument = yExtensions.get(0).getArgument();
146 assertNotNull(yArgument);
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());
154 final YYinElement yYinElement = yArgument.getYinElement();
155 assertNotNull(yYinElement);
157 assertEquals(StatementArgumentType.VALUE, yYinElement.getArgumentType());
158 assertEquals(CY.STMT_YIN_ELEMENT, yYinElement.getStatementModuleAndName());
159 assertFalse(yYinElement.definesDataNode());
160 assertFalse(yYinElement.definesSchemaNode());
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());
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());
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());