pylucene 3.5.0-3
[pylucene.git] / lucene-java-3.5.0 / lucene / src / test / org / apache / lucene / document / TestNumberTools.java
diff --git a/lucene-java-3.5.0/lucene/src/test/org/apache/lucene/document/TestNumberTools.java b/lucene-java-3.5.0/lucene/src/test/org/apache/lucene/document/TestNumberTools.java
new file mode 100644 (file)
index 0000000..12734d9
--- /dev/null
@@ -0,0 +1,82 @@
+package org.apache.lucene.document;
+
+/**
+ * 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 regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.apache.lucene.util.LuceneTestCase;
+
+public class TestNumberTools extends LuceneTestCase {
+    public void testNearZero() {
+        for (int i = -100; i <= 100; i++) {
+            for (int j = -100; j <= 100; j++) {
+                subtestTwoLongs(i, j);
+            }
+        }
+    }
+
+    public void testMax() {
+        // make sure the constants convert to their equivalents
+        assertEquals(Long.MAX_VALUE, NumberTools
+                .stringToLong(NumberTools.MAX_STRING_VALUE));
+        assertEquals(NumberTools.MAX_STRING_VALUE, NumberTools
+                .longToString(Long.MAX_VALUE));
+
+        // test near MAX, too
+        for (long l = Long.MAX_VALUE; l > Long.MAX_VALUE - 10000; l--) {
+            subtestTwoLongs(l, l - 1);
+        }
+    }
+
+    public void testMin() {
+        // make sure the constants convert to their equivelents
+        assertEquals(Long.MIN_VALUE, NumberTools
+                .stringToLong(NumberTools.MIN_STRING_VALUE));
+        assertEquals(NumberTools.MIN_STRING_VALUE, NumberTools
+                .longToString(Long.MIN_VALUE));
+
+        // test near MIN, too
+        for (long l = Long.MIN_VALUE; l < Long.MIN_VALUE + 10000; l++) {
+            subtestTwoLongs(l, l + 1);
+        }
+    }
+
+    private static void subtestTwoLongs(long i, long j) {
+        // convert to strings
+        String a = NumberTools.longToString(i);
+        String b = NumberTools.longToString(j);
+
+        // are they the right length?
+        assertEquals(NumberTools.STR_SIZE, a.length());
+        assertEquals(NumberTools.STR_SIZE, b.length());
+
+        // are they the right order?
+        if (i < j) {
+            assertTrue(a.compareTo(b) < 0);
+        } else if (i > j) {
+            assertTrue(a.compareTo(b) > 0);
+        } else {
+            assertEquals(a, b);
+        }
+
+        // can we convert them back to longs?
+        long i2 = NumberTools.stringToLong(a);
+        long j2 = NumberTools.stringToLong(b);
+
+        assertEquals(i, i2);
+        assertEquals(j, j2);
+    }
+}
\ No newline at end of file