/*
* JaamSim Discrete Event Simulation
* Copyright (C) 2016 JaamSim Software Inc.
*
* 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.
*/
package com.jaamsim.DirectedGraph;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import org.junit.Test;
public class TestComplexDirectedGraph {
@Test
public void basicTest() {
Digraph graph = new Digraph();
DigraphVertex vert1 = new DigraphVertex("Vertex1", graph);
DigraphVertex vert2 = new DigraphVertex("Vertex2", graph);
DigraphVertex vert3 = new DigraphVertex("Vertex3", graph);
DigraphVertex vert4 = new DigraphVertex("Vertex4", graph);
DigraphVertex vert5 = new DigraphVertex("Vertex5", graph);
DigraphVertex vert6 = new DigraphVertex("Vertex6", graph);
DigraphVertex vert7 = new DigraphVertex("Vertex7", graph);
DigraphVertex vert8 = new DigraphVertex("Vertex8", graph);
DigraphEdge edge1_2 = new DigraphEdge(vert1, vert2, 1.0, graph);
DigraphEdge edge4_2 = new DigraphEdge(vert4, vert2, 2.0, graph);
DigraphEdge edge4_5 = new DigraphEdge(vert4, vert5, 1.0, graph);
DigraphEdge edge7_5 = new DigraphEdge(vert7, vert5, 2.0, graph);
DigraphEdge edge7_8 = new DigraphEdge(vert7, vert8, 1.0, graph);
DigraphEdge edge2_3 = new DigraphEdge(vert2, vert3, 1.0, graph);
DigraphEdge edge2_6 = new DigraphEdge(vert2, vert6, 2.0, graph);
DigraphEdge edge2_8 = new DigraphEdge(vert2, vert8, 3.0, graph);
DigraphEdge edge5_6 = new DigraphEdge(vert5, vert6, 1.0, graph);
vert1.initForUnitTest();
vert2.initForUnitTest();
vert3.initForUnitTest();
vert4.initForUnitTest();
vert5.initForUnitTest();
vert6.initForUnitTest();
vert7.initForUnitTest();
vert8.initForUnitTest();
edge1_2.initForUnitTest();
edge4_2.initForUnitTest();
edge4_5.initForUnitTest();
edge7_5.initForUnitTest();
edge7_8.initForUnitTest();
edge2_3.initForUnitTest();
edge2_6.initForUnitTest();
edge2_8.initForUnitTest();
edge5_6.initForUnitTest();
graph.init();
assertTrue(vert1.isSource());
assertTrue(!vert2.isSource());
assertTrue(!vert3.isSource());
assertTrue(vert4.isSource());
assertTrue(!vert5.isSource());
assertTrue(!vert6.isSource());
assertTrue(vert7.isSource());
assertTrue(!vert1.isSink());
assertTrue(!vert2.isSink());
assertTrue(vert3.isSink());
assertTrue(!vert4.isSink());
assertTrue(!vert5.isSink());
assertTrue(vert6.isSink());
assertTrue(!vert7.isSink());
assertTrue(vert8.isSink());
ArrayList<DigraphPath> vert1ToVert3List = vert1.getPathsToSink(vert3);
ArrayList<DigraphPath> vert1ToVert6List = vert1.getPathsToSink(vert6);
ArrayList<DigraphPath> vert1ToVert8List = vert1.getPathsToSink(vert8);
ArrayList<DigraphPath> vert4ToVert3List = vert4.getPathsToSink(vert3);
ArrayList<DigraphPath> vert4ToVert6List = vert4.getPathsToSink(vert6);
ArrayList<DigraphPath> vert4ToVert8List = vert4.getPathsToSink(vert8);
ArrayList<DigraphPath> vert7ToVert3List = vert7.getPathsToSink(vert3);
ArrayList<DigraphPath> vert7ToVert6List = vert7.getPathsToSink(vert6);
ArrayList<DigraphPath> vert7ToVert8List = vert7.getPathsToSink(vert8);
/*System.out.println("vert1ToVert3List="+vert1ToVert3List);
System.out.println("vert1ToVert6List="+vert1ToVert6List);
System.out.println("vert1ToVert8List="+vert1ToVert8List);
System.out.println("vert4ToVert3List="+vert4ToVert3List);
System.out.println("vert4ToVert6List="+vert4ToVert6List);
System.out.println("vert4ToVert8List="+vert4ToVert8List);
System.out.println("vert7ToVert3List="+vert7ToVert3List);
System.out.println("vert7ToVert6List="+vert7ToVert6List);
System.out.println("vert7ToVert8List="+vert7ToVert8List);*/
assertTrue(vert1ToVert3List.size() == 1);
assertTrue(vert1ToVert6List.size() == 1);
assertTrue(vert1ToVert8List.size() == 1);
assertTrue(vert4ToVert3List.size() == 1);
assertTrue(vert4ToVert6List.size() == 2);
assertTrue(vert4ToVert8List.size() == 1);
assertTrue(vert7ToVert3List == null);
assertTrue(vert7ToVert6List.size() == 1);
assertTrue(vert7ToVert8List.size() == 1);
assertTrue(vert1ToVert3List.get(0).getWeight() == 2.0);
assertTrue(vert1ToVert6List.get(0).getWeight() == 3.0);
assertTrue(vert1ToVert8List.get(0).getWeight() == 4.0);
assertTrue(vert4ToVert3List.get(0).getWeight() == 3.0);
assertTrue(vert4ToVert6List.get(0).getWeight() == 2.0);
assertTrue(vert4ToVert8List.get(0).getWeight() == 5.0);
assertTrue(vert7ToVert6List.get(0).getWeight() == 3.0);
assertTrue(vert7ToVert8List.get(0).getWeight() == 1.0);
}
}