private void verifyVersionedCellKeyValues(int ttl, ColumnFamilyDescriptor cfd)
    throws IOException {
    TableDescriptor htd = TableDescriptorBuilder.newBuilder(TableName.valueOf(name.getMethodName()))
      .setColumnFamily(cfd).build();

    HRegion region = hbu.createLocalHRegion(htd, null, null);

    try {
      long startTS = EnvironmentEdgeManager.currentTime();
      ManualEnvironmentEdge injectEdge = new ManualEnvironmentEdge();
      injectEdge.setValue(startTS);
      EnvironmentEdgeManager.injectEdge(injectEdge);

      long ts = startTS - 2000;
      putFourVersions(region, ts);

      Get get;
      Result result;

      // check we can still see all versions before compaction
      get = new Get(T1);
      get.readAllVersions();
      get.setTimeRange(0, ts);
      result = region.get(get);
      checkResult(result, c0, T4, T3, T2, T1);

      region.flush(true);
      region.compact(true);
      Assert.assertEquals(startTS, EnvironmentEdgeManager.currentTime());
      long expiredTime = EnvironmentEdgeManager.currentTime() - ts - 4;
      Assert.assertTrue("TTL for T1 has expired", expiredTime < (ttl * 1000));
      // check that nothing was purged yet
      verifyBeforeCompaction(region, ts);

      injectEdge.incValue(ttl * 1000);

      region.flush(true);
      region.compact(true);
      verifyAfterTtl(region, ts);
    } finally {
      HBaseTestingUtil.closeRegionAndWAL(region);
    }
  }
Verify that basic filters still behave correctly with minimum versions enabled.
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestMinVersions.java