/* * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.yangtools.yang.parser.util; import static org.junit.Assert.assertEquals; import com.google.common.collect.Sets; import java.util.List; import java.util.Set; import org.junit.Test; import org.opendaylight.yangtools.yang.parser.util.TopologicalSort.Node; import org.opendaylight.yangtools.yang.parser.util.TopologicalSort.NodeImpl; public class TopologicalSortTest { @Test(expected = IllegalStateException.class) public void test() throws Exception { Set<Node> nodes = Sets.newHashSet(); NodeImpl node1 = new NodeImpl(); nodes.add(node1); NodeImpl node2 = new NodeImpl(); nodes.add(node2); NodeImpl node3 = new NodeImpl(); nodes.add(node3); node1.addEdge(node2); node2.addEdge(node3); node3.addEdge(node1); // We expect an IllegalStateException here TopologicalSort.sort(nodes); } @Test public void testValidSimple() throws Exception { Set<Node> nodes = Sets.newHashSet(); Node node1 = new NodeImpl(); nodes.add(node1); Node node2 = new NodeImpl(); nodes.add(node2); Node node3 = new NodeImpl(); nodes.add(node3); Node node4 = new NodeImpl(); nodes.add(node4); ((NodeImpl) node1).addEdge(node2); ((NodeImpl) node1).addEdge(node3); ((NodeImpl) node2).addEdge(node4); ((NodeImpl) node3).addEdge(node2); List<Node> sorted = TopologicalSort.sort(nodes); assertEquals(node4, sorted.get(0)); assertEquals(node2, sorted.get(1)); assertEquals(node3, sorted.get(2)); assertEquals(node1, sorted.get(3)); } }