jkesselm 01/04/20 08:33:29
Modified: java/src/org/apache/xml/dtm Tag: DTM_EXP DTMStringPool.java
Log:
Built-in unit test (rough, but sufficient as a sanity check)
Revision Changes Path
No revision
No revision
1.1.2.2 +57 -1
xml-xalan/java/src/org/apache/xml/dtm/Attic/DTMStringPool.java
Index: DTMStringPool.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xml/dtm/Attic/DTMStringPool.java,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- DTMStringPool.java 2001/04/20 13:49:52 1.1.2.1
+++ DTMStringPool.java 2001/04/20 15:33:25 1.1.2.2
@@ -55,7 +55,7 @@
* <http://www.apache.org/>.
*/
-package org.apache.xalan.xml.dtm;
+package org.apache.xml.dtm;
import org.apache.xml.utils.IntVector;
import java.util.Vector;
@@ -127,6 +127,7 @@
if(s==null) return NULL;
int hashslot=s.hashCode()%HASHPRIME;
+ if(hashslot<0) hashslot=-hashslot;
// Is it one we already know?
int hashlast=m_hashStart[hashslot];
@@ -152,4 +153,59 @@
return newIndex;
}
+
+ /** Command-line unit test driver. This test relies on the fact that
+ * this version of the pool assigns indices consecutively, starting
+ * from zero, as new unique strings are encountered.
+ */
+ public static void main(String[] args)
+ {
+ String[] word={
+ "Zero","One","Two","Three","Four","Five",
+ "Six","Seven","Eight","Nine","Ten",
+ "Eleven","Twelve","Thirteen","Fourteen","Fifteen",
+ "Sixteen","Seventeen","Eighteen","Nineteen","Twenty",
+ "Twenty-One","Twenty-Two","Twenty-Three","Twenty-Four",
+ "Twenty-Five","Twenty-Six","Twenty-Seven","Twenty-Eight",
+ "Twenty-Nine","Thirty","Thirty-One","Thirty-Two",
+ "Thirty-Three","Thirty-Four","Thirty-Five","Thirty-Six",
+ "Thirty-Seven","Thirty-Eight","Thirty-Nine"};
+
+ DTMStringPool pool=new DTMStringPool();
+
+ System.out.println("If no complaints are printed below, we passed
initial test.");
+
+ for(int pass=0;pass<=1;++pass)
+ {
+ int i;
+
+ for(i=0;i<word.length;++i)
+ {
+ int j=pool.stringToIndex(word[i]);
+ if(j!=i)
+ System.out.println("\tMismatch populating pool: assigned "+
+ j+" for create "+i);
+ }
+
+ for(i=0;i<word.length;++i)
+ {
+ int j=pool.stringToIndex(word[i]);
+ if(j!=i)
+ System.out.println("\tMismatch in stringToIndex: returned "+
+ j+" for lookup "+i);
+ }
+
+ for(i=0;i<word.length;++i)
+ {
+ String w=pool.indexToString(i);
+ if(!word[i].equals(w))
+ System.out.println("\tMismatch in indexToString: returned"+
+ w+" for lookup "+i);
+ }
+
+ pool.removeAllElements();
+
+ System.out.println("\nPass "+pass+" complete\n");
+ } // end pass loop
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]