Revisions made to the Model Loader to use Babel
[aai/model-loader.git] / src / test / java / org / onap / aai / modelloader / entity / model / ModelSorterTest.java
1 /**
2  * ============LICENSE_START==========================================
3  * org.onap.aai
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
11  *
12  *        http://www.apache.org/licenses/LICENSE-2.0
13  *
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============================================
20  */
21 package org.onap.aai.modelloader.entity.model;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNotNull;
25
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;
31
32 public class ModelSorterTest {
33
34     @Test
35     public void noModels() {
36
37         List<Artifact> emptyList = Collections.emptyList();
38
39         ModelSorter sorter = new ModelSorter();
40         sorter = new ModelSorter();
41
42         List<Artifact> sortedList = sorter.sort(emptyList);
43         assertNotNull(sortedList);
44         assertEquals(0, sortedList.size());
45
46     }
47
48     @Test
49     public void singleModel() {
50
51         List<Artifact> modelList = new ArrayList<Artifact>();
52
53         ModelArtifact model = new ModelArtifact();
54         model.setModelInvariantId("aaa");
55         model.setModelVerId("111");
56         model.addDependentModelId("xyz|123");
57         modelList.add(model);
58
59         ModelSorter sorter = new ModelSorter();
60         sorter = new ModelSorter();
61
62         List<Artifact> sortedList = sorter.sort(modelList);
63         assertNotNull(sortedList);
64         assertEquals(1, sortedList.size());
65
66     }
67
68     /**
69      * depends on depends on B ------> A -------> C
70      *
71      *
72      * Input list = a, b, c Sorted list = c, a, b
73      */
74     @Test
75     public void multipleModels() {
76
77         List<Artifact> modelList = new ArrayList<Artifact>();
78
79         ModelArtifact aaaa = new ModelArtifact();
80         aaaa.setModelInvariantId("aaaa");
81         aaaa.setModelVerId("mvaaaa");
82         aaaa.addDependentModelId("cccc|mvcccc");
83
84         ModelArtifact bbbb = new ModelArtifact();
85         bbbb.setModelInvariantId("bbbb");
86         bbbb.setModelVerId("mvbbbb");
87         bbbb.addDependentModelId("aaaa|mvaaaa");
88
89         ModelArtifact cccc = new ModelArtifact();
90         cccc.setModelInvariantId("cccc");
91         cccc.setModelVerId("mvcccc");
92
93         modelList.add(aaaa);
94         modelList.add(bbbb);
95         modelList.add(cccc);
96
97         ModelSorter sorter = new ModelSorter();
98         sorter = new ModelSorter();
99
100         List<Artifact> sortedList = sorter.sort(modelList);
101         assertNotNull(sortedList);
102         assertEquals(3, sortedList.size());
103
104         assertEquals(cccc, sortedList.get(0));
105         assertEquals(aaaa, sortedList.get(1));
106         assertEquals(bbbb, sortedList.get(2));
107     }
108
109     @Test
110     public void multipleModelsAndNamedQueries() {
111
112         List<Artifact> modelList = new ArrayList<Artifact>();
113
114         ModelArtifact aaaa = new ModelArtifact();
115         aaaa.setModelInvariantId("aaaa");
116         aaaa.setModelVerId("1111");
117         aaaa.addDependentModelId("cccc|2222");
118
119         NamedQueryArtifact nq1 = new NamedQueryArtifact();
120         nq1.setNamedQueryUuid("nq1");
121         nq1.addDependentModelId("aaaa|1111");
122
123         NamedQueryArtifact nq2 = new NamedQueryArtifact();
124         nq2.setNamedQueryUuid("nq2");
125         nq2.addDependentModelId("existing-model");
126
127         modelList.add(nq1);
128         modelList.add(nq2);
129         modelList.add(aaaa);
130
131         ModelSorter sorter = new ModelSorter();
132         sorter = new ModelSorter();
133
134         List<Artifact> sortedList = sorter.sort(modelList);
135         assertNotNull(sortedList);
136         assertEquals(3, sortedList.size());
137
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));
142     }
143
144     @Test(expected = RuntimeException.class)
145     public void circularDependency() {
146
147         List<Artifact> modelList = new ArrayList<Artifact>();
148
149         ModelArtifact aaaa = new ModelArtifact();
150         aaaa.setModelInvariantId("aaaa");
151         aaaa.setModelVerId("1111");
152         aaaa.addDependentModelId("bbbb|1111");
153
154         ModelArtifact bbbb = new ModelArtifact();
155         bbbb.setModelInvariantId("bbbb");
156         bbbb.setModelVerId("1111");
157         bbbb.addDependentModelId("aaaa|1111");
158
159         modelList.add(aaaa);
160         modelList.add(bbbb);
161
162         ModelSorter sorter = new ModelSorter();
163         sorter = new ModelSorter();
164
165         List<Artifact> sortedList = sorter.sort(modelList);
166         assertNotNull(sortedList);
167         assertEquals(2, sortedList.size());
168
169     }
170
171 }