[Biojava-dev] [biojava-builder] BioJava nightly build report

autobuilder at derkholm.net autobuilder at derkholm.net
Thu Aug 21 03:28:34 EDT 2003


BioJava automatic build system, run 20030821
This is an experimental system, contact Thomas Down if you see any problems.

Binary build: OK
Javadocs build: OK
Core test suite: OK (results attached)

A snapshot release has been made at:

      http://www.derkholm.net/autobuild/

The following files were modified in the last 24 hours:

 * biojava-live/src/org/biojava/bio/MergeAnnotation.java
 * biojava-live/src/org/biojava/bio/symbol/UkkonenSuffixTree.java
 * biojava-live/tests/org/biojava/bio/MergeAnnotationTest.java
 * biojava-live/tests/org/biojava/bio/symbol/UkkonenSuffixTreeTest.java

A patch file reflecting these changes is attached.
-------------- next part --------------
Index: biojava-live/src/org/biojava/bio/MergeAnnotation.java
diff -u biojava-live/src/org/biojava/bio/MergeAnnotation.java:1.9 biojava-live/src/org/biojava/bio/MergeAnnotation.java:1.10
--- biojava-live/src/org/biojava/bio/MergeAnnotation.java:1.9	Wed Jul 16 12:01:10 2003
+++ biojava-live/src/org/biojava/bio/MergeAnnotation.java	Wed Aug 20 17:49:15 2003
@@ -25,6 +25,7 @@
 import java.util.AbstractMap;
 import java.util.AbstractSet;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
@@ -43,12 +44,15 @@
 /**
  * Merged view onto a list of underlying Annotation objects.
  * Currently immutable (but reflects changes to underlying objects). Annotations
- * near the beginning of the list will have properties that take precedence.
+ * near the beginning of the list will have properties that take
+ * precedence. It is possible to get the ordering of the annotations, or to
+ * change it by removing and re-adding methods.
  * This Annotation implementation is immutable.
  *
  * @author Thomas Down
  * @author Matthew Pocock
  * @author Greg Cox
+ * @author Francois Pepin
  * @since 1.2
  *
  * @for.developer Use these when you have a list of Annotation instances that
@@ -71,8 +75,45 @@
     mergeSet = new ArrayList();
   }
 
+    /**
+   * ChangeType of ChangeEvent fired before and after an annotation is added
+   * to MergeAnnotation.
+   *
+   */
+  public static final ChangeType ANNOTATION_CHANGED = new ChangeType(
+    "annotation added",
+    "org.biojava.bio.MergeAnnotation",
+    "ANNOTATION_CHANGED"
+  );
+  
+  /**
+   * ChangeType of ChangeEvent fired before and after an annotation is added
+   * to MergeAnnotation.
+   *
+   */
+  public static final ChangeType ANNOTATION_ADD = new ChangeType(
+    "annotation added from List",
+    "org.biojava.bio.MergeAnnotation",
+    "ANNOTATION_ADD",
+    ANNOTATION_CHANGED
+  );
+
+    /**
+   * ChangeType of ChangeEvent fired before and after an annotation is added
+   * to MergeAnnotation.
+   *
+   */
+  public static final ChangeType ANNOTATION_REMOVE = new ChangeType(
+    "annotation deleted from List",
+    "org.biojava.bio.MergeAnnotation",
+    "ANNOTATION_REMOVE",
+    ANNOTATION_CHANGED
+  );
+
+
+  
   /**
-   * Add a new Annotation to the list to be merged.
+   * Add a new Annotation to to the end of the list to be merged.
    *
    * @for.powerUser  Use this to alter the Annotations being merged
    *
@@ -81,9 +122,55 @@
    */
   public void addAnnotation(Annotation ann)
           throws ChangeVetoException {
-    mergeSet.add(ann);
+     if(!hasListeners())
+       mergeSet.add(ann);
+     else{
+       ChangeEvent ce = new ChangeEvent(this,MergeAnnotation.ANNOTATION_ADD,ann);
+       ChangeSupport changeSupport = super.getChangeSupport(MergeAnnotation.ANNOTATION_ADD);
+       synchronized(changeSupport) {
+        changeSupport.firePreChangeEvent(ce);
+        mergeSet.add(ann);
+        changeSupport.firePostChangeEvent(ce);
+      }
+     }
   }
 
+  /**
+   * Gets an unmodifiable view of the list of Annotations that are part of the
+   * MergeAnnotation. Lower indices Annotation have precedence if 2
+   * Annotations share the same property.
+   * 
+   * @return an unmodifiable <code>List</code> of the Annotations that form
+   * this MergeAnnotation.
+   */
+  public List getAnnotations()
+  {
+    return Collections.unmodifiableList(mergeSet);
+  }
+
+  /**
+   * Remove an Annotation from the list. This can be used to change the
+   * ordering of the Annotations by re-adding it later.
+   *
+   * @param ann an <code>Annotation</code> to be removed.
+   * @exception ChangeVetoException if an error occurs
+   */
+  public void removeAnnotation(Annotation ann)
+    throws ChangeVetoException {
+    if(!hasListeners())
+       mergeSet.remove(ann);
+     else{
+       ChangeEvent ce = new ChangeEvent(this,MergeAnnotation.ANNOTATION_REMOVE,ann);
+       ChangeSupport changeSupport = super.getChangeSupport(MergeAnnotation.ANNOTATION_REMOVE);
+       synchronized(changeSupport) {
+         changeSupport.firePreChangeEvent(ce);
+         mergeSet.remove(ann);
+         changeSupport.firePostChangeEvent(ce);
+       }
+     }
+  }
+  
+  
   protected ChangeSupport getChangeSupport(ChangeType changeType) {
     ChangeSupport changeSupport = super.getChangeSupport(changeType);
 
@@ -139,7 +226,7 @@
     Set s = new HashSet();
     for (Iterator i = mergeSet.iterator(); i.hasNext();) {
       Annotation a = (Annotation) i.next();
-      s.add(a.keys());
+      s.addAll(a.keys());
     }
     return s;
   }
