--- /dev/null
+package org.apache.lucene.util.collections;
+
+import org.junit.Test;
+
+import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.collections.IntArray;
+
+/**
+ * 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.
+ */
+
+public class IntArrayTest extends LuceneTestCase {
+
+ @Test
+ public void test0() {
+ IntArray array = new IntArray();
+
+ assertEquals(0, array.size());
+
+ for (int i = 0; i < 100; ++i) {
+ array.addToArray(i);
+ }
+
+ assertEquals(100, array.size());
+ for (int i = 0; i < 100; ++i) {
+ assertEquals(i, array.get(i));
+ }
+
+ assertTrue(array.equals(array));
+ }
+
+ @Test
+ public void test1() {
+ IntArray array = new IntArray();
+ IntArray array2 = new IntArray();
+
+ assertEquals(0, array.size());
+
+ for (int i = 0; i < 100; ++i) {
+ array.addToArray(99-i);
+ array2.addToArray(99-i);
+ }
+
+ assertEquals(100, array.size());
+ for (int i = 0; i < 100; ++i) {
+ assertEquals(i, array.get(99-i));
+ }
+
+ array.sort();
+ for (int i = 0; i < 100; ++i) {
+ assertEquals(i, array.get(i));
+ }
+
+ assertTrue(array.equals(array2));
+ }
+
+ @Test
+ public void test2() {
+ IntArray array = new IntArray();
+ IntArray array2 = new IntArray();
+ IntArray array3 = new IntArray();
+
+ for (int i = 0; i < 100; ++i) {
+ array.addToArray(i);
+ }
+
+ for (int i = 0; i < 100; ++i) {
+ array2.addToArray(i*2);
+ }
+
+ for (int i = 0; i < 50; ++i) {
+ array3.addToArray(i*2);
+ }
+
+ assertFalse(array.equals(array2));
+
+ array.intersect(array2);
+ assertTrue(array.equals(array3));
+ assertFalse(array.equals(array2));
+ }
+
+ @Test
+ public void testSet() {
+ int[] original = new int[] { 2,4,6,8,10,12,14 };
+ int[] toSet = new int[] { 1,3,5,7,9,11};
+
+ IntArray arr = new IntArray();
+ for (int val : original) {
+ arr.addToArray(val);
+ }
+
+ for (int i = 0; i < toSet.length; i++ ) {
+ int val = toSet[i];
+ arr.set(i, val);
+ }
+
+ // Test to see if the set worked correctly
+ for (int i = 0; i < toSet.length; i++ ) {
+ assertEquals(toSet[i], arr.get(i));
+ }
+
+ // Now attempt to set something outside of the array
+ try {
+ arr.set(100, 99);
+ fail("IntArray.set should have thrown an exception for attempting to set outside the array");
+ } catch (ArrayIndexOutOfBoundsException e) {
+ // We expected this to happen so let it fall through
+ // silently
+ }
+
+ }
+
+}