import rpi.goldsd.container.*;
import rpi.goldsd.graph.*;

public class GraphTest
{
  public static void main( String[] args )
  {
    Graph G1 = new Graph( "Years Graph" );
    Graph G2 = new Graph( "Extra Test Graph" );

    Vertex Va = new Vertex();
    Vertex Vb = new Vertex();
    G2.add( Va );
    G2.add( Vb );

    Vertex V1 = new Vertex( 1492 );
    Vertex V2 = new Vertex( 1812 );
    Vertex V3 = new Vertex( 1973 );
    Vertex V4 = new Vertex( 1974 );
    Vertex V5 = new Vertex( 1984 );
    Vertex V6 = new Vertex( 1775 );
    V6.setData( new Int(1776) );

    G1.add( V1 );
    G1.add( V2 );
    G1.add( V3 );
    G1.add( V4 );
//    G2.add( V3 );   <== should raise InAnotherGraphException.
    G1.add( V5 );
    G1.add( V6 );
//    G1.add( V4 );   <== should raise DuplicateElementException.
    V6.setData( new Int(1787) );

    Edge E1 = new Edge( V1, V3 );
    Edge E2 = new Edge( V1, V6 );
    Edge E3 = new Edge( V2, V3 );
    Edge E4 = new Edge( V3, V6 );
    Edge E5 = new Edge( V4, V5 );
    E1.setData( new Int( 800 ) );

    G1.add( E1 );
    G1.add( E2 );
    G1.add( E3 );
    G1.add( E4 );
    G1.add( E5 );
    E1.setData( new Int( 900 ) );

    G1.printSummary();
    G2.printSummary();
    Algorithms.toGraphDraw( G1, "GraphTest1.html" );
    Algorithms.toGraphDraw( G2, "GraphTest2.html" );

    Path P1 = new Path( V3 );
    P1.add( V1 );
    P1.add( E2 );
    System.out.println( "Path P1: " + P1 );

//    Path P2 = new Path( P1 );
    Path P2 = (Path)P1.clone();
    System.out.println( "Path P2: " + P2 );

//    Graph G3 = new Graph( G1 );
    Graph G3 = (Graph)G1.clone();
    G1.clear();
    G3.printSummary();

    Tree T1 = new Tree( V1, "Test Tree" );
    T1.add( E1, V3 );
    T1.add( E2, V6 );
    T1.add( E3, V2 );
    T1.printSummary();

    Tree T2 = new Tree( T1 );
    T1.clear();
    T2.printSummary();
    T1.printSummary();
  }
}

