Remove OpenECOMP from license file
[aai/model-loader.git] / src / test / java / org / openecomp / modelloader / entity / model / ModelSorterTest.java
1 /**
2  * ============LICENSE_START=======================================================
3  * org.onap.aai
4  * ================================================================================
5  * Copyright © 2017 AT&T Intellectual Property.
6  * Copyright © 2017 Amdocs
7  * All rights reserved.
8  * ================================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *     http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * ============LICENSE_END=========================================================
21  *
22  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
23  */
24 package org.openecomp.modelloader.entity.model;
25
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertNotNull;
28
29 import java.util.ArrayList;
30 import java.util.Collections;
31 import java.util.List;
32
33 import org.junit.Test;
34 import org.openecomp.modelloader.entity.Artifact;
35
36 public class ModelSorterTest {
37
38   @Test
39   public void noModels() {
40
41     List<Artifact> emptyList = Collections.emptyList();
42
43     ModelSorter sorter = new ModelSorter();
44     sorter = new ModelSorter();
45
46     List<Artifact> sortedList = sorter.sort(emptyList);
47     assertNotNull(sortedList);
48     assertEquals(0, sortedList.size());
49
50   }
51
52   @Test
53   public void singleModel() {
54
55     List<Artifact> modelList = new ArrayList<Artifact>();
56
57     ModelArtifact model = new ModelArtifact();
58     model.setModelInvariantId("aaa");
59     model.setModelVerId("111");
60     model.addDependentModelId("xyz|123");
61     modelList.add(model);
62
63     ModelSorter sorter = new ModelSorter();
64     sorter = new ModelSorter();
65
66     List<Artifact> sortedList = sorter.sort(modelList);
67     assertNotNull(sortedList);
68     assertEquals(1, sortedList.size());
69
70   }
71
72   /**
73    * 
74    * depends on depends on B ------> A -------> C
75    *
76    *
77    * Input list = a, b, c Sorted list = c, a, b
78    *
79    */
80   @Test
81   public void multipleModels() {
82
83     List<Artifact> modelList = new ArrayList<Artifact>();
84
85     ModelArtifact aaaa = new ModelArtifact();
86     aaaa.setModelInvariantId("aaaa");
87     aaaa.setModelVerId("mvaaaa");
88     aaaa.addDependentModelId("cccc|mvcccc");
89
90     ModelArtifact bbbb = new ModelArtifact();
91     bbbb.setModelInvariantId("bbbb");
92     bbbb.setModelVerId("mvbbbb");
93     bbbb.addDependentModelId("aaaa|mvaaaa");
94
95     ModelArtifact cccc = new ModelArtifact();
96     cccc.setModelInvariantId("cccc");
97     cccc.setModelVerId("mvcccc");
98
99     modelList.add(aaaa);
100     modelList.add(bbbb);
101     modelList.add(cccc);
102
103     ModelSorter sorter = new ModelSorter();
104     sorter = new ModelSorter();
105
106     List<Artifact> sortedList = sorter.sort(modelList);
107     assertNotNull(sortedList);
108     assertEquals(3, sortedList.size());
109
110     assertEquals(cccc, sortedList.get(0));
111     assertEquals(aaaa, sortedList.get(1));
112     assertEquals(bbbb, sortedList.get(2));
113   }
114   
115   @Test
116   public void multipleModelsV8() {
117
118     List<Artifact> modelList = new ArrayList<Artifact>();
119
120     ModelV8Artifact aaaa = new ModelV8Artifact();
121     aaaa.setModelNameVersionId("aaaa");
122     aaaa.addDependentModelId("cccc");
123
124     ModelV8Artifact bbbb = new ModelV8Artifact();
125     bbbb.setModelNameVersionId("bbbb");
126     bbbb.addDependentModelId("aaaa");
127
128     ModelV8Artifact cccc = new ModelV8Artifact();
129     cccc.setModelNameVersionId("cccc");
130
131     modelList.add(aaaa);
132     modelList.add(bbbb);
133     modelList.add(cccc);
134
135     ModelSorter sorter = new ModelSorter();
136     sorter = new ModelSorter();
137
138     List<Artifact> sortedList = sorter.sort(modelList);
139     assertNotNull(sortedList);
140     assertEquals(3, sortedList.size());
141
142     assertEquals(cccc, sortedList.get(0));
143     assertEquals(aaaa, sortedList.get(1));
144     assertEquals(bbbb, sortedList.get(2));
145   }
146     
147   @Test
148   public void multipleModelsAndNamedQueries() {
149
150     List<Artifact> modelList = new ArrayList<Artifact>();
151
152     ModelArtifact aaaa = new ModelArtifact();
153     aaaa.setModelInvariantId("aaaa");
154     aaaa.setModelVerId("1111");
155     aaaa.addDependentModelId("cccc|2222");
156     
157     NamedQueryArtifact nq1 = new NamedQueryArtifact();
158     nq1.setNamedQueryUuid("nq1");
159     nq1.addDependentModelId("aaaa|1111");
160     
161     NamedQueryArtifact nq2 = new NamedQueryArtifact();
162     nq2.setNamedQueryUuid("nq2");
163     nq2.addDependentModelId("existing-model");
164     
165
166     modelList.add(nq1);
167     modelList.add(nq2);
168     modelList.add(aaaa);
169
170     ModelSorter sorter = new ModelSorter();
171     sorter = new ModelSorter();
172
173     List<Artifact> sortedList = sorter.sort(modelList);
174     assertNotNull(sortedList);
175     assertEquals(3, sortedList.size());
176
177     System.out.println(sortedList.get(0) + "-" + sortedList.get(1) + "-" + sortedList.get(2));
178     assertEquals(aaaa, sortedList.get(0));
179     assertEquals(nq2, sortedList.get(1));
180     assertEquals(nq1, sortedList.get(2));
181   }
182   
183   @Test(expected = RuntimeException.class)
184   public void circularDependency() {
185
186     List<Artifact> modelList = new ArrayList<Artifact>();
187
188     ModelArtifact aaaa = new ModelArtifact();
189     aaaa.setModelInvariantId("aaaa");
190     aaaa.setModelVerId("1111");
191     aaaa.addDependentModelId("bbbb|1111");
192
193     ModelArtifact bbbb = new ModelArtifact();
194     bbbb.setModelInvariantId("bbbb");
195     bbbb.setModelVerId("1111");
196     bbbb.addDependentModelId("aaaa|1111");
197
198     modelList.add(aaaa);
199     modelList.add(bbbb);
200
201     ModelSorter sorter = new ModelSorter();
202     sorter = new ModelSorter();
203
204     List<Artifact> sortedList = sorter.sort(modelList);
205     assertNotNull(sortedList);
206     assertEquals(2, sortedList.size());
207
208   }
209
210 }