You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2011/11/07 14:36:34 UTC

svn commit: r1198733 [8/13] - in /incubator/jena/Scratch/AFS/Dev/trunk: src-archive/riot/comms/ src-archive/riot/comms/client/ src-archive/riot/comms/server0/ src-archive/riot/comms/server1/nio/ src-archive/riot/comms/server1/socket/ src-archive/riot/c...

Modified: incubator/jena/Scratch/AFS/Dev/trunk/src-lib/main/java/structure/ttree/TTreeNode.java
URL: http://svn.apache.org/viewvc/incubator/jena/Scratch/AFS/Dev/trunk/src-lib/main/java/structure/ttree/TTreeNode.java?rev=1198733&r1=1198732&r2=1198733&view=diff
==============================================================================
--- incubator/jena/Scratch/AFS/Dev/trunk/src-lib/main/java/structure/ttree/TTreeNode.java (original)
+++ incubator/jena/Scratch/AFS/Dev/trunk/src-lib/main/java/structure/ttree/TTreeNode.java Mon Nov  7 13:36:30 2011
@@ -1,4 +1,4 @@
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -16,477 +16,477 @@
  * limitations under the License.
  */
 
-package structure.ttree;
-
-import static structure.ttree.TTree.Checking ;
-import static structure.ttree.TTree.error ;
-
-import java.util.List ;
-
-import migrate.lib.ArrayOps ;
-import org.openjena.atlas.io.IndentedWriter ;
-import org.openjena.atlas.io.PrintUtils ;
-import org.openjena.atlas.io.Printable ;
-import org.openjena.atlas.lib.Alg ;
-import org.openjena.atlas.lib.Lib ;
-
-final
-class TTreeNode<T extends Comparable<? super T>> implements Printable
-{
-    // Debug
-    private static int counter = 0 ;
-    // Make this static (or remove).
-    private int id ;
-    
-    int height = TTree.InitialHeight ;      // New nodes are always leaves.
-    TTreeNode<T> parent ;
-    TTreeNode<T> left ;
-    TTreeNode<T> right ;
-    // Need to record start and stop if want slicing.
-    // Or nulls at low end during insert into a full node.
-    int nodeSize ; 
-    T elements[] ;
-    
-    /** Create a new T-Tree node */
-    @SuppressWarnings("unchecked")
-    TTreeNode(TTreeNode<T>parent, int size)
-    {
-        id = (++counter) ;
-        this.elements = (T[])new Comparable[size] ;
-        this.nodeSize = 0 ;
-        this.height = TTree.InitialHeight ;
-        this.parent = parent ;
-        //Arrays.fill(elements, null) ;
-    }
-
-    void set(T[] elements, int els, TTreeNode<T> parent, TTreeNode<T> left, TTreeNode<T> right)
-    {  
-        this.elements = elements ;
-        this.nodeSize = els ;
-        this.parent = parent ;
-        this.left = left ;
-        this.right = right ;
-        this.parent = parent ;
-        this.height = -1 ;
-    }
-    
-    /** Insert a item into a node.
-     *  
-     * @param item
-     * @return true if the node changed (replace a different element or insert the element) 
-     */
-    boolean add(T item)
-    { 
-        int idx = find(item) ;
-
-        if ( idx < 0 )
-        {
-            if ( elements.length == nodeSize )
-                error("Already full") ;
-            insertAt(Alg.decodeIndex(idx), item) ;
-            return true ;
-        }
-        else
-        {
-            T orig = elements[idx] ;
-            if ( Lib.equal(item, orig) )
-                return false ;
-            elements[idx] = item ;
-            return true ;
-        }
-    }
-    
-    void insertAt(int idx,T item)
-    {
-        ArrayOps.insert(elements, idx, item) ;
-        nodeSize++ ;
-    }
-    
-    T removeBottom()
-    {
-        if ( Checking && isEmpty() )
-            throw new TTreeException("node empty") ;
-        T item = elements[0] ;
-        ArrayOps.shiftDown(elements, 0, nodeSize) ;
-        nodeSize-- ;
-        return item ;
-    }
-    
-    T removeTop()
-    {
-        if ( Checking && isEmpty() )
-            throw new TTreeException("node empty") ;
-        T item = elements[nodeSize-1] ;
-        if ( TTree.NullOut ) elements[nodeSize-1] = null ;
-        nodeSize-- ;
-        return item ;
-    }
-     
-    /** Find an item - return the index in the array or -(index+1)
-     * encoding the insertion point.  
-     * 
-     * @param item
-     * @return encoded index.
-     */
-    int find(T item)
-    {
-        int x = Alg.binarySearch(elements, 0, nodeSize, item) ;
-        return x ;
-    }
-    
-    /** Delete from this TTreeNode
-     * 
-     * @param item
-     * @return true if a change to the node occurred 
-     */
-    boolean delete(T item)
-    { 
-        if ( elements.length == 0 )
-            error("Already empty") ;
-        int idx = find(item) ;
-        if ( idx < 0 )
-            return false ;
-        T item2 = ArrayOps.delete(elements, idx) ;
-        nodeSize-- ;
-        //if ( Checking ) check() ; // Can be invalid pending fixup
-        return true ;
-    }
-    
-    boolean isFull()             { return nodeSize == elements.length ; }
-    boolean isEmpty()            { return nodeSize == 0 ; }
-    
-    /** Both sides have nodes below them */
-    boolean isInternal()         { return left != null && right != null ; }
-    
-    /** One side or the other has a node, the other does not */
-    boolean isHalfLeaf()         { return isLeftHalfLeaf() || isRightHalfLeaf() ; }
-    
-    /** LeftHalfLeaf - no node below on the left, but there is one on the right */
-    boolean isLeftHalfLeaf()     { return left == null && right != null ; } 
-    /** LeftHalfLeaf - node below on the left, but not on the right */
-    boolean isRightHalfLeaf()    { return left != null && right == null ; } 
-    
-    /** No nodes below this one, to left or to the right */
-    boolean isLeaf()             { return left == null && right == null ; }
-    
-    int nodeSize()                { return nodeSize ; }
-    
-    private static final String undef = "_" ;
-    /** Only makes sense when the "id" is being allocated for all nodes */
-    static <T extends Comparable<? super T>> String label(TTreeNode<T> n)
-    {
-        if ( n == null )
-            return undef ;
-        return Integer.toString(n.id) ;
-    }
-
-    
-    T getMin()
-    {
-        if ( isEmpty() )
-            return null ;
-        return elements[0] ;
-    }
-
-    T getMax()
-    {
-        if ( isEmpty() )
-            return null ;
-        return elements[nodeSize-1] ;
-    }
-
-//    T getGreatestLowerBound()
-//    {
-//        if ( isEmpty() )
-//            return null ;
-//        TTreeNode<T> node = this ;
-//        if ( node.left != null )
-//            node = getRightDeep(node.left) ;
-//        return node.getMax() ;
-//    }
-//
-//    T getLeastUpperBound()
-//    {
-//        if ( isEmpty() )
-//            return null ;
-//        TTreeNode<T> node = this ;
-//        if ( node.right != null )
-//            node = getLeftDeep(node.right) ;
-//        return node.getMin() ;
-//    }
-
-    static <T extends Comparable<? super T>> TTreeNode<T> getLeftDeep(TTreeNode<T> node)
-    {
-        TTreeNode<T> node2 = node.left ;
-        while( node2 != null )
-        {
-            node = node2 ;
-            node2 = node2.left ;
-        }
-        return node ;
-    }
-        
-    static <T extends Comparable<? super T>> TTreeNode<T> getRightDeep(TTreeNode<T> node)
-    {
-        TTreeNode<T> node2 = node.right ;
-        while( node2 != null )
-        {
-            node = node2 ;
-            node2 = node2.right ;
-        }
-        return node ;
-    }
-
-//    TTreeNode<T> getParent()
-//    {
-//        return parent ;
-//    }
-//
-//    TTreeNode<T> getLeft()
-//    {
-//        return left ;
-//    }
-//
-//    TTreeNode<T> getRight()
-//    {
-//        return right ;
-//    }
-
-    void elements(List<T> acc)
-    {
-        if ( left != null )
-            left.elements(acc) ;
-        for ( T item : elements )
-        {
-            if ( item == null ) break ;
-            acc.add(item) ;
-        }
-        if ( right != null )
-            right.elements(acc) ;
-    }
-
-    long sizeDeep()
-    {
-        long size = 0 ;
-        if ( left != null )
-            size += left.sizeDeep() ;
-        size += nodeSize ;
-        if ( right != null )
-            size += right.sizeDeep() ;
-        return size ;
-    }
-    
-    // ---- Output
-    @Override
-    public void output(IndentedWriter out)
-    {
-        out.printf("id=%d parent=%s h=%d len=%d left=%s right=%s [",id, label(parent), height, nodeSize, label(left), label(right)) ;
-        for ( int i = 0 ; i < nodeSize ; i++ )
-        {
-            if ( i != 0 ) out.print(" ") ;
-            out.print(elements[i]) ;
-        }
-        out.print("]") ;
-    }
-    
-    /** Print structured */
-    void outputNested(IndentedWriter out, boolean detailed)
-    {
-        out.print("(") ;
-        output(out) ;
-        if ( left == null && right == null )
-        {
-            out.println(")") ;
-            return ;
-        }
-        out.println() ;
-        
-
-        out.incIndent() ;
-        if ( left != null )
-        {
-            out.ensureStartOfLine() ;
-            left.outputNested(out, detailed) ;
-        }
-        else
-        {
-            out.ensureStartOfLine() ;
-            out.println("()") ;
-        }
-        out.decIndent() ;
-
-        out.incIndent() ;
-        if ( right != null )
-        {
-            out.ensureStartOfLine() ;
-            right.outputNested(out, detailed) ;
-        }
-        else
-        {
-            out.ensureStartOfLine() ;
-            out.println("()") ;
-        }
-        out.decIndent() ;
-        out.print(")") ;
-    }
-    
-    @Override
-    public String toString() { return PrintUtils.toString(this) ; }
-    
-    // ---- Check
-    
-    final void checkDeep(TTree<T> ttree)
-    {
-        if ( ! Checking )
-            return ;
-        check(ttree) ;
-        if ( left != null )
-            left.checkDeep(ttree);
-        if ( right != null )
-            right.checkDeep(ttree);
-    }
-    
-    final void check(TTree<T> ttree)
-    {
-        if ( ! Checking )
-            return ;
-        if ( nodeSize > elements.length )
-            error("Node size %d, Array size: %d : %s",  nodeSize, elements.length, this) ;
-        
-        // -- Structure checks
-        if ( parent != null )
-        {
-            if ( parent.left == this )
-            {
-                if ( parent.left.id != this.id )
-                    error("Parent.left does not point to this node by id") ;
-            }
-            else if ( parent.right == this )
-            {
-                if ( parent.right.id != this.id )
-                    error("Parent.right does not point to this node by id") ;
-            }
-            else
-                error("Parent does not point to this node") ;
-        }
-
-        if ( isInternal() || isHalfLeaf() )
-        {
-            if ( ttree != null )
-            {
-                // Internal nodes are always full
-                // Half-leaves are always full (by modified half-leaf rule on deletion)  
-                if ( nodeSize < ttree.NodeSizeMin )
-                    error("Internal node too small") ;
-            }
-        }
-        else if ( isLeftHalfLeaf() )
-        {
-            if ( ! right.isLeaf() )
-                error("LeftHalfLeaf has no leaf to the right") ;
-        }
-        else if ( isRightHalfLeaf() )
-        {
-            if ( ! left.isLeaf() )
-                error("RightHalfLeaf has no leaf to the left") ;
-        }
-        else if ( isLeaf())
-        {
-            if ( parent != null && nodeSize <= 0 )
-                error("Zero length node") ;
-        }
-        else
-            error("Node has no leaf status") ;
-       
-        // Children checks
-        if ( left != null && left.parent != this ) 
-            error("Left child does not point back to this node") ;
-        
-        if ( left != null && left.parent.id != this.id ) 
-            error("Left child does not point back to this node by id") ;
-  
-        if ( right != null && right.parent != this ) 
-            error("Right child does not point back to this node") ;
-  
-        if ( right != null && right.parent.id != this.id ) 
-            error("Right child does not point back to this node by id") ;
-
-        // -- Ordering checks
-        // Order within this node
-        T prev = null ;
-        for ( int i = 0 ; i < nodeSize ; i++ )
-        {
-            if ( elements[i] == null )
-                error("Null array entry idx=%d : %s", i, this) ;
-            if ( prev != null )
-            {
-                if ( prev.compareTo(elements[i]) >= 0 )
-                    error("Unordered: idx=%d : %s %s : %s", i, prev, elements[i], this) ;
-            }
-            prev =  elements[i] ;
-        }
-        // Check upper area is cleared.
-        if ( TTree.NullOut )
-        {
-            for ( int i = nodeSize ; i < elements.length ; i++ )
-            {
-                if ( elements[i] != null )
-                    error("Not null array entry idx=%d : %s", i, this) ;
-            }
-        }
-        
-        if ( nodeSize > 0 )
-        {
-            // Check ordering from left and right. 
-            if ( left != null && left.nodeSize>0 && left.getMax().compareTo(getMin()) > 0 )    // If this less than left.
-                error("Out of order (left): [id=%s] %s/%s", label(left), left.getMax(), getMin()) ;
-            
-            if ( left != null && left.nodeSize>0 && left.getMax().compareTo(getMin()) == 0 )    // Duplicate.
-                error("Duplicate (left): [id=%s] %s/%s", label(left), left.getMax(), getMin()) ;
-          
-            if ( right != null && right.nodeSize>0 && right.getMin().compareTo(getMax()) < 0 )   // If this more than right
-                error("Out of order (right): [id=%s] %s/%s", label(right), right.getMin(), getMax()) ;
-    
-            if ( right != null && right.nodeSize>0 && right.getMin().compareTo(getMax()) == 0 )    // Duplicate.
-                error("Duplicate (right): [id=%s] %s/%s", label(right), right.getMin(), getMin()) ;
-        }
-
-        // -- Balance checks
-        int x = TTree.balance(this) ;
-        if ( x < -1 || x > 1 )
-            error("Out of balance %d: %s", x, this) ;
-
-        // -- Height checks
-
-        if ( left != null && height < left.height )
-            error("Height error (left) [%d,%d]", height, left.height) ;
-            
-        if ( right != null && height < right.height )
-                error("Height error (right) [%d,%d]", height, right.height) ;
-        
-        if ( left == null  && right != null )
-        {
-            if ( height != right.height+1 )
-                error("Bad height (right) - not %d", right.height+1) ;
-        }
-        else if ( left != null  && right == null )
-        {
-            if ( height != left.height+1 )
-                error("Bad height (left) - not %d", left.height+1) ;
-
-        }
-        else if ( left != null  && right != null )
-        {
-            if ( height < left.height || height < right.height )
-            {}
-            
-            if ( height != left.height+1 && height != right.height+1 )
-                error("Bad height (%d) - not %d or %d", id, left.height+1, right.height+1) ;
-        }
-        else
-        {
-            if ( height != TTree.InitialHeight )
-                error("Leaf node height not %d", TTree.InitialHeight) ;
-        }
-    }
+package structure.ttree;
+
+import static structure.ttree.TTree.Checking ;
+import static structure.ttree.TTree.error ;
+
+import java.util.List ;
+
+import migrate.lib.ArrayOps ;
+import org.openjena.atlas.io.IndentedWriter ;
+import org.openjena.atlas.io.PrintUtils ;
+import org.openjena.atlas.io.Printable ;
+import org.openjena.atlas.lib.Alg ;
+import org.openjena.atlas.lib.Lib ;
+
+final
+class TTreeNode<T extends Comparable<? super T>> implements Printable
+{
+    // Debug
+    private static int counter = 0 ;
+    // Make this static (or remove).
+    private int id ;
+    
+    int height = TTree.InitialHeight ;      // New nodes are always leaves.
+    TTreeNode<T> parent ;
+    TTreeNode<T> left ;
+    TTreeNode<T> right ;
+    // Need to record start and stop if want slicing.
+    // Or nulls at low end during insert into a full node.
+    int nodeSize ; 
+    T elements[] ;
+    
+    /** Create a new T-Tree node */
+    @SuppressWarnings("unchecked")
+    TTreeNode(TTreeNode<T>parent, int size)
+    {
+        id = (++counter) ;
+        this.elements = (T[])new Comparable[size] ;
+        this.nodeSize = 0 ;
+        this.height = TTree.InitialHeight ;
+        this.parent = parent ;
+        //Arrays.fill(elements, null) ;
+    }
+
+    void set(T[] elements, int els, TTreeNode<T> parent, TTreeNode<T> left, TTreeNode<T> right)
+    {  
+        this.elements = elements ;
+        this.nodeSize = els ;
+        this.parent = parent ;
+        this.left = left ;
+        this.right = right ;
+        this.parent = parent ;
+        this.height = -1 ;
+    }
+    
+    /** Insert a item into a node.
+     *  
+     * @param item
+     * @return true if the node changed (replace a different element or insert the element) 
+     */
+    boolean add(T item)
+    { 
+        int idx = find(item) ;
+
+        if ( idx < 0 )
+        {
+            if ( elements.length == nodeSize )
+                error("Already full") ;
+            insertAt(Alg.decodeIndex(idx), item) ;
+            return true ;
+        }
+        else
+        {
+            T orig = elements[idx] ;
+            if ( Lib.equal(item, orig) )
+                return false ;
+            elements[idx] = item ;
+            return true ;
+        }
+    }
+    
+    void insertAt(int idx,T item)
+    {
+        ArrayOps.insert(elements, idx, item) ;
+        nodeSize++ ;
+    }
+    
+    T removeBottom()
+    {
+        if ( Checking && isEmpty() )
+            throw new TTreeException("node empty") ;
+        T item = elements[0] ;
+        ArrayOps.shiftDown(elements, 0, nodeSize) ;
+        nodeSize-- ;
+        return item ;
+    }
+    
+    T removeTop()
+    {
+        if ( Checking && isEmpty() )
+            throw new TTreeException("node empty") ;
+        T item = elements[nodeSize-1] ;
+        if ( TTree.NullOut ) elements[nodeSize-1] = null ;
+        nodeSize-- ;
+        return item ;
+    }
+     
+    /** Find an item - return the index in the array or -(index+1)
+     * encoding the insertion point.  
+     * 
+     * @param item
+     * @return encoded index.
+     */
+    int find(T item)
+    {
+        int x = Alg.binarySearch(elements, 0, nodeSize, item) ;
+        return x ;
+    }
+    
+    /** Delete from this TTreeNode
+     * 
+     * @param item
+     * @return true if a change to the node occurred 
+     */
+    boolean delete(T item)
+    { 
+        if ( elements.length == 0 )
+            error("Already empty") ;
+        int idx = find(item) ;
+        if ( idx < 0 )
+            return false ;
+        T item2 = ArrayOps.delete(elements, idx) ;
+        nodeSize-- ;
+        //if ( Checking ) check() ; // Can be invalid pending fixup
+        return true ;
+    }
+    
+    boolean isFull()             { return nodeSize == elements.length ; }
+    boolean isEmpty()            { return nodeSize == 0 ; }
+    
+    /** Both sides have nodes below them */
+    boolean isInternal()         { return left != null && right != null ; }
+    
+    /** One side or the other has a node, the other does not */
+    boolean isHalfLeaf()         { return isLeftHalfLeaf() || isRightHalfLeaf() ; }
+    
+    /** LeftHalfLeaf - no node below on the left, but there is one on the right */
+    boolean isLeftHalfLeaf()     { return left == null && right != null ; } 
+    /** LeftHalfLeaf - node below on the left, but not on the right */
+    boolean isRightHalfLeaf()    { return left != null && right == null ; } 
+    
+    /** No nodes below this one, to left or to the right */
+    boolean isLeaf()             { return left == null && right == null ; }
+    
+    int nodeSize()                { return nodeSize ; }
+    
+    private static final String undef = "_" ;
+    /** Only makes sense when the "id" is being allocated for all nodes */
+    static <T extends Comparable<? super T>> String label(TTreeNode<T> n)
+    {
+        if ( n == null )
+            return undef ;
+        return Integer.toString(n.id) ;
+    }
+
+    
+    T getMin()
+    {
+        if ( isEmpty() )
+            return null ;
+        return elements[0] ;
+    }
+
+    T getMax()
+    {
+        if ( isEmpty() )
+            return null ;
+        return elements[nodeSize-1] ;
+    }
+
+//    T getGreatestLowerBound()
+//    {
+//        if ( isEmpty() )
+//            return null ;
+//        TTreeNode<T> node = this ;
+//        if ( node.left != null )
+//            node = getRightDeep(node.left) ;
+//        return node.getMax() ;
+//    }
+//
+//    T getLeastUpperBound()
+//    {
+//        if ( isEmpty() )
+//            return null ;
+//        TTreeNode<T> node = this ;
+//        if ( node.right != null )
+//            node = getLeftDeep(node.right) ;
+//        return node.getMin() ;
+//    }
+
+    static <T extends Comparable<? super T>> TTreeNode<T> getLeftDeep(TTreeNode<T> node)
+    {
+        TTreeNode<T> node2 = node.left ;
+        while( node2 != null )
+        {
+            node = node2 ;
+            node2 = node2.left ;
+        }
+        return node ;
+    }
+        
+    static <T extends Comparable<? super T>> TTreeNode<T> getRightDeep(TTreeNode<T> node)
+    {
+        TTreeNode<T> node2 = node.right ;
+        while( node2 != null )
+        {
+            node = node2 ;
+            node2 = node2.right ;
+        }
+        return node ;
+    }
+
+//    TTreeNode<T> getParent()
+//    {
+//        return parent ;
+//    }
+//
+//    TTreeNode<T> getLeft()
+//    {
+//        return left ;
+//    }
+//
+//    TTreeNode<T> getRight()
+//    {
+//        return right ;
+//    }
+
+    void elements(List<T> acc)
+    {
+        if ( left != null )
+            left.elements(acc) ;
+        for ( T item : elements )
+        {
+            if ( item == null ) break ;
+            acc.add(item) ;
+        }
+        if ( right != null )
+            right.elements(acc) ;
+    }
+
+    long sizeDeep()
+    {
+        long size = 0 ;
+        if ( left != null )
+            size += left.sizeDeep() ;
+        size += nodeSize ;
+        if ( right != null )
+            size += right.sizeDeep() ;
+        return size ;
+    }
+    
+    // ---- Output
+    @Override
+    public void output(IndentedWriter out)
+    {
+        out.printf("id=%d parent=%s h=%d len=%d left=%s right=%s [",id, label(parent), height, nodeSize, label(left), label(right)) ;
+        for ( int i = 0 ; i < nodeSize ; i++ )
+        {
+            if ( i != 0 ) out.print(" ") ;
+            out.print(elements[i]) ;
+        }
+        out.print("]") ;
+    }
+    
+    /** Print structured */
+    void outputNested(IndentedWriter out, boolean detailed)
+    {
+        out.print("(") ;
+        output(out) ;
+        if ( left == null && right == null )
+        {
+            out.println(")") ;
+            return ;
+        }
+        out.println() ;
+        
+
+        out.incIndent() ;
+        if ( left != null )
+        {
+            out.ensureStartOfLine() ;
+            left.outputNested(out, detailed) ;
+        }
+        else
+        {
+            out.ensureStartOfLine() ;
+            out.println("()") ;
+        }
+        out.decIndent() ;
+
+        out.incIndent() ;
+        if ( right != null )
+        {
+            out.ensureStartOfLine() ;
+            right.outputNested(out, detailed) ;
+        }
+        else
+        {
+            out.ensureStartOfLine() ;
+            out.println("()") ;
+        }
+        out.decIndent() ;
+        out.print(")") ;
+    }
+    
+    @Override
+    public String toString() { return PrintUtils.toString(this) ; }
+    
+    // ---- Check
+    
+    final void checkDeep(TTree<T> ttree)
+    {
+        if ( ! Checking )
+            return ;
+        check(ttree) ;
+        if ( left != null )
+            left.checkDeep(ttree);
+        if ( right != null )
+            right.checkDeep(ttree);
+    }
+    
+    final void check(TTree<T> ttree)
+    {
+        if ( ! Checking )
+            return ;
+        if ( nodeSize > elements.length )
+            error("Node size %d, Array size: %d : %s",  nodeSize, elements.length, this) ;
+        
+        // -- Structure checks
+        if ( parent != null )
+        {
+            if ( parent.left == this )
+            {
+                if ( parent.left.id != this.id )
+                    error("Parent.left does not point to this node by id") ;
+            }
+            else if ( parent.right == this )
+            {
+                if ( parent.right.id != this.id )
+                    error("Parent.right does not point to this node by id") ;
+            }
+            else
+                error("Parent does not point to this node") ;
+        }
+
+        if ( isInternal() || isHalfLeaf() )
+        {
+            if ( ttree != null )
+            {
+                // Internal nodes are always full
+                // Half-leaves are always full (by modified half-leaf rule on deletion)  
+                if ( nodeSize < ttree.NodeSizeMin )
+                    error("Internal node too small") ;
+            }
+        }
+        else if ( isLeftHalfLeaf() )
+        {
+            if ( ! right.isLeaf() )
+                error("LeftHalfLeaf has no leaf to the right") ;
+        }
+        else if ( isRightHalfLeaf() )
+        {
+            if ( ! left.isLeaf() )
+                error("RightHalfLeaf has no leaf to the left") ;
+        }
+        else if ( isLeaf())
+        {
+            if ( parent != null && nodeSize <= 0 )
+                error("Zero length node") ;
+        }
+        else
+            error("Node has no leaf status") ;
+       
+        // Children checks
+        if ( left != null && left.parent != this ) 
+            error("Left child does not point back to this node") ;
+        
+        if ( left != null && left.parent.id != this.id ) 
+            error("Left child does not point back to this node by id") ;
+  
+        if ( right != null && right.parent != this ) 
+            error("Right child does not point back to this node") ;
+  
+        if ( right != null && right.parent.id != this.id ) 
+            error("Right child does not point back to this node by id") ;
+
+        // -- Ordering checks
+        // Order within this node
+        T prev = null ;
+        for ( int i = 0 ; i < nodeSize ; i++ )
+        {
+            if ( elements[i] == null )
+                error("Null array entry idx=%d : %s", i, this) ;
+            if ( prev != null )
+            {
+                if ( prev.compareTo(elements[i]) >= 0 )
+                    error("Unordered: idx=%d : %s %s : %s", i, prev, elements[i], this) ;
+            }
+            prev =  elements[i] ;
+        }
+        // Check upper area is cleared.
+        if ( TTree.NullOut )
+        {
+            for ( int i = nodeSize ; i < elements.length ; i++ )
+            {
+                if ( elements[i] != null )
+                    error("Not null array entry idx=%d : %s", i, this) ;
+            }
+        }
+        
+        if ( nodeSize > 0 )
+        {
+            // Check ordering from left and right. 
+            if ( left != null && left.nodeSize>0 && left.getMax().compareTo(getMin()) > 0 )    // If this less than left.
+                error("Out of order (left): [id=%s] %s/%s", label(left), left.getMax(), getMin()) ;
+            
+            if ( left != null && left.nodeSize>0 && left.getMax().compareTo(getMin()) == 0 )    // Duplicate.
+                error("Duplicate (left): [id=%s] %s/%s", label(left), left.getMax(), getMin()) ;
+          
+            if ( right != null && right.nodeSize>0 && right.getMin().compareTo(getMax()) < 0 )   // If this more than right
+                error("Out of order (right): [id=%s] %s/%s", label(right), right.getMin(), getMax()) ;
+    
+            if ( right != null && right.nodeSize>0 && right.getMin().compareTo(getMax()) == 0 )    // Duplicate.
+                error("Duplicate (right): [id=%s] %s/%s", label(right), right.getMin(), getMin()) ;
+        }
+
+        // -- Balance checks
+        int x = TTree.balance(this) ;
+        if ( x < -1 || x > 1 )
+            error("Out of balance %d: %s", x, this) ;
+
+        // -- Height checks
+
+        if ( left != null && height < left.height )
+            error("Height error (left) [%d,%d]", height, left.height) ;
+            
+        if ( right != null && height < right.height )
+                error("Height error (right) [%d,%d]", height, right.height) ;
+        
+        if ( left == null  && right != null )
+        {
+            if ( height != right.height+1 )
+                error("Bad height (right) - not %d", right.height+1) ;
+        }
+        else if ( left != null  && right == null )
+        {
+            if ( height != left.height+1 )
+                error("Bad height (left) - not %d", left.height+1) ;
+
+        }
+        else if ( left != null  && right != null )
+        {
+            if ( height < left.height || height < right.height )
+            {}
+            
+            if ( height != left.height+1 && height != right.height+1 )
+                error("Bad height (%d) - not %d or %d", id, left.height+1, right.height+1) ;
+        }
+        else
+        {
+            if ( height != TTree.InitialHeight )
+                error("Leaf node height not %d", TTree.InitialHeight) ;
+        }
+    }
 }

Modified: incubator/jena/Scratch/AFS/Dev/trunk/src-lib/test/java/migrate/lib/TestArrayOps.java
URL: http://svn.apache.org/viewvc/incubator/jena/Scratch/AFS/Dev/trunk/src-lib/test/java/migrate/lib/TestArrayOps.java?rev=1198733&r1=1198732&r2=1198733&view=diff
==============================================================================
--- incubator/jena/Scratch/AFS/Dev/trunk/src-lib/test/java/migrate/lib/TestArrayOps.java (original)
+++ incubator/jena/Scratch/AFS/Dev/trunk/src-lib/test/java/migrate/lib/TestArrayOps.java Mon Nov  7 13:36:30 2011
@@ -1,4 +1,4 @@
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -16,288 +16,288 @@
  * limitations under the License.
  */
 
-package migrate.lib;
-
-import java.util.Iterator;
-
-import migrate.lib.ArrayOps;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.openjena.atlas.junit.BaseTest ;
-
-public class TestArrayOps extends BaseTest
-{
-    @BeforeClass public static void beforeClass()
-    {
-        //ArrayOps.NullOut = true ;
-        ArrayOps.Checking = true ;
-    }
-    
-    // ---- Clear
-    @Test public void clear1()
-    {
-        String[] array = {"a", "b", "c", null, null } ;
-        String[] array2 = {null, "b", "c", null, null } ;
-        ArrayOps.clear(array, 0, 1 ) ;
-        assertArrayEquals(array2,array) ;
-    }
-
-    @Test public void clear2()
-    {
-        String[] array = {"a", "b", "c", "d", null } ;
-        String[] array2 = {"a", null, null, "d", null } ;
-        ArrayOps.clear(array, 1, 2 ) ;
-        assertArrayEquals(array2,array) ;
-    }
-    
-    @Test public void clear3()
-    {
-        String[] array = {"a", "b", "c"} ;
-        String[] array2 = {null, null, null} ;
-        ArrayOps.clear(array) ;
-        assertArrayEquals(array2, array) ;
-    }
-    
-    // ---- Shift Up
-    // Should shift extends the array?  Yes. 
-    @Test public void shift_up_1()
-    {
-        String[] array = {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {null, "a", "b", "c", "e"} ;  // Extends to length 4.
-        ArrayOps.shiftUp(array, 0, 3) ;
-        assertArrayEquals(array2, array) ;
-    }
-    
-    @Test public void shift_up_2()
-    {
-        String[] array = {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"a", "b", "c", null, "d"} ;
-        ArrayOps.shiftUp(array, 3, array.length-1) ;
-        assertArrayEquals(array2, array) ;
-    }    
-
-    @Test public void shift_up_3()
-    {
-        String[] array = {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"a", "b", "c", "d", null} ;
-        ArrayOps.shiftUp(array, 4, 5) ;
-        assertArrayEquals(array2, array) ;
-    }    
-    
-    @Test public void shift_up_4()
-    {
-        String[] array = {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"a", "b", "c",  null, "d" } ;
-        // Shift at top
-        ArrayOps.shiftUp(array, 3, 4) ;
-        assertArrayEquals(array2, array) ;
-    }
-    
-    @Test public void shift_up_5()
-    {
-        String[] array = {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"a", null, null, "b", "c"} ;
-        ArrayOps.shiftUpN(array, 1, 2, 5) ;
-        assertArrayEquals(array2, array) ;
-    }    
-    
-    @Test public void shift_up_6()
-    {
-        String[] array = {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {null, null, null, null, null} ;
-        ArrayOps.shiftUpN(array, 0, 5, 3) ;
-        assertArrayEquals(array2, array) ;
-    }  
-    
-    @Test(expected=ArrayOps.ArrayException.class)
-    public void shift_up_7()
-    {
-        String[] array = {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {null, null, null, null, null} ;
-        ArrayOps.shiftUpN(array, 0, 6, 3) ;
-        assertArrayEquals(array2, array) ;
-    } 
-    
-    // ---- Shift Down
-    
-    @Test public void shift_down_1()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"b", "c", null, "d", "e"} ;
-        ArrayOps.shiftDown(array, 0, 3) ;
-        assertArrayEquals(array2, array) ;
-    }
-    
-    @Test public void shift_down_2()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"a", "c", null, "d", "e"} ;
-        ArrayOps.shiftDown(array, 1, 3) ;
-        assertArrayEquals(array2, array) ;
-    }
-
-    @Test public void shift_down_3()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"a", "b", null, "d", "e"} ;
-        ArrayOps.shiftDown(array, 2, 3) ;
-        assertArrayEquals(array2, array) ;
-    }
-    
-    @Test(expected=ArrayOps.ArrayException.class)
-    public void shift_down_4()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {} ;
-        ArrayOps.shiftDown(array, 3, 3) ;
-        assertArrayEquals(array2, array) ;
-    }
-
-    @Test public void shift_down_5()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"a", "b", "c", "d", null } ;
-        ArrayOps.shiftDown(array, 4, 5) ;
-        assertArrayEquals(array2, array) ;
-    }
-    
-    @Test public void shift_down_6()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"a", "b", "c", null, null } ;
-        ArrayOps.shiftDownN(array, 3, 2, 5) ;
-        assertArrayEquals(array2, array) ;
-    }
-
-    @Test(expected=ArrayOps.ArrayException.class)
-    public void shift_down_7()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {} ;
-        ArrayOps.shiftDownN(array, 4, 2, 5) ;
-        assertArrayEquals(array2, array) ;
-    }
-
-    // ---- Insert
-    
-    @Test public void insert1()
-    {
-        String[] array = {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"z", "a", "b", "c", "e"} ;
-        ArrayOps.insert(array, 0, "z", 3) ;
-        assertArrayEquals(array2, array) ;
-    }   
-    
-    @Test public void insert2()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"a", "z", "b", "c", "e" } ;
-        ArrayOps.insert(array, 1, "z", 3) ;
-        assertArrayEquals(array2, array) ;
-    }   
-
-    @Test public void insert3()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"a", "b", "z", "c", "e" } ;
-        ArrayOps.insert(array, 2, "z", 3) ;
-        assertArrayEquals(array2, array) ;
-    }   
-
-    @Test public void insert4()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"a", "b", "c", "d", "z" } ;
-        ArrayOps.insert(array, 4, "z", 4) ;
-        assertArrayEquals(array2, array) ;
-    }   
-
-    @Test public void insert5()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"a", "b", "c", "d", "z" } ;
-        ArrayOps.insert(array, 4, "z", 5) ;
-        assertArrayEquals(array2, array) ;
-    }   
-
-    @Test public void insert7()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"z", "a", "b", "c", "d"} ;
-        ArrayOps.insert(array, 0, "z", 5) ;
-        assertArrayEquals(array2, array) ;
-    }   
-
-    @Test(expected=ArrayOps.ArrayException.class)
-    public void insert8()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {} ;
-        ArrayOps.insert(array, 5, "z", 5) ;
-        assertArrayEquals(array2, array) ;
-    }   
-
-    @Test(expected=ArrayOps.ArrayException.class)
-    public void insert9()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {} ;
-        ArrayOps.insert(array, 5, "z", 4) ;
-        assertArrayEquals(array2, array) ;
-    }   
-
-    // ---- Delete
-    
-    @Test public void delete1()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"b", "c", null, "d", "e"} ;
-        String x = ArrayOps.delete(array, 0, 3) ;
-        assertArrayEquals(array2, array) ;
-        assertEquals("a", x) ;
-    }   
-
-    @Test public void delete2()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"a", "c", null, "d", "e"} ;
-        String x = ArrayOps.delete(array, 1, 3) ;
-        assertArrayEquals(array2, array) ;
-        assertEquals("b", x) ;
-    }   
-
-    @Test public void delete3()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"a", "b", null, "d", "e"} ;
-        String x = ArrayOps.delete(array, 2, 3) ;
-        assertArrayEquals(array2, array) ;
-        assertEquals("c", x) ;
-    }
-    
-    @Test public void delete4()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"a", "b", "d", "e", null} ;
-        String x = ArrayOps.delete(array, 2, 5) ;
-        assertArrayEquals(array2, array) ;
-        assertEquals("c", x) ;
-    }   
-    
-    @Test public void delete5()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        String[] array2 = {"a", "b", "c", "d", null} ;
-        String x = ArrayOps.delete(array, 4, 5) ;
-        assertArrayEquals(array2, array) ;
-        assertEquals("e", x) ;
-    } 
-    
-    @Test public void iterate1()
-    {
-        String[] array =  {"a", "b", "c", "d", "e" } ;
-        Iterator<String> iter = ArrayOps.iterator(array) ;
-        for ( int i = 0 ; iter.hasNext() ; i++ )
-            assertEquals(array[i], iter.next()) ;
-    }
+package migrate.lib;
+
+import java.util.Iterator;
+
+import migrate.lib.ArrayOps;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openjena.atlas.junit.BaseTest ;
+
+public class TestArrayOps extends BaseTest
+{
+    @BeforeClass public static void beforeClass()
+    {
+        //ArrayOps.NullOut = true ;
+        ArrayOps.Checking = true ;
+    }
+    
+    // ---- Clear
+    @Test public void clear1()
+    {
+        String[] array = {"a", "b", "c", null, null } ;
+        String[] array2 = {null, "b", "c", null, null } ;
+        ArrayOps.clear(array, 0, 1 ) ;
+        assertArrayEquals(array2,array) ;
+    }
+
+    @Test public void clear2()
+    {
+        String[] array = {"a", "b", "c", "d", null } ;
+        String[] array2 = {"a", null, null, "d", null } ;
+        ArrayOps.clear(array, 1, 2 ) ;
+        assertArrayEquals(array2,array) ;
+    }
+    
+    @Test public void clear3()
+    {
+        String[] array = {"a", "b", "c"} ;
+        String[] array2 = {null, null, null} ;
+        ArrayOps.clear(array) ;
+        assertArrayEquals(array2, array) ;
+    }
+    
+    // ---- Shift Up
+    // Should shift extends the array?  Yes. 
+    @Test public void shift_up_1()
+    {
+        String[] array = {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {null, "a", "b", "c", "e"} ;  // Extends to length 4.
+        ArrayOps.shiftUp(array, 0, 3) ;
+        assertArrayEquals(array2, array) ;
+    }
+    
+    @Test public void shift_up_2()
+    {
+        String[] array = {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"a", "b", "c", null, "d"} ;
+        ArrayOps.shiftUp(array, 3, array.length-1) ;
+        assertArrayEquals(array2, array) ;
+    }    
+
+    @Test public void shift_up_3()
+    {
+        String[] array = {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"a", "b", "c", "d", null} ;
+        ArrayOps.shiftUp(array, 4, 5) ;
+        assertArrayEquals(array2, array) ;
+    }    
+    
+    @Test public void shift_up_4()
+    {
+        String[] array = {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"a", "b", "c",  null, "d" } ;
+        // Shift at top
+        ArrayOps.shiftUp(array, 3, 4) ;
+        assertArrayEquals(array2, array) ;
+    }
+    
+    @Test public void shift_up_5()
+    {
+        String[] array = {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"a", null, null, "b", "c"} ;
+        ArrayOps.shiftUpN(array, 1, 2, 5) ;
+        assertArrayEquals(array2, array) ;
+    }    
+    
+    @Test public void shift_up_6()
+    {
+        String[] array = {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {null, null, null, null, null} ;
+        ArrayOps.shiftUpN(array, 0, 5, 3) ;
+        assertArrayEquals(array2, array) ;
+    }  
+    
+    @Test(expected=ArrayOps.ArrayException.class)
+    public void shift_up_7()
+    {
+        String[] array = {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {null, null, null, null, null} ;
+        ArrayOps.shiftUpN(array, 0, 6, 3) ;
+        assertArrayEquals(array2, array) ;
+    } 
+    
+    // ---- Shift Down
+    
+    @Test public void shift_down_1()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"b", "c", null, "d", "e"} ;
+        ArrayOps.shiftDown(array, 0, 3) ;
+        assertArrayEquals(array2, array) ;
+    }
+    
+    @Test public void shift_down_2()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"a", "c", null, "d", "e"} ;
+        ArrayOps.shiftDown(array, 1, 3) ;
+        assertArrayEquals(array2, array) ;
+    }
+
+    @Test public void shift_down_3()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"a", "b", null, "d", "e"} ;
+        ArrayOps.shiftDown(array, 2, 3) ;
+        assertArrayEquals(array2, array) ;
+    }
+    
+    @Test(expected=ArrayOps.ArrayException.class)
+    public void shift_down_4()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {} ;
+        ArrayOps.shiftDown(array, 3, 3) ;
+        assertArrayEquals(array2, array) ;
+    }
+
+    @Test public void shift_down_5()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"a", "b", "c", "d", null } ;
+        ArrayOps.shiftDown(array, 4, 5) ;
+        assertArrayEquals(array2, array) ;
+    }
+    
+    @Test public void shift_down_6()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"a", "b", "c", null, null } ;
+        ArrayOps.shiftDownN(array, 3, 2, 5) ;
+        assertArrayEquals(array2, array) ;
+    }
+
+    @Test(expected=ArrayOps.ArrayException.class)
+    public void shift_down_7()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {} ;
+        ArrayOps.shiftDownN(array, 4, 2, 5) ;
+        assertArrayEquals(array2, array) ;
+    }
+
+    // ---- Insert
+    
+    @Test public void insert1()
+    {
+        String[] array = {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"z", "a", "b", "c", "e"} ;
+        ArrayOps.insert(array, 0, "z", 3) ;
+        assertArrayEquals(array2, array) ;
+    }   
+    
+    @Test public void insert2()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"a", "z", "b", "c", "e" } ;
+        ArrayOps.insert(array, 1, "z", 3) ;
+        assertArrayEquals(array2, array) ;
+    }   
+
+    @Test public void insert3()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"a", "b", "z", "c", "e" } ;
+        ArrayOps.insert(array, 2, "z", 3) ;
+        assertArrayEquals(array2, array) ;
+    }   
+
+    @Test public void insert4()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"a", "b", "c", "d", "z" } ;
+        ArrayOps.insert(array, 4, "z", 4) ;
+        assertArrayEquals(array2, array) ;
+    }   
+
+    @Test public void insert5()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"a", "b", "c", "d", "z" } ;
+        ArrayOps.insert(array, 4, "z", 5) ;
+        assertArrayEquals(array2, array) ;
+    }   
+
+    @Test public void insert7()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"z", "a", "b", "c", "d"} ;
+        ArrayOps.insert(array, 0, "z", 5) ;
+        assertArrayEquals(array2, array) ;
+    }   
+
+    @Test(expected=ArrayOps.ArrayException.class)
+    public void insert8()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {} ;
+        ArrayOps.insert(array, 5, "z", 5) ;
+        assertArrayEquals(array2, array) ;
+    }   
+
+    @Test(expected=ArrayOps.ArrayException.class)
+    public void insert9()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {} ;
+        ArrayOps.insert(array, 5, "z", 4) ;
+        assertArrayEquals(array2, array) ;
+    }   
+
+    // ---- Delete
+    
+    @Test public void delete1()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"b", "c", null, "d", "e"} ;
+        String x = ArrayOps.delete(array, 0, 3) ;
+        assertArrayEquals(array2, array) ;
+        assertEquals("a", x) ;
+    }   
+
+    @Test public void delete2()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"a", "c", null, "d", "e"} ;
+        String x = ArrayOps.delete(array, 1, 3) ;
+        assertArrayEquals(array2, array) ;
+        assertEquals("b", x) ;
+    }   
+
+    @Test public void delete3()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"a", "b", null, "d", "e"} ;
+        String x = ArrayOps.delete(array, 2, 3) ;
+        assertArrayEquals(array2, array) ;
+        assertEquals("c", x) ;
+    }
+    
+    @Test public void delete4()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"a", "b", "d", "e", null} ;
+        String x = ArrayOps.delete(array, 2, 5) ;
+        assertArrayEquals(array2, array) ;
+        assertEquals("c", x) ;
+    }   
+    
+    @Test public void delete5()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        String[] array2 = {"a", "b", "c", "d", null} ;
+        String x = ArrayOps.delete(array, 4, 5) ;
+        assertArrayEquals(array2, array) ;
+        assertEquals("e", x) ;
+    } 
+    
+    @Test public void iterate1()
+    {
+        String[] array =  {"a", "b", "c", "d", "e" } ;
+        Iterator<String> iter = ArrayOps.iterator(array) ;
+        for ( int i = 0 ; iter.hasNext() ; i++ )
+            assertEquals(array[i], iter.next()) ;
+    }
 }

