Implement support for v10 model entities.
[aai/model-loader.git] / src / test / java / org / openecomp / modelloader / entity / model / ModelSorterTest.java
1 /**\r
2  * ============LICENSE_START=======================================================\r
3  * Model Loader\r
4  * ================================================================================\r
5  * Copyright © 2017 AT&T Intellectual Property.\r
6  * Copyright © 2017 Amdocs\r
7  * All rights reserved.\r
8  * ================================================================================\r
9  * Licensed under the Apache License, Version 2.0 (the "License");\r
10  * you may not use this file except in compliance with the License.\r
11  * You may obtain a copy of the License at\r
12  * http://www.apache.org/licenses/LICENSE-2.0\r
13  * Unless required by applicable law or agreed to in writing, software\r
14  * distributed under the License is distributed on an "AS IS" BASIS,\r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
16  * See the License for the specific language governing permissions and\r
17  * limitations under the License.\r
18  * ============LICENSE_END=========================================================\r
19  *\r
20  * ECOMP and OpenECOMP are trademarks\r
21  * and service marks of AT&T Intellectual Property.\r
22  */\r
23 package org.openecomp.modelloader.entity.model;\r
24 \r
25 import static org.junit.Assert.assertEquals;\r
26 import static org.junit.Assert.assertNotNull;\r
27 \r
28 import java.util.ArrayList;\r
29 import java.util.Collections;\r
30 import java.util.List;\r
31 \r
32 import org.junit.Test;\r
33 import org.openecomp.modelloader.entity.Artifact;\r
34 \r
35 public class ModelSorterTest {\r
36 \r
37   @Test\r
38   public void noModels() {\r
39 \r
40     List<Artifact> emptyList = Collections.emptyList();\r
41 \r
42     ModelSorter sorter = new ModelSorter();\r
43     sorter = new ModelSorter();\r
44 \r
45     List<Artifact> sortedList = sorter.sort(emptyList);\r
46     assertNotNull(sortedList);\r
47     assertEquals(0, sortedList.size());\r
48 \r
49   }\r
50 \r
51   @Test\r
52   public void singleModel() {\r
53 \r
54     List<Artifact> modelList = new ArrayList<Artifact>();\r
55 \r
56     ModelArtifact model = new ModelArtifact();\r
57     model.setNameVersionId("aaaaa");\r
58     model.addDependentModelId("xyz");\r
59     modelList.add(model);\r
60 \r
61     ModelSorter sorter = new ModelSorter();\r
62     sorter = new ModelSorter();\r
63 \r
64     List<Artifact> sortedList = sorter.sort(modelList);\r
65     assertNotNull(sortedList);\r
66     assertEquals(1, sortedList.size());\r
67 \r
68   }\r
69 \r
70   /**\r
71    * \r
72    * depends on depends on B ------> A -------> C\r
73    *\r
74    *\r
75    * Input list = a, b, c Sorted list = c, a, b\r
76    *\r
77    */\r
78   @Test\r
79   public void multipleModels() {\r
80 \r
81     List<Artifact> modelList = new ArrayList<Artifact>();\r
82 \r
83     ModelArtifact aaaa = new ModelArtifact();\r
84     aaaa.setModelInvariantId("aaaa");\r
85         aaaa.setModelVerId("mvaaaa");\r
86         aaaa.addDependentModelId("cccc|mvcccc");\r
87 \r
88     ModelArtifact bbbb = new ModelArtifact();\r
89     bbbb.setModelInvariantId("bbbb");\r
90         bbbb.setModelVerId("mvbbbb");\r
91         bbbb.addDependentModelId("aaaa|mvaaaa");\r
92 \r
93     ModelArtifact cccc = new ModelArtifact();\r
94     cccc.setModelInvariantId("cccc");\r
95         cccc.setModelVerId("mvcccc");\r
96 \r
97     modelList.add(aaaa);\r
98     modelList.add(bbbb);\r
99     modelList.add(cccc);\r
100 \r
101     ModelSorter sorter = new ModelSorter();\r
102     sorter = new ModelSorter();\r
103 \r
104     List<Artifact> sortedList = sorter.sort(modelList);\r
105     assertNotNull(sortedList);\r
106     assertEquals(3, sortedList.size());\r
107 \r
108     assertEquals(cccc, sortedList.get(0));\r
109     assertEquals(aaaa, sortedList.get(1));\r
110     assertEquals(bbbb, sortedList.get(2));\r
111   }\r
112 \r
113   @Test(expected = RuntimeException.class)\r
114   public void circularDependency() {\r
115 \r
116     List<Artifact> modelList = new ArrayList<Artifact>();\r
117 \r
118     ModelArtifact aaaa = new ModelArtifact();\r
119     aaaa.setNameVersionId("aaaa");\r
120     aaaa.addDependentModelId("bbbb");\r
121 \r
122     ModelArtifact bbbb = new ModelArtifact();\r
123     bbbb.setNameVersionId("bbbb");\r
124     bbbb.addDependentModelId("aaaa");\r
125 \r
126     modelList.add(aaaa);\r
127     modelList.add(bbbb);\r
128 \r
129     ModelSorter sorter = new ModelSorter();\r
130     sorter = new ModelSorter();\r
131 \r
132     List<Artifact> sortedList = sorter.sort(modelList);\r
133     assertNotNull(sortedList);\r
134     assertEquals(3, sortedList.size());\r
135 \r
136   }\r
137 \r
138 }\r