| /******************************************************************************* |
| * Copyright (c) 2007 Borland Software Corporation |
| * |
| * 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 |
| * |
| * Contributors: |
| * Borland Software Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.m2m.tests.qvt.oml; |
| |
| import junit.framework.TestCase; |
| |
| import org.eclipse.m2m.internal.qvt.oml.evaluator.GraphWalker; |
| import org.eclipse.m2m.internal.qvt.oml.evaluator.GraphWalker.NodeProvider; |
| |
| public class TestGraphWalker extends TestCase { |
| Node A = new Node("A"); //$NON-NLS-1$ |
| Node B = new Node("B"); //$NON-NLS-1$ |
| Node C = new Node("C"); //$NON-NLS-1$ |
| Node D = new Node("D"); //$NON-NLS-1$ |
| Node E = new Node("E"); //$NON-NLS-1$ |
| Node F = new Node("F"); //$NON-NLS-1$ |
| Node G = new Node("G"); //$NON-NLS-1$ |
| Node H = new Node("H"); //$NON-NLS-1$ |
| |
| NodeProvider NODE_PROVIDER = new NodeProvider() { |
| public Object[] getLinkedNodes(Object node) { |
| if(node == A) { |
| return new Object[] {B, C, E, F}; |
| } |
| else if(node == C) { |
| return new Object[] {D}; |
| } |
| else if(node == E) { |
| return new Object[] {F}; |
| } |
| else { |
| return new Object[0]; |
| } |
| } |
| }; |
| |
| public void testMinDistance() { |
| GraphWalker walker = new GraphWalker(NODE_PROVIDER); |
| |
| Object[][] data = new Object[][] { |
| new Object[] {B, C, new Integer(GraphWalker.MAX_WEIGHT)}, |
| new Object[] {A, B, new Integer(1)}, |
| new Object[] {A, D, new Integer(2)}, |
| new Object[] {A, F, new Integer(1)}, |
| }; |
| |
| for (int i = 0; i < data.length; i++) { |
| Object[] objects = data[i]; |
| |
| Node a = (Node)objects[0]; |
| Node b = (Node)objects[1]; |
| int d = ((Integer)objects[2]).intValue(); |
| |
| assertEquals("Wrong distance from " + a + " to " + b, d, walker.getMinimumDistance(a, b, 1)); //$NON-NLS-1$//$NON-NLS-2$ |
| } |
| } |
| |
| static class Node { |
| public Node(String name) { myName = name; } |
| @Override |
| public String toString() {return myName; } |
| private final String myName; |
| } |
| } |