Modified: incubator/jena/Scratch/AFS/Dev/trunk/src-lib/test/java/migrate/lib/TestByteArray.java
URL: http://svn.apache.org/viewvc/incubator/jena/Scratch/AFS/Dev/trunk/src-lib/test/java/migrate/lib/TestByteArray.java?rev=1198733&r1=1198732&r2=1198733&view=diff
==============================================================================
--- incubator/jena/Scratch/AFS/Dev/trunk/src-lib/test/java/migrate/lib/TestByteArray.java (original)
+++ incubator/jena/Scratch/AFS/Dev/trunk/src-lib/test/java/migrate/lib/TestByteArray.java Mon Nov  7 13:36:30 2011
@@ -1,4 +1,4 @@
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -16,32 +16,32 @@
  * limitations under the License.
  */
 
-package migrate.lib;
-
-import org.junit.Test ;
-import org.openjena.atlas.junit.BaseTest ;
-
-public class TestByteArray extends BaseTest
-{
-    @Test public void bytearray_01()
-    {
-        ByteArray b = new ByteArray() ;
-        compare(b, new byte[]{}) ;
-    }
-    
-    @Test public void bytearray_02()
-    {
-        ByteArray b = new ByteArray() ;
-        b.add((byte)1) ;
-        compare(b, new byte[]{1}) ;
-    }
-    
-    
-    private static void compare(ByteArray bytes, byte[] contents)
-    {
-        assertEquals(bytes.length(), contents.length) ;
-        for ( int i = 0 ; i < contents.length ; i++ )
-            assertEquals(contents[i], bytes.get(i)) ;
-        
-    }
+package migrate.lib;
+
+import org.junit.Test ;
+import org.openjena.atlas.junit.BaseTest ;
+
+public class TestByteArray extends BaseTest
+{
+    @Test public void bytearray_01()
+    {
+        ByteArray b = new ByteArray() ;
+        compare(b, new byte[]{}) ;
+    }
+    
+    @Test public void bytearray_02()
+    {
+        ByteArray b = new ByteArray() ;
+        b.add((byte)1) ;
+        compare(b, new byte[]{1}) ;
+    }
+    
+    
+    private static void compare(ByteArray bytes, byte[] contents)
+    {
+        assertEquals(bytes.length(), contents.length) ;
+        for ( int i = 0 ; i < contents.length ; i++ )
+            assertEquals(contents[i], bytes.get(i)) ;
+        
+    }
 }

Modified: incubator/jena/Scratch/AFS/Dev/trunk/src-lib/test/java/migrate/lib/TestVarInteger.java
URL: http://svn.apache.org/viewvc/incubator/jena/Scratch/AFS/Dev/trunk/src-lib/test/java/migrate/lib/TestVarInteger.java?rev=1198733&r1=1198732&r2=1198733&view=diff
==============================================================================
--- incubator/jena/Scratch/AFS/Dev/trunk/src-lib/test/java/migrate/lib/TestVarInteger.java (original)
+++ incubator/jena/Scratch/AFS/Dev/trunk/src-lib/test/java/migrate/lib/TestVarInteger.java Mon Nov  7 13:36:30 2011
@@ -1,4 +1,4 @@
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -16,148 +16,148 @@
  * limitations under the License.
  */
 
-package migrate.lib;
-
-import java.nio.ByteBuffer ;
-
-import org.junit.Test ;
-import org.openjena.atlas.junit.BaseTest ;
-import org.openjena.atlas.lib.ByteBufferLib ;
-
-public class TestVarInteger extends BaseTest
-{
-    @Test public void varint_01()
-    {
-        VarInteger vint = VarInteger.valueOf(0) ;
-        assertEquals(1, vint.length()) ;
-        assertEquals((byte)0, vint.bytes()[0]) ;
-        assertEquals(0L, vint.value()) ;
-    }
-    
-    @Test public void varint_02()
-    {
-        VarInteger vint = VarInteger.valueOf(1) ;
-        assertEquals(1, vint.length()) ;
-        assertEquals((byte)1, vint.bytes()[0]) ;
-        assertEquals(1L, vint.value()) ;
-    }
-    
-    @Test public void varint_03()
-    {
-        VarInteger vint = VarInteger.valueOf(127) ;
-        assertEquals(1, vint.length()) ;
-        assertEquals((byte)0x7F, vint.bytes()[0]) ;
-        assertEquals(127L, vint.value()) ;
-    }
-
-    @Test public void varint_04()
-    {
-        VarInteger vint = VarInteger.valueOf(128) ;
-        assertEquals(2, vint.length()) ;
-        assertEquals((byte)0x80, vint.bytes()[0]) ;
-        assertEquals((byte)0x01, vint.bytes()[1]) ;
-        assertEquals(128L, vint.value()) ;
-    }
-
-    @Test public void varint_05()
-    {
-        VarInteger vint = VarInteger.valueOf(129) ;
-        assertEquals(2, vint.length()) ;
-        assertEquals((byte)0x81, vint.bytes()[0]) ;
-        assertEquals((byte)0x01, vint.bytes()[1]) ;
-        assertEquals(129L, vint.value()) ;
-    }
-
-    @Test public void varint_10()
-    {
-        VarInteger vint = VarInteger.valueOf(1L<<45) ;
-        //assertEquals(2, vint.length()) ;
-        assertEquals(1L<<45, vint.value()) ;
-    }
-    
-    // General hammering.
-    @Test public void varint_N()
-    {
-        for ( long x = 0 ; x < (1L<<17) ; x++ )
-        {
-            VarInteger vint = VarInteger.valueOf(x) ;
-            assertEquals(x, vint.value()) ;
-        }
-    }
-    
-    @Test public void varint_eq_1()
-    {
-        VarInteger x = VarInteger.valueOf(0) ;
-        VarInteger x0 = VarInteger.valueOf(0) ;
-        VarInteger x1 = VarInteger.valueOf(1) ;
-        assertEquals(x.hashCode(), x0.hashCode()) ;
-        assertNotEquals(x.hashCode(), x1.hashCode()) ;
-        assertEquals(x, x0) ;
-        assertNotEquals(x, x1) ;
-    }
-    
-    @Test public void varint_eq_2()
-    {
-        VarInteger x = VarInteger.valueOf(1) ;
-        VarInteger x0 = VarInteger.valueOf(0) ;
-        VarInteger x1 = VarInteger.valueOf(1) ;
-        assertEquals(x.hashCode(), x1.hashCode()) ;
-        assertNotEquals(x.hashCode(), x0.hashCode()) ;
-        assertEquals(x, x1) ;
-        assertNotEquals(x, x0) ;
-    }
-
-    private static void eq(long value)
-    {
-        VarInteger x0 = VarInteger.valueOf(value) ;
-        VarInteger x1 = VarInteger.valueOf(value) ;
-        assertEquals(x0.hashCode(), x1.hashCode()) ;
-        assertEquals(x0, x1) ;
-    }
-    
-    @Test public void varint_eq_3()     { eq(127) ; }
-    @Test public void varint_eq_4()     { eq(128) ; }
-    @Test public void varint_eq_5()     { eq(129) ; }
-    
-    @Test public void varint_bb_1()
-    {
-        ByteBuffer bb = ByteBuffer.allocate(8) ;
-        ByteBufferLib.fill(bb, (byte)0) ;
-        VarInteger.encode(bb, 1, 2L<<14) ;
-        assertEquals(0, bb.get(0)) ;
-    }
-
-    @Test public void varint_extract_1()
-    {
-        VarInteger x0 = VarInteger.valueOf(113) ;
-        VarInteger x1 = VarInteger.make(x0.bytes) ;
-        assertEquals(x0, x1) ;
-    }
-
-    @Test public void varint_extract_2()
-    {
-        VarInteger x0 = VarInteger.valueOf(113) ;
-        ByteBuffer bb = ByteBuffer.wrap(x0.bytes()) ;
-        VarInteger x1 = VarInteger.make(bb,0) ;
-        assertEquals(x0, x1) ;
-    }
-    
-    @Test public void varint_extract_3()
-    {
-        VarInteger x0 = VarInteger.valueOf(11377) ;
-        ByteBuffer bb = ByteBuffer.wrap(x0.bytes()) ;
-        VarInteger x1 = VarInteger.make(bb,0) ;
-        assertEquals(x0, x1) ;
-    }
-    
-    @Test public void varint_length_1()
-    {
-        assertEquals(1, VarInteger.lengthOf(0)) ;
-        assertEquals(1, VarInteger.lengthOf(1)) ;
-        assertEquals(1, VarInteger.lengthOf(127)) ;
-        assertEquals(2, VarInteger.lengthOf(128)) ;
-        assertEquals(2, VarInteger.lengthOf(1L<<14-1)) ;
-        assertEquals(3, VarInteger.lengthOf(1L<<14)) ;
-        assertEquals(8, VarInteger.lengthOf(1L<<56-1)) ;
-    }
+package migrate.lib;
+
+import java.nio.ByteBuffer ;
+
+import org.junit.Test ;
+import org.openjena.atlas.junit.BaseTest ;
+import org.openjena.atlas.lib.ByteBufferLib ;
+
+public class TestVarInteger extends BaseTest
+{
+    @Test public void varint_01()
+    {
+        VarInteger vint = VarInteger.valueOf(0) ;
+        assertEquals(1, vint.length()) ;
+        assertEquals((byte)0, vint.bytes()[0]) ;
+        assertEquals(0L, vint.value()) ;
+    }
+    
+    @Test public void varint_02()
+    {
+        VarInteger vint = VarInteger.valueOf(1) ;
+        assertEquals(1, vint.length()) ;
+        assertEquals((byte)1, vint.bytes()[0]) ;
+        assertEquals(1L, vint.value()) ;
+    }
+    
+    @Test public void varint_03()
+    {
+        VarInteger vint = VarInteger.valueOf(127) ;
+        assertEquals(1, vint.length()) ;
+        assertEquals((byte)0x7F, vint.bytes()[0]) ;
+        assertEquals(127L, vint.value()) ;
+    }
+
+    @Test public void varint_04()
+    {
+        VarInteger vint = VarInteger.valueOf(128) ;
+        assertEquals(2, vint.length()) ;
+        assertEquals((byte)0x80, vint.bytes()[0]) ;
+        assertEquals((byte)0x01, vint.bytes()[1]) ;
+        assertEquals(128L, vint.value()) ;
+    }
+
+    @Test public void varint_05()
+    {
+        VarInteger vint = VarInteger.valueOf(129) ;
+        assertEquals(2, vint.length()) ;
+        assertEquals((byte)0x81, vint.bytes()[0]) ;
+        assertEquals((byte)0x01, vint.bytes()[1]) ;
+        assertEquals(129L, vint.value()) ;
+    }
+
+    @Test public void varint_10()
+    {
+        VarInteger vint = VarInteger.valueOf(1L<<45) ;
+        //assertEquals(2, vint.length()) ;
+        assertEquals(1L<<45, vint.value()) ;
+    }
+    
+    // General hammering.
+    @Test public void varint_N()
+    {
+        for ( long x = 0 ; x < (1L<<17) ; x++ )
+        {
+            VarInteger vint = VarInteger.valueOf(x) ;
+            assertEquals(x, vint.value()) ;
+        }
+    }
+    
+    @Test public void varint_eq_1()
+    {
+        VarInteger x = VarInteger.valueOf(0) ;
+        VarInteger x0 = VarInteger.valueOf(0) ;
+        VarInteger x1 = VarInteger.valueOf(1) ;
+        assertEquals(x.hashCode(), x0.hashCode()) ;
+        assertNotEquals(x.hashCode(), x1.hashCode()) ;
+        assertEquals(x, x0) ;
+        assertNotEquals(x, x1) ;
+    }
+    
+    @Test public void varint_eq_2()
+    {
+        VarInteger x = VarInteger.valueOf(1) ;
+        VarInteger x0 = VarInteger.valueOf(0) ;
+        VarInteger x1 = VarInteger.valueOf(1) ;
+        assertEquals(x.hashCode(), x1.hashCode()) ;
+        assertNotEquals(x.hashCode(), x0.hashCode()) ;
+        assertEquals(x, x1) ;
+        assertNotEquals(x, x0) ;
+    }
+
+    private static void eq(long value)
+    {
+        VarInteger x0 = VarInteger.valueOf(value) ;
+        VarInteger x1 = VarInteger.valueOf(value) ;
+        assertEquals(x0.hashCode(), x1.hashCode()) ;
+        assertEquals(x0, x1) ;
+    }
+    
+    @Test public void varint_eq_3()     { eq(127) ; }
+    @Test public void varint_eq_4()     { eq(128) ; }
+    @Test public void varint_eq_5()     { eq(129) ; }
+    
+    @Test public void varint_bb_1()
+    {
+        ByteBuffer bb = ByteBuffer.allocate(8) ;
+        ByteBufferLib.fill(bb, (byte)0) ;
+        VarInteger.encode(bb, 1, 2L<<14) ;
+        assertEquals(0, bb.get(0)) ;
+    }
+
+    @Test public void varint_extract_1()
+    {
+        VarInteger x0 = VarInteger.valueOf(113) ;
+        VarInteger x1 = VarInteger.make(x0.bytes) ;
+        assertEquals(x0, x1) ;
+    }
+
+    @Test public void varint_extract_2()
+    {
+        VarInteger x0 = VarInteger.valueOf(113) ;
+        ByteBuffer bb = ByteBuffer.wrap(x0.bytes()) ;
+        VarInteger x1 = VarInteger.make(bb,0) ;
+        assertEquals(x0, x1) ;
+    }
+    
+    @Test public void varint_extract_3()
+    {
+        VarInteger x0 = VarInteger.valueOf(11377) ;
+        ByteBuffer bb = ByteBuffer.wrap(x0.bytes()) ;
+        VarInteger x1 = VarInteger.make(bb,0) ;
+        assertEquals(x0, x1) ;
+    }
+    
+    @Test public void varint_length_1()
+    {
+        assertEquals(1, VarInteger.lengthOf(0)) ;
+        assertEquals(1, VarInteger.lengthOf(1)) ;
+        assertEquals(1, VarInteger.lengthOf(127)) ;
+        assertEquals(2, VarInteger.lengthOf(128)) ;
+        assertEquals(2, VarInteger.lengthOf(1L<<14-1)) ;
+        assertEquals(3, VarInteger.lengthOf(1L<<14)) ;
+        assertEquals(8, VarInteger.lengthOf(1L<<56-1)) ;
+    }
 }

Modified: incubator/jena/Scratch/AFS/Dev/trunk/src-lib/test/java/structure/OrderedSetTest.java
URL: http://svn.apache.org/viewvc/incubator/jena/Scratch/AFS/Dev/trunk/src-lib/test/java/structure/OrderedSetTest.java?rev=1198733&r1=1198732&r2=1198733&view=diff
==============================================================================
--- incubator/jena/Scratch/AFS/Dev/trunk/src-lib/test/java/structure/OrderedSetTest.java (original)
+++ incubator/jena/Scratch/AFS/Dev/trunk/src-lib/test/java/structure/OrderedSetTest.java Mon Nov  7 13:36:30 2011
@@ -1,4 +1,4 @@
-/**
+/*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
  * distributed with this work for additional information
@@ -16,30 +16,30 @@
  * limitations under the License.
  */
 
-package structure;
-
-import static org.openjena.atlas.lib.RandomLib.random;
-import org.openjena.atlas.test.ExecGenerator;
-
-class OrderedSetTest implements ExecGenerator
-{
-    int maxNumKeys ;
-    int maxValue ;
-    OrderedSetTestFactory factory ;
-    
-    OrderedSetTest(OrderedSetTestFactory factory, int maxValue, int maxNumKeys)
-    {
-        if ( maxValue <= maxNumKeys )
-            throw new IllegalArgumentException("SortedIndexTest: Max value less than number of keys") ;
-        this.maxValue = maxValue ; 
-        this.maxNumKeys = maxNumKeys ;
-        this.factory = factory ;
-    }
-    
-    @Override
-    public void executeOneTest()
-    {
-        int numKeys = random.nextInt(maxNumKeys)+1 ;
-        OrderedSetTestLib.randTest(factory, maxValue, numKeys) ;
-    }
+package structure;
+
+import static org.openjena.atlas.lib.RandomLib.random;
+import org.openjena.atlas.test.ExecGenerator;
+
+class OrderedSetTest implements ExecGenerator
+{
+    int maxNumKeys ;
+    int maxValue ;
+    OrderedSetTestFactory factory ;
+    
+    OrderedSetTest(OrderedSetTestFactory factory, int maxValue, int maxNumKeys)
+    {
+        if ( maxValue <= maxNumKeys )
+            throw new IllegalArgumentException("SortedIndexTest: Max value less than number of keys") ;
+        this.maxValue = maxValue ; 
+        this.maxNumKeys = maxNumKeys ;
+        this.factory = factory ;
+    }
+    
+    @Override
+    public void executeOneTest()
+    {
+        int numKeys = random.nextInt(maxNumKeys)+1 ;
+        OrderedSetTestLib.randTest(factory, maxValue, numKeys) ;
+    }
 }