/** * ============LICENSE_START======================================================= * Model Loader * ================================================================================ * Copyright © 2017 AT&T Intellectual Property. * Copyright © 2017 Amdocs * All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END========================================================= * * ECOMP and OpenECOMP are trademarks * and service marks of AT&T Intellectual Property. */ package org.openecomp.modelloader.entity.model; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.junit.Test; import org.openecomp.modelloader.entity.Artifact; public class ModelSorterTest { @Test public void noModels() { List emptyList = Collections.emptyList(); ModelSorter sorter = new ModelSorter(); sorter = new ModelSorter(); List sortedList = sorter.sort(emptyList); assertNotNull(sortedList); assertEquals(0, sortedList.size()); } @Test public void singleModel() { List modelList = new ArrayList(); ModelArtifact model = new ModelArtifact(); model.setNameVersionId("aaaaa"); model.addDependentModelId("xyz"); modelList.add(model); ModelSorter sorter = new ModelSorter(); sorter = new ModelSorter(); List sortedList = sorter.sort(modelList); assertNotNull(sortedList); assertEquals(1, sortedList.size()); } /** * * depends on depends on B ------> A -------> C * * * Input list = a, b, c Sorted list = c, a, b * */ @Test public void multipleModels() { List modelList = new ArrayList(); ModelArtifact aaaa = new ModelArtifact(); aaaa.setModelInvariantId("aaaa"); aaaa.setModelVerId("mvaaaa"); aaaa.addDependentModelId("cccc|mvcccc"); ModelArtifact bbbb = new ModelArtifact(); bbbb.setModelInvariantId("bbbb"); bbbb.setModelVerId("mvbbbb"); bbbb.addDependentModelId("aaaa|mvaaaa"); ModelArtifact cccc = new ModelArtifact(); cccc.setModelInvariantId("cccc"); cccc.setModelVerId("mvcccc"); modelList.add(aaaa); modelList.add(bbbb); modelList.add(cccc); ModelSorter sorter = new ModelSorter(); sorter = new ModelSorter(); List sortedList = sorter.sort(modelList); assertNotNull(sortedList); assertEquals(3, sortedList.size()); assertEquals(cccc, sortedList.get(0)); assertEquals(aaaa, sortedList.get(1)); assertEquals(bbbb, sortedList.get(2)); } @Test(expected = RuntimeException.class) public void circularDependency() { List modelList = new ArrayList(); ModelArtifact aaaa = new ModelArtifact(); aaaa.setNameVersionId("aaaa"); aaaa.addDependentModelId("bbbb"); ModelArtifact bbbb = new ModelArtifact(); bbbb.setNameVersionId("bbbb"); bbbb.addDependentModelId("aaaa"); modelList.add(aaaa); modelList.add(bbbb); ModelSorter sorter = new ModelSorter(); sorter = new ModelSorter(); List sortedList = sorter.sort(modelList); assertNotNull(sortedList); assertEquals(2, sortedList.size()); } }