@Test
  public void testTwoLevel() {

    // Define numbers of buckets on each level
    RangeCalculator[] rangeCalculators = {
      new LastBitsToRange(12), // 2^12=4096 Buckets on level 0
      new LastBitsToRange(12)
    }; // 2^12=4096 Buckets on level 1

    Iterator<Integer> importIterator = new RangeIterator(-1000000, 1000000);

    MultiLevelHashTester ht = new MultiLevelHashTester(importIterator, rangeCalculators);

    BucketBoundaries[] boundaries = {
      new BucketBoundaries(400, 600, 5, 0.01),
      new BucketBoundaries(0, 4, BucketBoundaries.MAX_EMPTY_UNBOUNDED, 0.0001)
    };

    LOG.debug("Start Two Level hash test");
    ht.runTest(boundaries);
    LOG.debug("End Two Level hash test");
  }
  @Test
  public void testRandom() {

    // Define numbers of buckets on each level
    RangeCalculator[] rangeCalculators = {
      new LastBitsToRange(10), // 2^10=1024 Buckets on level 0
      new LastBitsToRange(10), // 2^10=1024 Buckets on level 1
      new LastBitsToRange(10)
    }; // 2^10=1024 Buckets on level 2

    Iterator<Integer> importIterator = new RandomIterator(SEED, 2000000);

    MultiLevelHashTester ht = new MultiLevelHashTester(importIterator, rangeCalculators);

    BucketBoundaries[] boundaries = {
      new BucketBoundaries(1800, 2110, 5, 0.01),
      new BucketBoundaries(0, 15, BucketBoundaries.MAX_EMPTY_UNBOUNDED, 0.0001),
      new BucketBoundaries(0, 2, BucketBoundaries.MAX_EMPTY_UNBOUNDED, 0.000001)
    };

    LOG.debug("Start Random hash test");
    ht.runTest(boundaries);
    LOG.debug("End Random hash test");
  }
  @Test
  public void testStepSeventeen() {

    // Define numbers of buckets on each level
    RangeCalculator[] rangeCalculators = {
      new LastBitsToRange(10), // 2^10=1024 Buckets on level 0
      new LastBitsToRange(10), // 2^10=1024 Buckets on level 1
      new LastBitsToRange(10)
    }; // 2^10=1024 Buckets on level 2

    Iterator<Integer> importIterator = new StepRangeIterator(-30000000, 30000000, 17);

    MultiLevelHashTester ht = new MultiLevelHashTester(importIterator, rangeCalculators);

    BucketBoundaries[] boundaries = {
      new BucketBoundaries(3000, 3700, 5, 0.01),
      new BucketBoundaries(0, 20, BucketBoundaries.MAX_EMPTY_UNBOUNDED, 0.0001),
      new BucketBoundaries(0, 3, BucketBoundaries.MAX_EMPTY_UNBOUNDED, 0.000001)
    };

    LOG.debug("Start Step Seventeen hash test");
    ht.runTest(boundaries);
    LOG.debug("End Step Seventeen hash test");
  }