7e5a7c0724d704f9659163248eb0cbb3cf345a0a
[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.input.test;
22
23 import static org.junit.Assert.assertTrue;
24 import static org.junit.Assert.fail;
25
26 import java.io.File;
27 import java.util.Arrays;
28 import java.util.Set;
29
30 import org.junit.Test;
31
32 import org.oran.smo.yangtools.parser.input.FileBasedYangInputResolver;
33 import org.oran.smo.yangtools.parser.input.YangInput;
34
35 public class FileBasedYangInputResolverTest {
36
37     private static final String ROOT = "src/test/resources/basics/file-based-resolver-test";
38
39     private static final String FILE1 = ROOT + "/folder1/file1.yang";
40     private static final String FILE2 = ROOT + "/folder1/file2.xml";
41     private static final String FILE3 = ROOT + "/folder1/file3.txt";
42
43     private static final String FILE4 = ROOT + "/folder2/file4.yang";
44     private static final String FILE5 = ROOT + "/folder2/file5";
45
46     private static final String DOES_NOT_EXISTS = ROOT + "/does-not-exist.yang";
47
48     @Test
49     public void test_ok_all() {
50
51         final FileBasedYangInputResolver resolver = new FileBasedYangInputResolver(Arrays.asList(new File(ROOT)));
52
53         final Set<YangInput> resolvedYangInput = resolver.getResolvedYangInput();
54         assertTrue(resolvedYangInput.size() == 5);
55
56         assertContainsFile(resolvedYangInput, FILE1);
57         assertContainsFile(resolvedYangInput, FILE2);
58         assertContainsFile(resolvedYangInput, FILE3);
59         assertContainsFile(resolvedYangInput, FILE4);
60         assertContainsFile(resolvedYangInput, FILE5);
61     }
62
63     @Test
64     public void test_ok_folder1() {
65
66         final FileBasedYangInputResolver resolver = new FileBasedYangInputResolver(Arrays.asList(new File(
67                 ROOT + "/folder1")));
68
69         final Set<YangInput> resolvedYangInput = resolver.getResolvedYangInput();
70         assertTrue(resolvedYangInput.size() == 3);
71
72         assertContainsFile(resolvedYangInput, FILE1);
73         assertContainsFile(resolvedYangInput, FILE2);
74         assertContainsFile(resolvedYangInput, FILE3);
75     }
76
77     @Test
78     public void test_ok_root_supplied_twice() {
79
80         final FileBasedYangInputResolver resolver = new FileBasedYangInputResolver(Arrays.asList(new File(ROOT), new File(
81                 ROOT)));
82
83         final Set<YangInput> resolvedYangInput = resolver.getResolvedYangInput();
84         assertTrue(resolvedYangInput.size() == 5);
85
86         assertContainsFile(resolvedYangInput, FILE1);
87         assertContainsFile(resolvedYangInput, FILE2);
88         assertContainsFile(resolvedYangInput, FILE3);
89         assertContainsFile(resolvedYangInput, FILE4);
90         assertContainsFile(resolvedYangInput, FILE5);
91     }
92
93     @Test
94     public void test_ok_root_and_folder1_supplied() {
95
96         final FileBasedYangInputResolver resolver = new FileBasedYangInputResolver(Arrays.asList(new File(ROOT), new File(
97                 ROOT + "/folder1")));
98
99         final Set<YangInput> resolvedYangInput = resolver.getResolvedYangInput();
100         assertTrue(resolvedYangInput.size() == 5);
101
102         assertContainsFile(resolvedYangInput, FILE1);
103         assertContainsFile(resolvedYangInput, FILE2);
104         assertContainsFile(resolvedYangInput, FILE3);
105         assertContainsFile(resolvedYangInput, FILE4);
106         assertContainsFile(resolvedYangInput, FILE5);
107     }
108
109     @Test
110     public void test_ok_folder1_and_folder2_supplied() {
111
112         final FileBasedYangInputResolver resolver = new FileBasedYangInputResolver(Arrays.asList(new File(
113                 ROOT + "/folder2"), new File(ROOT + "/folder1")));
114
115         final Set<YangInput> resolvedYangInput = resolver.getResolvedYangInput();
116         assertTrue(resolvedYangInput.size() == 5);
117
118         assertContainsFile(resolvedYangInput, FILE1);
119         assertContainsFile(resolvedYangInput, FILE2);
120         assertContainsFile(resolvedYangInput, FILE3);
121         assertContainsFile(resolvedYangInput, FILE4);
122         assertContainsFile(resolvedYangInput, FILE5);
123     }
124
125     @Test
126     public void test_ok_yang_files() {
127
128         final FileBasedYangInputResolver resolver = new FileBasedYangInputResolver(Arrays.asList(new File(ROOT)), Arrays
129                 .asList(FileBasedYangInputResolver.FILE_EXTENSION_YANG));
130
131         final Set<YangInput> resolvedYangInput = resolver.getResolvedYangInput();
132         assertTrue(resolvedYangInput.size() == 2);
133
134         assertContainsFile(resolvedYangInput, FILE1);
135         assertContainsFile(resolvedYangInput, FILE4);
136     }
137
138     @Test
139     public void test_ok_yang_files_uppercase() {
140
141         final FileBasedYangInputResolver resolver = new FileBasedYangInputResolver(Arrays.asList(new File(ROOT)), Arrays
142                 .asList(FileBasedYangInputResolver.FILE_EXTENSION_YANG));
143
144         final Set<YangInput> resolvedYangInput = resolver.getResolvedYangInput();
145         assertTrue(resolvedYangInput.size() == 2);
146
147         assertContainsFile(resolvedYangInput, FILE1);
148         assertContainsFile(resolvedYangInput, FILE4);
149     }
150
151     @Test
152     public void test_ok_yang_and_xml_files() {
153
154         final FileBasedYangInputResolver resolver = new FileBasedYangInputResolver(Arrays.asList(new File(ROOT)), Arrays
155                 .asList(FileBasedYangInputResolver.FILE_EXTENSION_YANG, FileBasedYangInputResolver.FILE_EXTENSION_XML));
156
157         final Set<YangInput> resolvedYangInput = resolver.getResolvedYangInput();
158         assertTrue(resolvedYangInput.size() == 3);
159
160         assertContainsFile(resolvedYangInput, FILE1);
161         assertContainsFile(resolvedYangInput, FILE2);
162         assertContainsFile(resolvedYangInput, FILE4);
163     }
164
165     @Test
166     public void test_err_file_does_not_exist() {
167
168         final FileBasedYangInputResolver resolver = new FileBasedYangInputResolver(Arrays.asList(new File(
169                 DOES_NOT_EXISTS)));
170
171         final Set<YangInput> resolvedYangInput = resolver.getResolvedYangInput();
172         assertTrue(resolvedYangInput.size() == 0);
173     }
174
175     private void assertContainsFile(Set<YangInput> resolvedYangInput, final String path) {
176
177         final File sought = new File(path);
178
179         for (final YangInput input : resolvedYangInput) {
180             if (input.getFile().equals(sought)) {
181                 return;
182             }
183         }
184
185         fail("Does not contain file " + path);
186     }
187
188 }