2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.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;
30 import org.junit.Test;
31 import org.openecomp.modelloader.entity.Artifact;
33 public class ModelSorterTest {
36 public void noModels() {
38 List<Artifact> emptyList = Collections.emptyList();
40 ModelSorter sorter = new ModelSorter();
41 sorter = new ModelSorter();
43 List<Artifact> sortedList = sorter.sort(emptyList);
44 assertNotNull(sortedList);
45 assertEquals(0, sortedList.size());
50 public void singleModel() {
52 List<Artifact> modelList = new ArrayList<Artifact>();
54 ModelArtifact model = new ModelArtifact();
55 model.setNameVersionId("aaaaa");
56 model.addDependentModelId("xyz");
59 ModelSorter sorter = new ModelSorter();
60 sorter = new ModelSorter();
62 List<Artifact> sortedList = sorter.sort(modelList);
63 assertNotNull(sortedList);
64 assertEquals(1, sortedList.size());
70 * depends on depends on B ------> A -------> C
73 * Input list = a, b, c Sorted list = c, a, b
77 public void multipleModels() {
79 List<Artifact> modelList = new ArrayList<Artifact>();
81 ModelArtifact aaaa = new ModelArtifact();
82 aaaa.setNameVersionId("aaaa");
83 aaaa.addDependentModelId("cccc");
85 ModelArtifact bbbb = new ModelArtifact();
86 bbbb.setNameVersionId("bbbb");
87 bbbb.addDependentModelId("aaaa");
89 ModelArtifact cccc = new ModelArtifact();
90 cccc.setNameVersionId("cccc");
96 ModelSorter sorter = new ModelSorter();
97 sorter = new ModelSorter();
99 List<Artifact> sortedList = sorter.sort(modelList);
100 assertNotNull(sortedList);
101 assertEquals(3, sortedList.size());
103 assertEquals(cccc, sortedList.get(0));
104 assertEquals(aaaa, sortedList.get(1));
105 assertEquals(bbbb, sortedList.get(2));
108 @Test(expected = RuntimeException.class)
109 public void circularDependency() {
111 List<Artifact> modelList = new ArrayList<Artifact>();
113 ModelArtifact aaaa = new ModelArtifact();
114 aaaa.setNameVersionId("aaaa");
115 aaaa.addDependentModelId("bbbb");
117 ModelArtifact bbbb = new ModelArtifact();
118 bbbb.setNameVersionId("bbbb");
119 bbbb.addDependentModelId("aaaa");
124 ModelSorter sorter = new ModelSorter();
125 sorter = new ModelSorter();
127 List<Artifact> sortedList = sorter.sort(modelList);
128 assertNotNull(sortedList);
129 assertEquals(3, sortedList.size());