2 * ============LICENSE_START==========================================
4 * ===================================================================
5 * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
6 * Copyright © 2017-2018 Amdocs
7 * ===================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END============================================
21 package org.onap.aai.modelloader.entity.model;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNotNull;
26 import java.util.ArrayList;
27 import java.util.Collections;
28 import java.util.List;
29 import org.junit.Test;
30 import org.onap.aai.modelloader.entity.Artifact;
32 public class ModelSorterTest {
35 public void noModels() {
37 List<Artifact> emptyList = Collections.emptyList();
39 ModelSorter sorter = new ModelSorter();
40 sorter = new ModelSorter();
42 List<Artifact> sortedList = sorter.sort(emptyList);
43 assertNotNull(sortedList);
44 assertEquals(0, sortedList.size());
49 public void singleModel() {
51 List<Artifact> modelList = new ArrayList<Artifact>();
53 ModelArtifact model = new ModelArtifact();
54 model.setModelInvariantId("aaa");
55 model.setModelVerId("111");
56 model.addDependentModelId("xyz|123");
59 ModelSorter sorter = new ModelSorter();
60 sorter = new ModelSorter();
62 List<Artifact> sortedList = sorter.sort(modelList);
63 assertNotNull(sortedList);
64 assertEquals(1, sortedList.size());
69 * depends on depends on B ------> A -------> C
72 * Input list = a, b, c Sorted list = c, a, b
75 public void multipleModels() {
77 List<Artifact> modelList = new ArrayList<Artifact>();
79 ModelArtifact aaaa = new ModelArtifact();
80 aaaa.setModelInvariantId("aaaa");
81 aaaa.setModelVerId("mvaaaa");
82 aaaa.addDependentModelId("cccc|mvcccc");
84 ModelArtifact bbbb = new ModelArtifact();
85 bbbb.setModelInvariantId("bbbb");
86 bbbb.setModelVerId("mvbbbb");
87 bbbb.addDependentModelId("aaaa|mvaaaa");
89 ModelArtifact cccc = new ModelArtifact();
90 cccc.setModelInvariantId("cccc");
91 cccc.setModelVerId("mvcccc");
97 ModelSorter sorter = new ModelSorter();
98 sorter = new ModelSorter();
100 List<Artifact> sortedList = sorter.sort(modelList);
101 assertNotNull(sortedList);
102 assertEquals(3, sortedList.size());
104 assertEquals(cccc, sortedList.get(0));
105 assertEquals(aaaa, sortedList.get(1));
106 assertEquals(bbbb, sortedList.get(2));
110 public void multipleModelsAndNamedQueries() {
112 List<Artifact> modelList = new ArrayList<Artifact>();
114 ModelArtifact aaaa = new ModelArtifact();
115 aaaa.setModelInvariantId("aaaa");
116 aaaa.setModelVerId("1111");
117 aaaa.addDependentModelId("cccc|2222");
119 NamedQueryArtifact nq1 = new NamedQueryArtifact();
120 nq1.setNamedQueryUuid("nq1");
121 nq1.addDependentModelId("aaaa|1111");
123 NamedQueryArtifact nq2 = new NamedQueryArtifact();
124 nq2.setNamedQueryUuid("nq2");
125 nq2.addDependentModelId("existing-model");
131 ModelSorter sorter = new ModelSorter();
132 sorter = new ModelSorter();
134 List<Artifact> sortedList = sorter.sort(modelList);
135 assertNotNull(sortedList);
136 assertEquals(3, sortedList.size());
138 System.out.println(sortedList.get(0) + "-" + sortedList.get(1) + "-" + sortedList.get(2));
139 assertEquals(aaaa, sortedList.get(0));
140 assertEquals(nq2, sortedList.get(1));
141 assertEquals(nq1, sortedList.get(2));
144 @Test(expected = RuntimeException.class)
145 public void circularDependency() {
147 List<Artifact> modelList = new ArrayList<Artifact>();
149 ModelArtifact aaaa = new ModelArtifact();
150 aaaa.setModelInvariantId("aaaa");
151 aaaa.setModelVerId("1111");
152 aaaa.addDependentModelId("bbbb|1111");
154 ModelArtifact bbbb = new ModelArtifact();
155 bbbb.setModelInvariantId("bbbb");
156 bbbb.setModelVerId("1111");
157 bbbb.addDependentModelId("aaaa|1111");
162 ModelSorter sorter = new ModelSorter();
163 sorter = new ModelSorter();
165 List<Artifact> sortedList = sorter.sort(modelList);
166 assertNotNull(sortedList);
167 assertEquals(2, sortedList.size());