@Override public void close() { dataAccess.close(); }
@Override public synchronized void close() { da.close(); }
@Override public void close() { da.close(); }
@Override public void close() { names.close(); }
@Override public void close() { turnCosts.close(); }
@Override public void close() { index.close(); }
@Override public void close() { originalEdges.close(); }
@Override public void close() { landmarkWeightDA.close(); subnetworkStorage.close(); }
void removeDA(DataAccess da, String name, boolean forceClean) { if (da instanceof MMapDataAccess) ((MMapDataAccess) da).close(forceClean); else da.close(); if (da.getType().isStoring()) removeDir(new File(location + name)); }
@After public void tearDown() { if (da != null) da.close(); Helper.removeDir(new File(location)); }
@Test public void testSegmentSize() { DataAccess da = createDataAccess(name); da.setSegmentSize(20); assertEquals(128, da.getSegmentSize()); da.close(); }
@Test public void textMixRAM2MMAP() { DataAccess da = new RAMDataAccess(name, directory, true, defaultOrder); assertFalse(da.loadExisting()); da.create(100); da.setInt(7 * 4, 123); da.flush(); da.close(); da = createDataAccess(name); assertTrue(da.loadExisting()); assertEquals(123, da.getInt(7 * 4)); da.close(); }
@Test public void testRenameNoFlush() { DataAccess da = createDataAccess(name); da.create(100); da.setInt(17 * 4, 17); try { da.rename(name + "wow"); assertTrue(false); } catch (Exception ex) { } da.close(); }
@Test public void textMixMMAP2RAM() { DataAccess da = createDataAccess(name); assertFalse(da.loadExisting()); da.create(100); da.setInt(7 * 4, 123); // TODO "memory mapped flush" is expensive and not required. only writing the header is required. da.flush(); da.close(); da = new RAMDataAccess(name, directory, true, defaultOrder); assertTrue(da.loadExisting()); assertEquals(123, da.getInt(7 * 4)); da.close(); } }
@Test public void testSegments() { DataAccess da = createDataAccess(name); da.setSegmentSize(128); da.create(10); assertEquals(1, da.getSegments()); da.ensureCapacity(500); int olds = da.getSegments(); assertTrue(olds > 3); da.setInt(400, 321); da.flush(); da.close(); da = createDataAccess(name); assertTrue(da.loadExisting()); assertEquals(olds, da.getSegments()); assertEquals(321, da.getInt(400)); da.close(); }
@Test public void testHeader() { DataAccess da = createDataAccess(name); da.create(300); da.setHeader(7 * 4, 123); assertEquals(123, da.getHeader(7 * 4)); da.setHeader(10 * 4, Integer.MAX_VALUE / 3); assertEquals(Integer.MAX_VALUE / 3, da.getHeader(10 * 4)); da.setHeader(11 * 4, Helper.degreeToInt(123.321)); assertEquals(123.321, Helper.intToDegree(da.getHeader(11 * 4)), 1e-4); da.flush(); da.close(); da = createDataAccess(name); assertTrue(da.loadExisting()); assertEquals(123, da.getHeader(7 * 4)); da.close(); }