@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(); }
@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(); }