X-Git-Url: https://git.mdrn.pl/pylucene.git/blobdiff_plain/a2e61f0c04805cfcb8706176758d1283c7e3a55c..aaeed5504b982cf3545252ab528713250aa33eed:/lucene-java-3.5.0/lucene/contrib/facet/src/test/org/apache/lucene/util/collections/IntHashSetTest.java diff --git a/lucene-java-3.5.0/lucene/contrib/facet/src/test/org/apache/lucene/util/collections/IntHashSetTest.java b/lucene-java-3.5.0/lucene/contrib/facet/src/test/org/apache/lucene/util/collections/IntHashSetTest.java new file mode 100644 index 0000000..d004531 --- /dev/null +++ b/lucene-java-3.5.0/lucene/contrib/facet/src/test/org/apache/lucene/util/collections/IntHashSetTest.java @@ -0,0 +1,226 @@ +package org.apache.lucene.util.collections; + +import java.util.HashSet; + +import org.junit.Test; + +import org.apache.lucene.util.LuceneTestCase; +import org.apache.lucene.util.collections.IntHashSet; + +/** + * 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 IntHashSetTest extends LuceneTestCase { + + @Test + public void test0() { + IntHashSet set0 = new IntHashSet(); + + assertEquals(0, set0.size()); + assertTrue(set0.isEmpty()); + set0.add(0); + assertEquals(1, set0.size()); + assertFalse(set0.isEmpty()); + set0.remove(0); + assertEquals(0, set0.size()); + assertTrue(set0.isEmpty()); + } + + @Test + public void test1() { + IntHashSet set0 = new IntHashSet(); + + assertEquals(0, set0.size()); + assertTrue(set0.isEmpty()); + for (int i = 0; i < 1000; ++i) { + set0.add(i); + } + assertEquals(1000, set0.size()); + assertFalse(set0.isEmpty()); + for (int i = 0; i < 1000; ++i) { + assertTrue(set0.contains(i)); + } + + set0.clear(); + assertEquals(0, set0.size()); + assertTrue(set0.isEmpty()); + + } + + @Test + public void test2() { + IntHashSet set0 = new IntHashSet(); + + assertEquals(0, set0.size()); + assertTrue(set0.isEmpty()); + for (int i = 0; i < 1000; ++i) { + set0.add(1); + set0.add(-382); + } + assertEquals(2, set0.size()); + assertFalse(set0.isEmpty()); + set0.remove(-382); + set0.remove(1); + assertEquals(0, set0.size()); + assertTrue(set0.isEmpty()); + + } + + @Test + public void test3() { + IntHashSet set0 = new IntHashSet(); + + assertEquals(0, set0.size()); + assertTrue(set0.isEmpty()); + for (int i = 0; i < 1000; ++i) { + set0.add(i); + } + + for (int i = 0; i < 1000; i += 2) { + set0.remove(i); + } + + assertEquals(500, set0.size()); + for (int i = 0; i < 1000; ++i) { + if (i % 2 == 0) { + assertFalse(set0.contains(i)); + } else { + assertTrue(set0.contains(i)); + } + } + + } + + @Test + public void test4() { + IntHashSet set1 = new IntHashSet(); + HashSet set2 = new HashSet(); + for (int i = 0; i < ArrayHashMapTest.RANDOM_TEST_NUM_ITERATIONS; ++i) { + int value = random.nextInt() % 500; + boolean shouldAdd = random.nextBoolean(); + if (shouldAdd) { + set1.add(value); + set2.add(value); + } else { + set1.remove(value); + set2.remove(value); + } + } + assertEquals(set2.size(), set1.size()); + int i = 0; + for (int value : set2) { + assertTrue(set1.contains(value)); + i++; + } + } + + @Test + public void testRegularJavaSet() { + HashSet set = new HashSet(); + for (int j = 0; j < 100; ++j) { + for (int i = 0; i < ArrayHashMapTest.RANDOM_TEST_NUM_ITERATIONS; ++i) { + int value = random.nextInt() % 5000; + boolean shouldAdd = random.nextBoolean(); + if (shouldAdd) { + set.add(value); + } else { + set.remove(value); + } + } + set.clear(); + } + } + + @Test + public void testMySet() { + IntHashSet set = new IntHashSet(); + for (int j = 0; j < 100; ++j) { + for (int i = 0; i < ArrayHashMapTest.RANDOM_TEST_NUM_ITERATIONS; ++i) { + int value = random.nextInt() % 5000; + boolean shouldAdd = random.nextBoolean(); + if (shouldAdd) { + set.add(value); + } else { + set.remove(value); + } + } + set.clear(); + } + } + + @Test + public void testToArray() { + IntHashSet set = new IntHashSet(); + for (int j = 0; j < 100; ++j) { + for (int i = 0; i < ArrayHashMapTest.RANDOM_TEST_NUM_ITERATIONS; ++i) { + int value = random.nextInt() % 5000; + boolean shouldAdd = random.nextBoolean(); + if (shouldAdd) { + set.add(value); + } else { + set.remove(value); + } + } + int[] vals = set.toArray(); + assertEquals(set.size(), vals.length); + + int[] realValues = new int[set.size()]; + int[] unrealValues = set.toArray(realValues); + assertEquals(realValues, unrealValues); + for (int value : vals) { + assertTrue(set.remove(value)); + } + for (int i = 0; i < vals.length; ++i) { + assertEquals(vals[i], realValues[i]); + } + } + } + + @Test + public void testZZRegularJavaSet() { + HashSet set = new HashSet(); + for (int j = 0; j < 100; ++j) { + for (int i = 0; i < ArrayHashMapTest.RANDOM_TEST_NUM_ITERATIONS; ++i) { + int value = random.nextInt() % 5000; + boolean shouldAdd = random.nextBoolean(); + if (shouldAdd) { + set.add(value); + } else { + set.remove(value); + } + } + set.clear(); + } + } + + @Test + public void testZZMySet() { + IntHashSet set = new IntHashSet(); + for (int j = 0; j < 100; ++j) { + for (int i = 0; i < ArrayHashMapTest.RANDOM_TEST_NUM_ITERATIONS; ++i) { + int value = random.nextInt() % 5000; + boolean shouldAdd = random.nextBoolean(); + if (shouldAdd) { + set.add(value); + } else { + set.remove(value); + } + } + set.clear(); + } + } +}