@Test
  public void testCursor_withManyValues() {
    final long factor = 123456;
    final int k = 1000;

    for (int i = 1; i <= k; i++) {
      long key1 = (long) i;
      long key2 = key1 * factor;
      hsa.ensure(key1, key2);
    }

    boolean[] verifyKeys = new boolean[k];
    Arrays.fill(verifyKeys, false);

    HashSlotCursor16byteKey cursor = hsa.cursor();
    while (cursor.advance()) {
      long key1 = cursor.key1();
      long key2 = cursor.key2();

      assertEquals(key1 * factor, key2);
      verifyKeys[((int) key1) - 1] = true;
    }

    for (int i = 0; i < k; i++) {
      assertTrue("Haven't read " + k + "th key!", verifyKeys[i]);
    }
  }
 @Test(expected = AssertionError.class)
 @RequireAssertEnabled
 public void testCursor_key2_whenDisposed() {
   HashSlotCursor16byteKey cursor = hsa.cursor();
   hsa.dispose();
   cursor.key2();
 }
  @Test
  public void testCursor_key2() {
    final long key1 = randomKey();
    final long key2 = randomKey();
    hsa.ensure(key1, key2);

    HashSlotCursor16byteKey cursor = hsa.cursor();
    cursor.advance();
    assertEquals(key2, cursor.key2());
  }
 @Test(expected = AssertionError.class)
 @RequireAssertEnabled
 public void testCursor_key2_withoutAdvance() {
   HashSlotCursor16byteKey cursor = hsa.cursor();
   cursor.key2();
 }