Package org.geotools.graph.path

Source Code of org.geotools.graph.path.WalkTest

/*
*    GeoTools - The Open Source Java GIS Toolkit
*    http://geotools.org
*
*    (C) 2002-2008, Open Source Geospatial Foundation (OSGeo)
*
*    This library is free software; you can redistribute it and/or
*    modify it under the terms of the GNU Lesser General Public
*    License as published by the Free Software Foundation;
*    version 2.1 of the License.
*
*    This library is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*    Lesser General Public License for more details.
*/
package org.geotools.graph.path;

import java.util.ArrayList;
import java.util.Iterator;

import junit.framework.TestCase;

import org.geotools.graph.GraphTestUtil;
import org.geotools.graph.build.GraphBuilder;
import org.geotools.graph.build.basic.BasicGraphBuilder;
import org.geotools.graph.structure.Edge;
import org.geotools.graph.structure.Graphable;
import org.geotools.graph.structure.Node;
import org.geotools.graph.traverse.GraphTraversal;
import org.geotools.graph.traverse.GraphWalker;
import org.geotools.graph.traverse.basic.BasicGraphTraversal;
import org.geotools.graph.traverse.standard.NoBifurcationIterator;

/**
*
*
* @source $URL$
*/
public class WalkTest extends TestCase {
  private GraphBuilder m_builder;
  
  public WalkTest(String name) {
    super(name)
  }
  
  protected void setUp() throws Exception {
    super.setUp();
    m_builder = createBuilder();
  }

  public void test_add() {
    Node n = builder().buildNode();
    Walk walk = new Walk();
   
    walk.add(n);
    
    assertTrue(walk.size() == 1);
    assertTrue(walk.get(0).equals(n))
  }
  
  public void test_remove() {
    Node n = builder().buildNode();
    Walk walk = new Walk();
   
    walk.add(n);
    assertTrue(!walk.isEmpty());
   
    walk.remove(n);
    assertTrue(walk.isEmpty());
  }
 
  public void test_reverse() {
    ArrayList nodes = new ArrayList();
    Walk walk = new Walk();
   
    for (int i = 0; i < 10; i++) {
      Node n = builder().buildNode();
      nodes.add(n);
      walk.add(n)
    }
   
    Iterator itr = walk.iterator();
    for (int i = 0; i < nodes.size();i++) {
      Node n1 = (Node)nodes.get(i);
      Node n2 = (Node)itr.next();
     
      assertTrue(n1 == n2)
    }
   
    walk.reverse();
    itr = walk.iterator();
   
    for (int i = nodes.size()-1; i >= 0; i--) {
      Node n1 = (Node)nodes.get(i);
      Node n2 = (Node)itr.next();
     
      assertTrue(n1 == n2)
    }
  }
 
 
  public void test_isClosed() {
    Node[] ends = GraphTestUtil.buildNoBifurcations(builder(), 10);
    final Walk walk = new Walk();
   
    NoBifurcationIterator iterator = new NoBifurcationIterator();
    iterator.setSource(ends[0]);
   
    GraphWalker walker = new GraphWalker() {
      public int visit(Graphable element, GraphTraversal traversal) {
        walk.add(element);
        return(GraphTraversal.CONTINUE);
      }

      public void finish() {
      
      }
    };
   
    BasicGraphTraversal traversal = new BasicGraphTraversal(
      builder().getGraph(), walker, iterator 
    );
    traversal.init();
    traversal.traverse();
   
    assertTrue(walk.size() == builder().getGraph().getNodes().size());
    assertTrue(walk.isValid() && !walk.isClosed());
   
    //create a new edges in the graph making the graph a cycle
    Edge e = builder().buildEdge(ends[0], ends[1]);
    builder().addEdge(e);
   
    walk.add(ends[0]);
    assertTrue(walk.isValid() && walk.isClosed());
  }
 
  public void test_getEdges() {
    Node[] ends = GraphTestUtil.buildNoBifurcations(builder(), 10);
    final Walk walk = new Walk();
   
    NoBifurcationIterator iterator = new NoBifurcationIterator();
    iterator.setSource(ends[0]);
   
    GraphWalker walker = new GraphWalker() {
      public int visit(Graphable element, GraphTraversal traversal) {
        walk.add(element);
        return(GraphTraversal.CONTINUE);
      }

      public void finish() {
      
      }
    };
   
    BasicGraphTraversal traversal = new BasicGraphTraversal(
      builder().getGraph(), walker, iterator 
    );
    traversal.init();
    traversal.traverse();
   
    assertTrue(walk.getEdges() != null);
    assertTrue(walk.isValid());
  }
 
  public void test_truncate_0() {
    Node[] ends = GraphTestUtil.buildNoBifurcations(builder(), 10);
    final Walk walk = new Walk();
   
    NoBifurcationIterator iterator = new NoBifurcationIterator();
    iterator.setSource(ends[0]);
   
    GraphWalker walker = new GraphWalker() {
      public int visit(Graphable element, GraphTraversal traversal) {
        walk.add(element);
        return(GraphTraversal.CONTINUE);
      }

      public void finish() {
      
      }
    };
   
    BasicGraphTraversal traversal = new BasicGraphTraversal(
      builder().getGraph(), walker, iterator 
    );
    traversal.init();
    traversal.traverse();
   
    walk.truncate(0);
    assertTrue(walk.isEmpty());
    assertTrue(walk.isValid());
  }
 
  public void test_truncate_1() {
    Node[] ends = GraphTestUtil.buildNoBifurcations(builder(), 10);
    final Walk walk = new Walk();
   
    NoBifurcationIterator iterator = new NoBifurcationIterator();
    iterator.setSource(ends[0]);
   
    GraphWalker walker = new GraphWalker() {
      int count = 0;
      public int visit(Graphable element, GraphTraversal traversal) {
        walk.add(element);
        return(GraphTraversal.CONTINUE);
      }

      public void finish() {
      
      }
    };
   
    BasicGraphTraversal traversal = new BasicGraphTraversal(
      builder().getGraph(), walker, iterator 
    );
    traversal.init();
    traversal.traverse();
   
    int size = walk.size();
    walk.truncate(size / 2);
    assertTrue(walk.size() == size / 2);
  }
 
  public void test_truncate_2() {
    Node[] ends = GraphTestUtil.buildNoBifurcations(builder(), 11);
    final Walk walk = new Walk();
   
    NoBifurcationIterator iterator = new NoBifurcationIterator();
    iterator.setSource(ends[0]);
   
    GraphWalker walker = new GraphWalker() {
      int count = 0;
      public int visit(Graphable element, GraphTraversal traversal) {
        walk.add(element);
        return(GraphTraversal.CONTINUE);
      }

      public void finish() {
      
      }
    };
   
    BasicGraphTraversal traversal = new BasicGraphTraversal(
      builder().getGraph(), walker, iterator 
    );
    traversal.init();
    traversal.traverse();
   
    int size = walk.size();
    walk.truncate(size / 2);
    assertTrue(walk.size() == size / 2);
  }
 
  protected GraphBuilder createBuilder() {
    return(new BasicGraphBuilder())
  }
  
  protected GraphBuilder builder() {
    return(m_builder)
  }
  
 
}
TOP

Related Classes of org.geotools.graph.path.WalkTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.