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.util.test;
23 import static org.junit.Assert.assertTrue;
25 import java.util.Arrays;
26 import java.util.List;
28 import org.junit.Test;
30 import org.oran.smo.yangtools.parser.model.util.GrammarHelper;
32 public class GrammarHelperTest {
35 public void test_contains_yang_whitespace() {
37 assertTrue(GrammarHelper.containsYangWhitespace(null) == false);
38 assertTrue(GrammarHelper.containsYangWhitespace("") == false);
40 assertTrue(GrammarHelper.containsYangWhitespace(" ") == true);
41 assertTrue(GrammarHelper.containsYangWhitespace("\t") == true);
43 assertTrue(GrammarHelper.containsYangWhitespace("Hello World!") == true);
44 assertTrue(GrammarHelper.containsYangWhitespace(" HelloWorld!") == true);
45 assertTrue(GrammarHelper.containsYangWhitespace("HelloWorld! ") == true);
46 assertTrue(GrammarHelper.containsYangWhitespace("HelloWorld!") == false);
48 assertTrue(GrammarHelper.containsYangWhitespace("Hello\tWorld!") == true);
49 assertTrue(GrammarHelper.containsYangWhitespace("\tHelloWorld!") == true);
50 assertTrue(GrammarHelper.containsYangWhitespace("HelloWorld!\t") == true);
54 public void test_is_yang_identifier() {
56 assertTrue(GrammarHelper.isYangIdentifier(null) == false);
57 assertTrue(GrammarHelper.isYangIdentifier("") == false);
58 assertTrue(GrammarHelper.isYangIdentifier(" ") == false);
59 assertTrue(GrammarHelper.isYangIdentifier("\t") == false);
61 assertTrue(GrammarHelper.isYangIdentifier("_") == true);
62 assertTrue(GrammarHelper.isYangIdentifier("A") == true);
63 assertTrue(GrammarHelper.isYangIdentifier("Z") == true);
64 assertTrue(GrammarHelper.isYangIdentifier("a") == true);
65 assertTrue(GrammarHelper.isYangIdentifier("z") == true);
67 assertTrue(GrammarHelper.isYangIdentifier("-") == false);
68 assertTrue(GrammarHelper.isYangIdentifier("0") == false);
69 assertTrue(GrammarHelper.isYangIdentifier("9") == false);
70 assertTrue(GrammarHelper.isYangIdentifier(".") == false);
71 assertTrue(GrammarHelper.isYangIdentifier(";") == false);
72 assertTrue(GrammarHelper.isYangIdentifier("$") == false);
73 assertTrue(GrammarHelper.isYangIdentifier("*") == false);
74 assertTrue(GrammarHelper.isYangIdentifier("\\") == false);
75 assertTrue(GrammarHelper.isYangIdentifier("/") == false);
76 assertTrue(GrammarHelper.isYangIdentifier(":") == false);
77 assertTrue(GrammarHelper.isYangIdentifier("à") == false);
79 assertTrue(GrammarHelper.isYangIdentifier("__") == true);
80 assertTrue(GrammarHelper.isYangIdentifier("_._") == true);
81 assertTrue(GrammarHelper.isYangIdentifier("_......._") == true);
83 assertTrue(GrammarHelper.isYangIdentifier("ABCDEFGHIJKLMNOPQRSTUVWXYZ") == true);
84 assertTrue(GrammarHelper.isYangIdentifier("abcdefghijklmnopqrstuvwxyz") == true);
85 assertTrue(GrammarHelper.isYangIdentifier("_0123456789") == true);
87 assertTrue(GrammarHelper.isYangIdentifier("_ABC") == true);
88 assertTrue(GrammarHelper.isYangIdentifier("ABC_") == true);
89 assertTrue(GrammarHelper.isYangIdentifier("_ABC.DEF") == true);
90 assertTrue(GrammarHelper.isYangIdentifier("ABC.def") == true);
92 assertTrue(GrammarHelper.isYangIdentifier(" ABC.def") == false);
93 assertTrue(GrammarHelper.isYangIdentifier("ABC. def") == false);
94 assertTrue(GrammarHelper.isYangIdentifier("ABC.def ") == false);
95 assertTrue(GrammarHelper.isYangIdentifier("ABC.à.def") == false);
99 public void test_is_yang_identifier_reference() {
101 assertTrue(GrammarHelper.isYangIdentifierReference(null) == false);
102 assertTrue(GrammarHelper.isYangIdentifierReference("") == false);
103 assertTrue(GrammarHelper.isYangIdentifierReference(" ") == false);
104 assertTrue(GrammarHelper.isYangIdentifierReference("\t") == false);
106 assertTrue(GrammarHelper.isYangIdentifierReference("_") == true);
107 assertTrue(GrammarHelper.isYangIdentifierReference("A") == true);
108 assertTrue(GrammarHelper.isYangIdentifierReference("Z") == true);
109 assertTrue(GrammarHelper.isYangIdentifierReference("a") == true);
110 assertTrue(GrammarHelper.isYangIdentifierReference("z") == true);
112 assertTrue(GrammarHelper.isYangIdentifierReference(":") == false);
113 assertTrue(GrammarHelper.isYangIdentifierReference(":_") == false);
114 assertTrue(GrammarHelper.isYangIdentifierReference("_:") == false);
115 assertTrue(GrammarHelper.isYangIdentifierReference("::") == false);
117 assertTrue(GrammarHelper.isYangIdentifierReference("A:A") == true);
118 assertTrue(GrammarHelper.isYangIdentifierReference("_:A") == true);
119 assertTrue(GrammarHelper.isYangIdentifierReference("A:_") == true);
120 assertTrue(GrammarHelper.isYangIdentifierReference("A:a") == true);
121 assertTrue(GrammarHelper.isYangIdentifierReference("z:A") == true);
123 assertTrue(GrammarHelper.isYangIdentifierReference("Abc:Abc") == true);
124 assertTrue(GrammarHelper.isYangIdentifierReference("A99:z00") == true);
126 assertTrue(GrammarHelper.isYangIdentifierReference("Abc::Abc") == false);
127 assertTrue(GrammarHelper.isYangIdentifierReference("Abc: :Abc") == false);
128 assertTrue(GrammarHelper.isYangIdentifierReference(":Abc:Abc") == false);
129 assertTrue(GrammarHelper.isYangIdentifierReference("Abc:Abc:") == false);
130 assertTrue(GrammarHelper.isYangIdentifierReference("Abc :Abc") == false);
131 assertTrue(GrammarHelper.isYangIdentifierReference("Abc: Abc") == false);
132 assertTrue(GrammarHelper.isYangIdentifierReference("Abc : Abc") == false);
133 assertTrue(GrammarHelper.isYangIdentifierReference(" Abc:Abc") == false);
134 assertTrue(GrammarHelper.isYangIdentifierReference("Abc:Abc ") == false);
138 public void test_is_parse_to_string_list() {
140 List<String> list = GrammarHelper.parseToStringList("");
141 assertTrue(list.size() == 0);
142 list = GrammarHelper.parseToStringList(" ");
143 assertTrue(list.size() == 0);
144 list = GrammarHelper.parseToStringList(" ");
145 assertTrue(list.size() == 0);
146 list = GrammarHelper.parseToStringList("\t");
147 assertTrue(list.size() == 0);
148 list = GrammarHelper.parseToStringList(" \t ");
149 assertTrue(list.size() == 0);
150 list = GrammarHelper.parseToStringList("\n");
151 assertTrue(list.size() == 0);
152 list = GrammarHelper.parseToStringList(" \n \t");
153 assertTrue(list.size() == 0);
155 list = GrammarHelper.parseToStringList("Abc");
156 assertTrue(list.size() == 1);
157 assertTrue(list.equals(Arrays.asList("Abc")));
159 list = GrammarHelper.parseToStringList(" Abc");
160 assertTrue(list.size() == 1);
161 assertTrue(list.equals(Arrays.asList("Abc")));
163 list = GrammarHelper.parseToStringList("Abc ");
164 assertTrue(list.size() == 1);
165 assertTrue(list.equals(Arrays.asList("Abc")));
167 list = GrammarHelper.parseToStringList("Abc\n");
168 assertTrue(list.size() == 1);
169 assertTrue(list.equals(Arrays.asList("Abc")));
171 list = GrammarHelper.parseToStringList("Abc Def");
172 assertTrue(list.size() == 2);
173 assertTrue(list.equals(Arrays.asList("Abc", "Def")));
175 list = GrammarHelper.parseToStringList("Abc\tDef");
176 assertTrue(list.size() == 2);
177 assertTrue(list.equals(Arrays.asList("Abc", "Def")));
179 list = GrammarHelper.parseToStringList("Abc\nDef");
180 assertTrue(list.size() == 2);
181 assertTrue(list.equals(Arrays.asList("Abc", "Def")));
183 list = GrammarHelper.parseToStringList("Abc Def");
184 assertTrue(list.size() == 2);
185 assertTrue(list.equals(Arrays.asList("Abc", "Def")));
187 list = GrammarHelper.parseToStringList(" Abc Def");
188 assertTrue(list.size() == 2);
189 assertTrue(list.equals(Arrays.asList("Abc", "Def")));
191 list = GrammarHelper.parseToStringList("Abc Def\n");
192 assertTrue(list.size() == 2);
193 assertTrue(list.equals(Arrays.asList("Abc", "Def")));
195 list = GrammarHelper.parseToStringList("Abc :Def");
196 assertTrue(list.size() == 2);
197 assertTrue(list.equals(Arrays.asList("Abc", ":Def")));
201 public void test_is_unquotable_string() {
203 assertTrue(GrammarHelper.isUnquotableString("") == false);
205 assertTrue(GrammarHelper.isUnquotableString("ABC") == true);
206 assertTrue(GrammarHelper.isUnquotableString("a-yang-identifier") == true);
208 assertTrue(GrammarHelper.isUnquotableString("// inline comment") == false);
209 assertTrue(GrammarHelper.isUnquotableString("ABC // inline comment") == false);
210 assertTrue(GrammarHelper.isUnquotableString("ABC /* start block comment") == false);
211 assertTrue(GrammarHelper.isUnquotableString("/* start block comment") == false);
212 assertTrue(GrammarHelper.isUnquotableString("ABC */ end block comment") == false);
213 assertTrue(GrammarHelper.isUnquotableString("*/ end block comment") == false);
215 assertTrue(GrammarHelper.isUnquotableString(" ") == false);
216 assertTrue(GrammarHelper.isUnquotableString("\t") == false);
217 assertTrue(GrammarHelper.isUnquotableString("\n") == false);
218 assertTrue(GrammarHelper.isUnquotableString("\r") == false);
219 assertTrue(GrammarHelper.isUnquotableString("'") == false);
220 assertTrue(GrammarHelper.isUnquotableString("\"") == false);
221 assertTrue(GrammarHelper.isUnquotableString(";") == false);
222 assertTrue(GrammarHelper.isUnquotableString("{") == false);
223 assertTrue(GrammarHelper.isUnquotableString("}") == false);
224 assertTrue(GrammarHelper.isUnquotableString("+") == false);
226 assertTrue(GrammarHelper.isUnquotableString("ABC DEF") == false);
227 assertTrue(GrammarHelper.isUnquotableString("ABC\tDEF") == false);
228 assertTrue(GrammarHelper.isUnquotableString("ABC\nDEF") == false);
229 assertTrue(GrammarHelper.isUnquotableString("ABC\rDEF") == false);
230 assertTrue(GrammarHelper.isUnquotableString("ABC'DEF") == false);
231 assertTrue(GrammarHelper.isUnquotableString("ABC\"DEF") == false);
232 assertTrue(GrammarHelper.isUnquotableString("ABC;DEF") == false);
233 assertTrue(GrammarHelper.isUnquotableString("ABC{DEF") == false);
234 assertTrue(GrammarHelper.isUnquotableString("ABC}DEF") == false);
235 assertTrue(GrammarHelper.isUnquotableString("ABC+DEF") == false);
237 assertTrue(GrammarHelper.isUnquotableString("ABCDEF ") == false);
238 assertTrue(GrammarHelper.isUnquotableString("\tABCDEF") == false);
239 assertTrue(GrammarHelper.isUnquotableString("}ABCDEF") == false);
240 assertTrue(GrammarHelper.isUnquotableString("ABCDEF+") == false);