Index: biojava-live/src/org/biojava/bio/symbol/UkkonenSuffixTree.java
diff -u biojava-live/src/org/biojava/bio/symbol/UkkonenSuffixTree.java:1.6 biojava-live/src/org/biojava/bio/symbol/UkkonenSuffixTree.java:1.8
--- biojava-live/src/org/biojava/bio/symbol/UkkonenSuffixTree.java:1.6	Tue Jul 29 00:57:48 2003
+++ biojava-live/src/org/biojava/bio/symbol/UkkonenSuffixTree.java	Wed Aug 20 15:56:54 2003
@@ -1,10 +1,30 @@
 package org.biojava.bio.symbol;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import org.biojava.bio.Annotation;
+import org.biojava.bio.BioRuntimeException;
+import org.biojava.bio.BioError;
 import org.biojava.bio.BioException;
 import org.biojava.bio.seq.io.SymbolTokenization;
+import org.biojava.bio.seq.io.CharacterTokenization;
+import org.biojava.bio.seq.io.SymbolListCharSequence;
+import org.biojava.bio.symbol.IllegalAlphabetException;
+import org.biojava.bio.symbol.Alphabet;
+import org.biojava.bio.symbol.Edit;
+import org.biojava.bio.symbol.SymbolList;
+import org.biojava.bio.symbol.Symbol;
+import org.biojava.utils.Changeable;
+import org.biojava.utils.AssertionFailure;
+import org.biojava.utils.ChangeListener;
+import org.biojava.utils.ChangeType;
+import org.biojava.utils.ChangeVetoException;
+import org.biojava.utils.Unchangeable;
+
 
 /**
  * <p>
@@ -32,7 +52,7 @@
  * biojava-dev at biojava.org and I'll add it in there.
  *<\p>
  * @author Francois Pepin
- * @version $Revision: 1.6 $
+ * @version 1.3
  */
 public class UkkonenSuffixTree{
 
@@ -44,7 +64,7 @@
   public static final int TO_A_LEAF = -1;
   private int e;
 
-  private String sequences;
+  private CharSequence sequences;
 
   private FiniteAlphabet alpha;
 
@@ -64,7 +84,7 @@
    */
   public UkkonenSuffixTree(){
     terminationChar = DEFAULT_TERM_CHAR;
-    root = new SuffixNode();
+    root = new SimpleNode();
     e=0;
     sequences = "";
     alpha=null;
@@ -80,45 +100,15 @@
     this.alpha=alpha;
   }
 
-
-  /** Makes a string out of a SymbolList, this string should only be used for
-   * internal or testing purposes, as it will necessarily consist of visible
-   * characters. It basically works by assigning a given character to every symbol.
-   * @param list a <code>SymbolList</code> to be converted to a string.
-   * @return a <code>String</code> representation of the SymbolList
-   * @exception IllegalSymbolException if an error occurs
-   */
-  public String symbolListToString(SymbolList list) throws IllegalSymbolException{
-    try {
-      FiniteAlphabet alpha = (FiniteAlphabet)list.getAlphabet();
-      SymbolTokenization tok = alpha.getTokenization("token");
-      return tok.tokenizeSymbolList(list);
-    } catch (BioException be) {
-      throw new IllegalSymbolException(be.toString());
-    }
-  }
-
-  /** Converts a string that came from symbolListToString back to a SymbolList.
-   * This should only be called for internal or testing purposes. The behavior
-   * is not defined if the string contains an unknown character.
-   * @param string a <code>String</code> to be converted to SymbolList
-   * @return a <code>SymbolList</code> representation of the string above.
-   */
-  public SymbolList stringToSymbolList(String string){
-    try {
-      SymbolTokenization tok = alpha.getTokenization("token");
-      return new SimpleSymbolList(tok, string);
-    } catch (BioException be) {
-      System.err.println("No alphabet known to the SuffixTree.");
-      return null;
-    }
-  }
-
   public void addSymbolList(SymbolList list, String name, boolean doNotTerminate) throws IllegalSymbolException{
-    String seq = symbolListToString(list);
+    if (!doNotTerminate)
+      list = new TerminatedSymbolList(list);
     
-    if(!doNotTerminate)
-      seq = seq+terminationChar;
+    CharSequence seq =new SymbolListCharSequence(list);
+    //if (!doNotTerminate)
+      
+    //if(!doNotTerminate)
+    //  seq = seq+terminationChar;
     addPreppedSequence(seq);
   }
 
@@ -163,7 +153,7 @@
    *
    * @param seq a <code>String</code> value
    */
-  private void addPreppedSequence(String seq){
+  private void addPreppedSequence(CharSequence seq){
     int i, gammaStart;
     int j=0;
     SuffixNode oldNode=null, newNode;
@@ -261,7 +251,7 @@
   public SuffixNode walkTo(SuffixNode starting, String source, int from, int to){
     SuffixNode currentNode;
     SuffixNode arrivedAt;
-    String edgeLabel;
+    CharSequence edgeLabel;
     
     
     currentNode=starting;
@@ -285,12 +275,12 @@
           else
             rule=5;
         }
-        if (edgeLabel.substring(0, to-from).equals(source.substring(from,to)))
+        if (edgeLabel.subSequence(0, to-from).equals(source.substring(from,to)))
           rule=4;
         else
           rule=3;
         from=to;
-      } else if (source.substring(from,from+edgeLabel.length())
+      } else if (source.subSequence(from,from+edgeLabel.length())
                  .equals(edgeLabel)) {
         from+=edgeLabel.length();
         currentNode=arrivedAt;
@@ -325,7 +315,7 @@
    * stopped inside an edge. (check the rule variable to see where it
    * stopped).
    */
-  public SuffixNode jumpTo(SuffixNode starting, String source, int from, int to){
+  public SuffixNode jumpTo(SuffixNode starting, CharSequence source, int from, int to){
     SuffixNode currentNode;
     SuffixNode arrivedAt;
     boolean canGoDown = true;
@@ -351,7 +341,7 @@
       //  System.out.println(to+" here to "+source.substring(from, to)+" "+(i++));
       
       if (currentNode.isTerminal()){
-      	System.out.println("ARRGH! at "+source.substring(original, to)+
+      	System.out.println("ARRGH! at "+source.subSequence(original, to)+
                            "("+from+","+original+","+to+
                            ") from "+getLabel(originalNode));
         //Something truly awful happened if this line is ever reached.
@@ -418,8 +408,8 @@
     return childLength-parentLength;
   }
 
-  protected String getEdgeLabel(SuffixNode child){
-    return sequences.substring(
+  protected CharSequence getEdgeLabel(SuffixNode child){
+    return sequences.subSequence(
                                child.labelStart+
                                (getPathLength(child)-getEdgeLength(child)),
                                (child.labelEnd==TO_A_LEAF)?
@@ -435,11 +425,11 @@
     return node.labelEnd==TO_A_LEAF?e:node.labelEnd;
   }
 
-  protected String getLabel(SuffixNode node){
+  protected CharSequence getLabel(SuffixNode node){
     if (node==root)
       return "root";
     else
-      return sequences.substring(
+      return sequences.subSequence(
                                  node.labelStart,
                                  (node.labelEnd==TO_A_LEAF)?e:node.labelEnd).toString();
   }
@@ -497,7 +487,7 @@
 
   private void doRule2(SuffixNode parent, int splittingPos, int suffixStart){
     //int number = getAllNodes(root, null, false).size();
-    SuffixNode leaf = new SuffixNode (parent, suffixStart);
+    SuffixNode leaf = new SimpleNode (parent, suffixStart);
 
     parent.children.put(new Character(sequences.charAt(splittingPos)), leaf);
     //System.out.println("rule 2: "+sequences.charAt(splittingPos)+" from "+getLabel(parent)+ " to "+getLabel(leaf));
@@ -510,7 +500,7 @@
     //			       suffixStart);
     //int number = getAllNodes(root, null, false).size();
     SuffixNode parent = child.parent;
-    SuffixNode middle= new SuffixNode(parent,suffixStart,splittingPos);
+    SuffixNode middle= new SimpleNode(parent,suffixStart,splittingPos);
     Character x=new Character(
                               sequences.charAt(child.labelStart+getPathLength(child)-getEdgeLength(child)));
 
@@ -546,17 +536,68 @@
    * end Tree modification methods
    ******************************************************************/
 
-  class SuffixNode {
+  public static abstract class SuffixNode {
+    
     static final int A_LEAF=-1;
     SuffixNode parent;
     SuffixNode suffixLink;
     int labelStart, labelEnd;
     HashMap children;
     int[] additionalLabels;
+    
+    /**
+       * Determine is this node is terminal (has no children).
+       *<p>
+       * Note that this only happens at the terminated node (if the sequences
+       * have been terminated.
+       *
+       * @return <code>true</code> if and only if this node has no children.
+       */
+
+    abstract public boolean isTerminal();
+      
+    /**
+     * Determine if this node has a child corresponding to a given character
+     *
+     * @param i the first <code>Character</code> of the edge coming down this node.
+     * @return <code>true</code> if the node has a child going down from that character,
+     * false otherwise
+     */
+    abstract public boolean hasChild(Character i);
+
+    /** Gets the child of of a node that is coming down from that particular
+     * node. It returns null if no child exists or if no child exists starting
+     * on that particular character.
+     *
+     * @param i the first <code>Character</code> of the edge coming down this node
+     * @return the appropriate child <code>SuffixNode</code>, or null if it
+     * doesn't exists.
+     */
+    abstract SuffixNode getChild(Character i);
+    //abstract void addChild(SuffixTree tree, int i, SuffixNode n);
+
+    /**
+     * Returns the parent of this node, null if it's the root.
+     *
+     * @return the parent of this node, null if it's the root.
+     */
+    abstract SuffixNode getParent();
+    
+  }
+  
+
+  class SimpleNode extends SuffixNode{
+    
+    //static final int A_LEAF=-1;
+    //SuffixNode parent;
+    //SuffixNode suffixLink;
+    //int labelStart, labelEnd;
+    //HashMap children;
+    //int[] additionalLabels;
 
     /** Creates a root
      */
-    public SuffixNode(){
+    public SimpleNode(){
       parent=null;
       suffixLink=null;
       labelStart=0;
@@ -569,7 +610,7 @@
      * @param parent the parent node
      * @param position the starting value of the suffix
      */
-    public SuffixNode(SuffixNode parent, int position){
+    public SimpleNode(SuffixNode parent, int position){
       this();
       this.parent=parent;
       labelStart=position;
@@ -583,7 +624,7 @@
      * @param labelStart the starting point of the path label
      * @param labelStop the ending point of the path label
      */
-    public SuffixNode(SuffixNode parent, int labelStart, int labelStop){
+    public SimpleNode(SuffixNode parent, int labelStart, int labelStop){
       this();
       this.parent=parent;
       this.labelStart=labelStart;
@@ -593,6 +634,11 @@
     
     
     public boolean isTerminal(){return children==null;}
+    public boolean hasChild(Character x){return getChild(x)==null;}
+    public SuffixNode getChild(Character x){
+      return (children==null)?null:(SuffixNode)children.get(x);
+    }
+    public SuffixNode getParent(){return parent;}
   }
 
   /** This is simply a debugging method to check that a node was created
@@ -603,13 +649,13 @@
    */
   private void checkParent(SuffixNode child){
     SuffixNode parent=child.parent;
-    String parentLabel=getLabel(parent);
-    String label =getLabel(child);
+    CharSequence parentLabel=getLabel(parent);
+    CharSequence label =getLabel(child);
 
     if (parentLabel.equals("root"))
         parentLabel="";
     
-    if (parentLabel.length()>=label.length()||!parentLabel.equals(label.substring(0,parentLabel.length())))
+    if (parentLabel.length()>=label.length()||!parentLabel.equals(label.subSequence(0,parentLabel.length())))
     {
       System.err.println("bad addition on rule "+rule);
       System.err.println(parentLabel+" against "+ label);
@@ -624,5 +670,153 @@
     walkTo(root, str, 0, str.length());
     return (rule==1||rule==4||rule==5);
   }
-  
+
+  /**
+   * Stupid little wrapper to put a termination symbol at the end. A sublist
+   * that doesn't include the termination symbol will have the same alphabet as
+   * the original, one that does will have an alphabet that includes the
+   * termination symbol.
+   *
+   */
+  private class TerminatedSymbolList implements SymbolList
+  {
+    private SymbolList unterminated;
+    final Symbol TERMINATION_SYMBOL;
+    private AbstractAlphabet alpha;
+        
+    public TerminatedSymbolList(SymbolList unterminated)
+    {
+      this.unterminated=unterminated;
+      TERMINATION_SYMBOL = AlphabetManager.createSymbol("Termination");
+      FiniteAlphabet oldAlphabet = (FiniteAlphabet)unterminated.getAlphabet();
+      Set set=AlphabetManager.getAllSymbols(oldAlphabet);
+      set.add(TERMINATION_SYMBOL);
+      alpha = new SimpleAlphabet(set);
+      CharacterTokenization tokenizer =new CharacterTokenization(alpha, true);
+      tokenizer.bindSymbol(TERMINATION_SYMBOL, DEFAULT_TERM_CHAR);
+      SymbolTokenization sToke;
+      try{
+        sToke = oldAlphabet.getTokenization("token");
+      }
+      catch (BioException be){
+          throw new BioError("Internal error: failed to get SymbolTokenization for SymbolList alphabet", be);
+      }
+      if (sToke.getTokenType() != SymbolTokenization.CHARACTER)
+        throw new IllegalArgumentException("Only FiniteAlphabets using a char token are supported by UkkonenSuffixTree");
+      try{
+        for (Iterator i= AlphabetManager.getAllSymbols(oldAlphabet).iterator();i.hasNext();){
+          Symbol s = (Symbol) i.next();
+          //takes first char of String, should work because we checked
+          //getTokenType above
+          tokenizer.bindSymbol(s,sToke.tokenizeSymbol(s).charAt(0));
+        }
+        //This is really hacky, ambiguous symbols containing
+        //TERMINATION_SYMBOL are impossible at this point, so I just define
+        //the Tokenization to treat them as TERMINATION_SYMBOL so that the
+        //code that likes to loop through doesn't go titty up.
+        for (Iterator i= AlphabetManager.getAllSymbols(alpha).iterator();i.hasNext();){
+          Symbol s = (Symbol) i.next();
+          Alphabet mathes = s.getMatches();
+          if (mathes.contains(TERMINATION_SYMBOL))
+              tokenizer.bindSymbol(s,DEFAULT_TERM_CHAR);
+        }
+          
+      }catch(IllegalSymbolException ise){
+        throw new AssertionFailure("Assertion Failure: This alphabet has been custom made so this doesn't happen",ise);
+      }
+      
+      alpha.putTokenization("token", tokenizer);
+    }
+    
+      
+      // Implementation of org.biojava.utils.Changeable
+
+    public void addChangeListener(ChangeListener changeListener, ChangeType changeType) {
+      unterminated.addChangeListener(changeListener,changeType);
+    }
+
+    public void addChangeListener(ChangeListener changeListener) {
+      unterminated.addChangeListener(changeListener);
+    }
+
+    public void removeChangeListener(ChangeListener changeListener, ChangeType changeType) {
+      unterminated.removeChangeListener(changeListener,changeType);
+    }
+
+    public void removeChangeListener(ChangeListener changeListener) {
+      unterminated.removeChangeListener(changeListener);
+    }
+
+    public boolean isUnchanging(ChangeType changeType) {
+      return unterminated.isUnchanging(changeType);
+    }
+    
+    // Implementation of org.biojava.bio.symbol.SymbolList
+
+    public int length() {
+      return unterminated.length()+1;
+    }
+
+    public Iterator iterator() {
+      return unterminated.iterator();
+    }
+
+    public SymbolList subList(int n, int n1) throws IndexOutOfBoundsException {
+      List list;
+      if (n1!=unterminated.length()+1)
+        return unterminated.subList(n,n1);
+      else{
+        list = unterminated.subList(n,n1-1).toList();
+        list.add(TERMINATION_SYMBOL);
+        try{
+          return new SimpleSymbolList(getAlphabet(),list);
+        }
+        catch(IllegalSymbolException e){
+          throw new AssertionFailure("Assertion Failure: This alphabet was created just so it doesn't do this",e);
+        }
+      }
+    }
+
+    public Alphabet getAlphabet() {
+      return alpha;
+    }
+
+    public Symbol symbolAt(int n) throws IndexOutOfBoundsException {
+      if (n!=length())
+        return unterminated.symbolAt(n);
+      else
+        return TERMINATION_SYMBOL;
+    }
+
+    public List toList() {
+      List answer = unterminated.toList();
+      answer.add(TERMINATION_SYMBOL);
+      return answer;
+    }
+
+    public String seqString() {
+      try{
+        SymbolTokenization toke = getAlphabet().getTokenization("token");
+        return unterminated.seqString()+toke.tokenizeSymbol(TERMINATION_SYMBOL);
+      } catch (BioException ex) {
+        throw new BioRuntimeException("Couldn't tokenize sequence", ex);
+      }
+    }
+    
+      public String subStr(int n, int n1) throws IndexOutOfBoundsException {
+      return subList(n, n1).seqString();
+    }
+
+    /**
+     * Describe <code>edit</code> method here.
+     *
+     * @param edit an <code>Edit</code> value
+     * @exception IndexOutOfBoundsException if an error occurs
+     * @exception IllegalAlphabetException if an error occurs
+     * @exception ChangeVetoException if an error occurs
+     */
+    public void edit(Edit edit) throws IndexOutOfBoundsException, IllegalAlphabetException, ChangeVetoException {
+      throw new ChangeVetoException("TerminatedSymbolList is immutable");
+    }
+  }
 }
Index: biojava-live/tests/org/biojava/bio/MergeAnnotationTest.java
diff -u /dev/null biojava-live/tests/org/biojava/bio/MergeAnnotationTest.java:1.1
--- /dev/null	Thu Aug 21 03:27:51 2003
+++ biojava-live/tests/org/biojava/bio/MergeAnnotationTest.java	Wed Aug 20 17:49:49 2003
@@ -0,0 +1,72 @@
+/*
+ *                    BioJava development code
+ *
+ * This code may be freely distributed and modified under the
+ * terms of the GNU Lesser General Public Licence.  This should
+ * be distributed with the code.  If you do not have a copy,
+ * see:
+ *
+ *      http://www.gnu.org/copyleft/lesser.html
+ *
+ * Copyright for this code is held jointly by the individual
+ * authors.  These should be listed in @author doc comments.
+ *
+ * For more information on the BioJava project and its aims,
+ * or to join the biojava-l mailing list, visit the home page
+ * at:
+ *
+ *      http://www.biojava.org/
+ */
+
+
+package org.biojava.bio;
+
+
+import org.biojava.bio.*;
+import junit.framework.*;
+import java.util.*;
+
+/** List of tests for for MergeAnnotationTree.
+ * @author Francois Pepin
+ * @version 1.4
+ */
+public class MergeAnnotationTest extends TestCase {
+
+  Annotation anno1;
+  Annotation anno2;
+
+  MergeAnnotation merged;
+
+  public static void main(String args[]){
+    junit.textui.TestRunner.run(new TestSuite(MergeAnnotationTest.class));
+  }
+  
+  protected void setUp() throws Exception
+  {
+    anno1 = new SimpleAnnotation();
+    anno1.setProperty("name", "michelle");
+    anno1.setProperty("age", "27");
+        
+    anno2 = new SmallAnnotation();
+    anno2.setProperty("work", "mcb");
+    anno2.setProperty("favorite food", "?");
+    anno2.setProperty("cat", "bretelle&trouser");
+    
+    merged = new MergeAnnotation();
+    merged.addAnnotation(anno1);
+    merged.addAnnotation(anno2);
+  }
+
+  public void testAnnotation() {
+    assertEquals(2,merged.getAnnotations().size());
+  }
+  
+  
+  public void testKeys()
+  {
+    assertEquals(5, merged.keys().size());
+  }
+  
+}
+
+      
Index: biojava-live/tests/org/biojava/bio/symbol/UkkonenSuffixTreeTest.java
diff -u biojava-live/tests/org/biojava/bio/symbol/UkkonenSuffixTreeTest.java:1.4 biojava-live/tests/org/biojava/bio/symbol/UkkonenSuffixTreeTest.java:1.5
--- biojava-live/tests/org/biojava/bio/symbol/UkkonenSuffixTreeTest.java:1.4	Sun May  4 19:57:15 2003
+++ biojava-live/tests/org/biojava/bio/symbol/UkkonenSuffixTreeTest.java	Wed Aug 20 15:57:38 2003
@@ -6,7 +6,7 @@
 
 /** List of tests for for UkkonenSuffixTree.
  * @author Francois Pepin
- * @version $Revision: 1.4 $
+ * @version $Revision: 1.5 $
  */
 public class UkkonenSuffixTreeTest extends TestCase {
 
@@ -44,17 +44,17 @@
     assertEquals(12,test.getAllNodes(test.getRoot(), null, true).size());
   }
 
-  public void testSymbolListConversion(){
+  /*public void testSymbolListConversion(){
     SymbolList here=null;
     SymbolList here2=null;
     try{
       here = DNATools.createDNA("taccaccagga");
       test = new UkkonenSuffixTree((FiniteAlphabet)here.getAlphabet());
-      here2= test.stringToSymbolList(test.symbolListToString(here));
+      //here2= test.stringToSymbolList(test.symbolListToString(here));
     }catch(IllegalSymbolException e){e.printStackTrace();}
     for (int i=1;i<=here.length();i++)
       assertEquals(here.symbolAt(i),here2.symbolAt(i));
-  }
+      }*/
 
   // adding twice the same string should be the same
   public void testDuplicateAddition(){
@@ -65,6 +65,21 @@
     assertEquals(12,test.getAllNodes(test.getRoot(), null, true).size());
   }
 
+  public void testGetterMethods()
+  {
+    SymbolList here=null;
+    try{
+      here = DNATools.createDNA("taccaccagga");
+      test = new UkkonenSuffixTree((FiniteAlphabet)here.getAlphabet());
+      test.addSymbolList(here, "name", false);
+    }catch(IllegalSymbolException e){e.printStackTrace();}
+    assertTrue(test.getRoot().getParent()==null);
+    //bad test that mixes SymbolLists and CharSequence, but it still works.
+    assertTrue(test.getRoot().hasChild(new Character('g')));
+    assertTrue(test.getRoot().getChild(new Character(UkkonenSuffixTree.DEFAULT_TERM_CHAR)).isTerminal());
+  }
+  
+  
   public void testlongAddition(){
     test.addSequence(dna, "name", false);
     int before = test.getAllNodes(test.getRoot(), null, false).size();
@@ -75,7 +90,6 @@
     assertEquals(before, after);
 
     //test.printTree();
-
   }
    private String dna=
    "GGCTCAGTCCCGACGTGGAACTCAGCAGCGGAGGCTGGACGCTTGCATGGCGCTTGAGGCAAGTTCGGGGCTCATTTTGGAAGTTTTCTTTCTAGCACAGACATCCAACTCTGCTCCTATGCCAGTCAGATAATTAAGGAATTAAGTAATAATTGTGCTCTGCAAATTATGATAGTGATCTGTATTTACTACGTGCATATATTTTGGGCCAGTGAATTTTTTTCTAAGCTAATATAGTTATTTGGACTTTTGACATGACTTTGTGTTTAATTAAAACAAAAAAAGAAATTGCAGAAGTGTTGTAAGCTTGTAAAAAAATTCAAACAATGCAGACAAATGTGTCTCGCAGTCTTCCACTCAGTATCATTTTTGTTTGTACCTTATCAGAAATGTTTCTATGTACAAGTCTTTAAAATCATTTCGAACTTGCTTTGTCCACTGAGTATATTATGGACATCTTTTCATGGCAGGACATATAGATGTGTTAATGGCATTAAAAATAAAACAAAAAACTGATTCGGCCGGGTACGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGATCGAGGAGGGAGGATCACCTGAGGTCAGGAGTTACAGACATGGAGAAACCCCGTCTCTACTAAAAATACAAAATTAGCCTGGCGTGGTGGCGCATGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGCGGAGGTTGCGGTGAGCCGAGATCGCACCGTTGCACTCCAGCCTGGGCGACAGAGCGAAACTGTCTCAAACAAACAAACAAAAAAACCTGATACATGGTATGGGAAGTACATTGTTTAAACAATGCATGGAGATTTAGGTTGTTTCCAGTTTTTACTGGCACAGATACGGCAATGAATATAATTTTATGTATACATTCATACAAATATATCGGTGGAAAATTCCTAGAAGTGGAATGGCTGGGTCAGTGGGCATTCATATTGAGAAATTGGAAGGATGTTGTCAAACTCTGCAAATCAGAGTATTTTAGTCTTAACCTCTCTTCTTCACACCCTTTTCCTTGGAAGAAAGCTAAATTTAGACTTTTAAACACAAAACTCCATTTTGAGACCCCTGAAAATCTGGGTTCAAAGTGTTTGAAAATTAAAGCAGAGGCTTTAATTTGTACTTATTTAGGTATAATTTGTACTTTAAAGTTGTTCCAGAAAACAAGGCAAATACTGAAAAGCATTTCATCTGAAGTTTCTTTCTGGTATTGAACAGAGTTGGATGGAGAGTGAATGCAGGTTACCGATGTGTTCGCAGGAACAAAACGGGAGGGAGAGTAACACAGGTGCACGGCTTCATATTGATTTATCAAAGAACTTGCTTTTGGACTGTTAAAAAATGTGTTGCACAGTTCTGACACTTTTACACAATGATGAGCTTACAAAGGGGAAAATGCTTAACATAAACATAGTTTCAAAGAAGGTAAGTCCTAGTTTTTCCACGAGCTGTTTTTTTTTTTGAGAGAGAGTAGTCCCAAAATTTCCCTATTATGTGGTTTTTCATCCAAAGTGTTGTAATCCGTGTGTTCTAACCCGCATATTACGATTACTCAAGAAATGCAAAATAGGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCAATTTGGGAGGCCGAGGCAGGTGGATCACGAGGTCAGGAGATCAAGACCATCCTAGCTAACACGGTGCAAACCCATCTACTAAAAATAAAAAATATTAGCTGGGCGTGGCGGCAGGCGCCTGTAGTCCCAACTACTCGGGAGGCTGAGGCAGGAGAATGGCGTGAACCTGGGAGGCGGAGCTTGCAGTGAGCCAAGATCCGGCCACTGCACTCCAGCCTGGGCGACAGAGGGAGACTCCGTCTCAAAAATAAAAATAAAAATAAAAAAAGAAAAAAGAAATGCAAAATAATGTGAACACGTCATCGAGACTGCGGTCTACAATTGTGGTTGCCATGATGGGGTGGGTCGGAAGACACCGAGGCTGCTTGAATCATGTTCCTGGCAGGTTAATTTTGTTCCTTTTAGGGCATCTAAATGTTGGAGTTGGCTTTCCTGGCAGAGAGTCCAGTTGTGAGTGGAGTATTGGGTGGAGGCCCCACCCTCCCCAGGTTTTCTGCAGCTTGTTCCTGGCTCTTCTGGGGCTTCTCTGAGGACCCCGATTGGTCCTGGGGCTTCTTTAGTGGTGGGCCTGGGCCAGTTCCTTCCGTTGCTCACCTCTCCCCGAAGCTTAAGGATAACATTTCGGGAAGATCATGAGAGAACGTGAACCAAAAAAAAAAAAAAAAATTCAGGTAGGGTGGGAGCTAAGTTAGTTTAGTATTTGGGATTTTTGTTTTGTTTTGTTTGAGACAGAGTCTCAAACAAAGACCCCGCGCCTGGCCTGGGGGTCTTTTTTTGAGTCAGCAGTTGAGTTTGAAAATCCCCTTCCTTGGAATCCGCCCAGGCTGTTTTCTCTGGTGGATGCTTATTGCCCCTGCTAACTTCAGCTGCGGTCTCTCTGCTCGCCTTGCCCTCCCCATCCTCCTTAGACCTTTTAAGCTTCACTTTCCTTTCCTTGCTGCCCCGCCTCCCTGTCTCCCCAGTGTGATCTACCCTGAAAGGCTGCTGTATTTTGTTTCCCTTTGGGACCGAGCCTGCTCAAATGATCTGCTCCATGAGGTTTTACTGCTATATCCTACTGAAGTATCTGGGAGGTCTTGGCGGAGAAGAGGACAACATCTTGGAAAATGCAGCCTGGAACCTCTCTGCTCTCTTTCATCAGCTTTCCCTCAATGATGAGCTCAAAATCCTCTTTCTTGCTGATGGAATTGTCTGCTGTCATCATTTCAGTTGAGTCCTCCTAGGCTGGGCCTTGTAAGAAGAACAACTGTTTATAACTATTGAAAGTCAATATTTACTAAGAAAAAGAGGTTGTTGTTATCTGAGCCATCCAACATGAATTTAAGAATATATTCCAGGCTGGGCGCGGTGGCTCATGCCTGTAATCCCAGCACTTTGGGAGGCCGAGATGGGTGGATCACCTGAGGTCAGGAGTTCAAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCATGCGTGGTGGCACATGCCTGTAGTTCCAACTATTTGGGACACTAAGGCAGGGGAAGTGCTTGAACTCGGGAGGCAGAGGTTGCAGTGAGCTGAGATTGTACCACTGCACTCCAGCCTGGGTAAAAAGAGTGAAATTCCATCTCAAAAAAAAAAAAGGAGACAGGGTCTTGCCCTGTTGCCCAGGCTGGAGTGCCGTGGCACGATCATAACTCACTGTGGCCTCAAATTCCTGGGCTCAACTGATTCTCCTGCCTCAGTCTCCCAAGTAGCTGGGACCACAAGTACATGCCACCATGCTAGGCTAATTTTATTTTTATTTTTAGAAAATAAAATATTTTTTATTTTATTTAGGCAACATGCTATGTTGCCTAGACTGGTCTTGAACTCCTGGCTTCAAGCTATCCTCTTGCCTCAGCCAACCAAAGTGCTGGGATTGCAGGTGTGAACTGCCATGCCTGGCTTTCTATTCTCTATTTCTAGGAGATAAGCTTTTTGAGCTTTCACATATGAGTGTGAACATGTGGTATTTATCTTTCTGTGCCTAGGTTATTCCACTTAACGTAATGTACTCCAGGCTCATCCATGTTGATGGGAATTACAGGATTTCATTCTCTTGTAATGGCTGAATAACATCCCATTTTGTGTATATAGTCCACATGTTCTTTATCCATTCCTCTTTTGATAGACACTTAGGTTGATTCCGTATCTCGGGTATTATGAGCAGTGCTGCAGTAAACATGAGAGTGCAAATATCTCTTCAACATACTGATTCCCTTTCCTTTGGATATATATTCAGCAGT";
-------------- next part --------------
Buildfile: build.xml

init:
     [echo] JUnit present:                   true
     [echo] JUnit supported by Ant:          true

prepare:

prepare-core:

prepare-src:

compile:

package:

compile-tests:
    [javac] Compiling 95 source files to /home/thomas/bjtemp/biojava-20030821/ant-build/classes/tests
    [javac] depend attribute is not supported by the modern compiler

runtests:
    [junit] Running org.biojava.bio.symbol.CompoundLocationTest
    [junit] Tests run: 11, Failures: 0, Errors: 0, Time elapsed: 0.301 sec
    [junit] Running org.biojava.bio.symbol.RangeLocationTest
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 0.094 sec
    [junit] Running org.biojava.bio.symbol.CrossProductAlphabetIndexTest
    [junit] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 38.69 sec
    [junit] Running org.biojava.bio.symbol.AlphabetManagerTest
    [junit] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 2.292 sec
    [junit] Running org.biojava.bio.symbol.CircularLocationTest
    [junit] Tests run: 9, Failures: 0, Errors: 0, Time elapsed: 0.148 sec
    [junit] Running org.biojava.bio.symbol.MergeLocationTest
    [junit] Tests run: 6, Failures: 0, Errors: 0, Time elapsed: 0.108 sec
    [junit] Running org.biojava.bio.symbol.IntegerAlphabetTest
    [junit] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 1.56 sec
    [junit] Running org.biojava.bio.symbol.NameTokenizationTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 1.599 sec
    [junit] Running org.biojava.bio.symbol.SymbolSerializationTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 1.717 sec
    [junit] Running org.biojava.bio.symbol.UkkonenSuffixTreeTest
    [junit] Tests run: 5, Failures: 0, Errors: 2, Time elapsed: 1.876 sec
    [junit] Running org.biojava.bio.symbol.SimpleSymbolListTest
    [junit] Tests run: 10, Failures: 0, Errors: 0, Time elapsed: 1.607 sec
    [junit] Running org.biojava.bio.symbol.TranslationTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 2.841 sec
    [junit] Running org.biojava.bio.symbol.SimpleWobbleDistributionTest
    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 1.427 sec
    [junit] Running org.biojava.bio.symbol.BetweenLocationTest
    [junit] Tests run: 34, Failures: 0, Errors: 0, Time elapsed: 0.119 sec
    [junit] Running org.biojava.bio.symbol.PointLocationTest
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 0.103 sec
    [junit] Running org.biojava.bio.symbol.SimpleCodonPrefTest
    [junit] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 1.447 sec
    [junit] Running org.biojava.bio.symbol.PackedDnaSymbolListTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 1.674 sec
    [junit] Running org.biojava.bio.symbol.CodonPrefToolsTest
    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 3.425 sec
    [junit] Running org.biojava.bio.symbol.MotifToolsTest
    [junit] Tests run: 13, Failures: 0, Errors: 0, Time elapsed: 1.634 sec
    [junit] Running org.biojava.bio.symbol.AlphabetSerializationTest
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 2.538 sec
    [junit] Running org.biojava.bio.symbol.SymbolListTest
    [junit] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 5.26 sec
    [junit] Running org.biojava.bio.symbol.CrossProductTokenizationTest
    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 1.611 sec
    [junit] Running org.biojava.bio.symbol.GappedSymbolListTest
    [junit] Tests run: 9, Failures: 0, Errors: 0, Time elapsed: 1.601 sec
    [junit] Running org.biojava.bio.symbol.DoubleAlphabetTest
    [junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 1.546 sec
    [junit] Running org.biojava.bio.seq.homol.SimpleSimilarityPairFeatureTest
    [junit] Tests run: 8, Failures: 0, Errors: 0, Time elapsed: 1.828 sec
    [junit] Running org.biojava.bio.seq.DNAToolsTest
    [junit] Tests run: 10, Failures: 0, Errors: 0, Time elapsed: 1.617 sec
    [junit] Running org.biojava.bio.seq.CircularSequenceTest
    [junit] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 0.277 sec
    [junit] Running org.biojava.bio.seq.io.SmartSequenceBuilderTest
    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 6.221 sec
    [junit] Running org.biojava.bio.seq.io.SeqIOToolsTest
    [junit] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 6.429 sec
    [junit] Running org.biojava.bio.seq.io.agave.AGAVEHandlerTest
    [junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 2.438 sec
    [junit] Running org.biojava.bio.seq.io.MSFAlignmentFormatTest
    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 1.671 sec
    [junit] Running org.biojava.bio.seq.io.LocationFormatterTest
    [junit] Tests run: 26, Failures: 0, Errors: 0, Time elapsed: 2.803 sec
    [junit] Running org.biojava.bio.seq.io.filterxml.FilterXMLTest
    [junit] Tests run: 12, Failures: 0, Errors: 0, Time elapsed: 1.433 sec
    [junit] Running org.biojava.bio.seq.db.emblcd.EntryNamRandomAccessTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.068 sec
    [junit] Running org.biojava.bio.seq.db.emblcd.DivisionLkpReaderTest
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 0.079 sec
    [junit] Running org.biojava.bio.seq.db.emblcd.EntryNamIdxReaderTest
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 0.079 sec
    [junit] Running org.biojava.bio.seq.db.EmblCDROMIndexStoreTest
    [junit] Tests run: 11, Failures: 0, Errors: 0, Time elapsed: 2.37 sec
    [junit] Running org.biojava.bio.seq.FilterUtilsTest
    [junit] Tests run: 23, Failures: 0, Errors: 0, Time elapsed: 0.373 sec
    [junit] Running org.biojava.bio.seq.MergeFeatureHolderTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.174 sec
    [junit] Running org.biojava.bio.seq.FeatureFilterTest
    [junit] Tests run: 8, Failures: 0, Errors: 0, Time elapsed: 2 sec
    [junit] Running org.biojava.bio.seq.NewSimpleAssemblyTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 2.303 sec
    [junit] Running org.biojava.bio.seq.SimpleAssemblyTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 2.372 sec
    [junit] Running org.biojava.bio.seq.impl.GappedSequenceTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 2.275 sec
    [junit] Running org.biojava.bio.seq.impl.ViewSeqSerializationTest
    [junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 2.418 sec
    [junit] Running org.biojava.bio.seq.impl.SubSequenceTest
    [junit] Tests run: 8, Failures: 0, Errors: 0, Time elapsed: 2.456 sec
    [junit] Running org.biojava.bio.seq.project.ProjectedFeatureHolderTest
    [junit] Tests run: 6, Failures: 0, Errors: 0, Time elapsed: 2.325 sec
    [junit] Running org.biojava.bio.seq.filter.FilterTransformerTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.583 sec
    [junit] Running org.biojava.bio.seq.SeqSerializationTest
    [junit] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 2.048 sec
    [junit] Running org.biojava.bio.seq.RNAToolsTest
    [junit] Tests run: 34, Failures: 0, Errors: 0, Time elapsed: 2.978 sec
    [junit] Running org.biojava.bio.dp.MarkovModelEventTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 1.683 sec
    [junit] Running org.biojava.bio.dp.EmissionStateEventTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 1.636 sec
    [junit] Running org.biojava.bio.search.SimpleSeqSimilaritySearchResultTest
    [junit] Tests run: 5, Failures: 0, Errors: 0, Time elapsed: 2.238 sec
    [junit] Running org.biojava.bio.search.SimpleSeqSimilaritySearchHitTest
    [junit] Tests run: 6, Failures: 0, Errors: 0, Time elapsed: 2.216 sec
    [junit] Running org.biojava.bio.search.SimpleSeqSimilaritySearchSubHitTest
    [junit] Tests run: 5, Failures: 0, Errors: 0, Time elapsed: 2.286 sec
    [junit] Running org.biojava.bio.program.ssbind.SSBindWUblastn2_0a19Test
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 2.903 sec
    [junit] Running org.biojava.bio.program.ssbind.SSBindNCBIblastp2_0_11Test
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 8.721 sec
    [junit] Running org.biojava.bio.program.ssbind.SSBindNCBIblastn2_2_3Test
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 5.395 sec
    [junit] Running org.biojava.bio.program.ssbind.SSBindNCBIblastp2_2_3Test
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 9.005 sec
    [junit] Running org.biojava.bio.program.ssbind.SSBindNCBIblastx2_2_3Test
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 9.282 sec
    [junit] Running org.biojava.bio.program.ssbind.SSBindFasta3_3t08Test
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 3.433 sec
    [junit] Running org.biojava.bio.program.ssbind.SSBindWUtblastn2_0a19Test
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 18.469 sec
    [junit] Running org.biojava.bio.program.ssbind.SSBindNCBItblastn2_0_11Test
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 9.015 sec
    [junit] Running org.biojava.bio.program.ssbind.SSBindWUblastx2_0a19Test
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 3.151 sec
    [junit] Running org.biojava.bio.program.ssbind.SSBindNCBItblastn2_2_3Test
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 9.562 sec
    [junit] Running org.biojava.bio.program.ssbind.SSBindNCBItblastx2_2_3Test
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 30.097 sec
    [junit] Running org.biojava.bio.program.ssbind.SSBindNCBIblastn2_0_11Test
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 5.434 sec
    [junit] Running org.biojava.bio.program.ssbind.SSBindWUtblastx2_0a19Test
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 3.887 sec
    [junit] Running org.biojava.bio.program.ssbind.SSBindWUblastp2_0a19Test
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 2.669 sec
    [junit] Running org.biojava.bio.program.ssbind.SSBindNCBItblastx2_0_11Test
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 21.55 sec
    [junit] Running org.biojava.bio.program.ssbind.SSBindNCBIblastx2_0_11Test
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 8.618 sec
    [junit] Running org.biojava.bio.program.indexdb.IndexToolsTest
    [junit] Tests run: 6, Failures: 0, Errors: 0, Time elapsed: 3.823 sec
    [junit] Running org.biojava.bio.program.phred.PhredToolsTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 1.66 sec
    [junit] Running org.biojava.bio.MergeAnnotationTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.087 sec
    [junit] Running org.biojava.bio.AnnotationTypeTest
    [junit] Tests run: 7, Failures: 0, Errors: 0, Time elapsed: 0.174 sec
    [junit] Running org.biojava.bio.molbio.RestrictionEnzymeManagerTest
    [junit] Tests run: 5, Failures: 0, Errors: 0, Time elapsed: 2.003 sec
    [junit] Running org.biojava.bio.molbio.RestrictionEnzymeTest
    [junit] Tests run: 8, Failures: 0, Errors: 0, Time elapsed: 1.954 sec
    [junit] Running org.biojava.bio.dist.DistSerTest
    [junit] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 2.38 sec
    [junit] Running org.biojava.bio.dist.DistributionToolsTest
    [junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 2.013 sec
    [junit] Running org.biojava.bio.dist.DistributionTest
    [junit] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 1.753 sec
    [junit] Running org.biojava.bio.alignment.FlexibleAlignmentTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.026 sec
    [junit] Running org.biojava.bio.proteomics.MassCalcTest
    [junit] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 2.104 sec
    [junit] Running org.biojava.directory.SystemRegistryTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.453 sec
    [junit] Running org.biojava.directory.RegistryConfigurationTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.033 sec
    [junit] Running org.biojava.directory.OBDARegistryParserTest
    [junit] Tests run: 1, Failures: 0, Errors: 0, Time elapsed: 0.054 sec
    [junit] Running org.biojava.ontology.TermImplTest
    [junit] Tests run: 6, Failures: 0, Errors: 0, Time elapsed: 0.167 sec
    [junit] Running org.biojava.ontology.OntologyTest
    [junit] Tests run: 21, Failures: 0, Errors: 0, Time elapsed: 0.167 sec
    [junit] Running org.biojava.ontology.ReasoningDomainTest
    [junit] Tests run: 3, Failures: 0, Errors: 0, Time elapsed: 14.977 sec
    [junit] Running org.biojava.ontology.TripleImplTest
    [junit] Tests run: 8, Failures: 0, Errors: 0, Time elapsed: 0.138 sec
    [junit] Running org.biojava.utils.ListToolsTest
    [junit] Tests run: 2, Failures: 0, Errors: 0, Time elapsed: 0.031 sec
    [junit] Running org.biojava.utils.walker.WalkerTest
    [junit] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 0.485 sec
    [junit] Running org.biojava.utils.walker.WalkerFactoryTest
    [junit] Tests run: 4, Failures: 0, Errors: 0, Time elapsed: 0.396 sec
    [junit] Running org.biojava.utils.lsid.LifeScienceIdentifierTest
    [junit] Tests run: 10, Failures: 0, Errors: 0, Time elapsed: 0.125 sec

BUILD SUCCESSFUL
Total time: 6 minutes 49 seconds


More information about the biojava-dev mailing list