예제 #1
0
  @Test
  public void testTrimTo() {
    DataAccess da = createDataAccess(name);
    da.setSegmentSize(128);
    da.create(128 * 11);
    da.setInt(1 * 4, 10);
    da.setInt(27 * 4, 200);
    da.setInt(31 * 4, 301);
    da.setInt(32 * 4, 302);
    da.setInt(337 * 4, 4000);

    // now 11 segments: (337 + 1) * 4 = 1352
    assertEquals(11, da.getSegments());
    assertEquals(11 * 128, da.getCapacity());

    // now 3 segments
    da.trimTo(128 * 2 + 1);
    assertEquals(3, da.getSegments());

    // now 2 segments
    da.trimTo(128 * 2);
    assertEquals(2, da.getSegments());
    assertEquals(301, da.getInt(31 * 4));
    assertEquals(302, da.getInt(32 * 4));

    // now only one segment
    da.trimTo(128 * 1);
    assertEquals(1, da.getSegments());
    assertEquals(301, da.getInt(31 * 4));

    // at least one segment
    da.trimTo(0);
    assertEquals(1, da.getSegments());
    da.close();
  }
예제 #2
0
  @Test
  public void testBoundsCheck() {
    DataAccess da = createDataAccess(name);
    da.setSegmentSize(128);
    da.create(128 * 11);
    da.setInt(32 * 4, 302);

    // make smaller
    da.trimTo(128 * 1);
    try {
      assertEquals(302, da.getInt(32 * 4));
      assertTrue(false);
    } catch (Exception ex) {
    }
    da.close();

    da = createDataAccess(name);
    da.create(128);
    da.setInt(31 * 4, 200);
    try {
      // this should fail with an index out of bounds exception
      da.setInt(32 * 4, 220);
      assertFalse(true);
    } catch (Exception ex) {
    }
    da.close();
  }