@Test
 public void testTruncatedFileReturnsDefault() throws IOException {
   assertTrue(FILE.createNewFile());
   assertEquals(0, FILE.length());
   BestEffortLongFile f = new BestEffortLongFile(FILE, 12345L);
   try {
     assertEquals(12345L, f.get());
   } finally {
     f.close();
   }
 }
  @Test
  public void testGetSet() throws IOException {
    BestEffortLongFile f = new BestEffortLongFile(FILE, 12345L);
    try {
      // Before the file exists, should return default.
      assertEquals(12345L, f.get());

      // And first access should open it.
      assertTrue(FILE.exists());

      Random r = new Random();
      for (int i = 0; i < 100; i++) {
        long newVal = r.nextLong();
        // Changing the value should be reflected in the next get() call.
        f.set(newVal);
        assertEquals(newVal, f.get());

        // And should be reflected in a new instance (ie it actually got
        // written to the file)
        BestEffortLongFile f2 = new BestEffortLongFile(FILE, 999L);
        try {
          assertEquals(newVal, f2.get());
        } finally {
          IOUtils.closeStream(f2);
        }
      }
    } finally {
      IOUtils.closeStream(f);
    }
  }