public CompatibilityInfoMap check(String prevSnapshotPath, String currSnapshotPath, CompatibilityLevel compatLevel)
  {
    return checkCompatibility(prevSnapshotPath, currSnapshotPath, compatLevel, false);
  }
@Test
  public void testFileNotFound()
  {
    final String nonExistentFilename1 = "NonExistentFile1";
    final String nonExistentFilename2 = "NonExistentFile2";
    final Collection<CompatibilityInfo> testIncompatibles = new HashSet<>();
    final Collection<CompatibilityInfo> testCompatibles = new HashSet<>();

    testIncompatibles.add(new CompatibilityInfo(Arrays.<Object>asList(""),
                                                CompatibilityInfo.Type.RESOURCE_MISSING,
                                                nonExistentFilename1));
    testCompatibles.add(new CompatibilityInfo(Arrays.<Object>asList(""),
                                              CompatibilityInfo.Type.RESOURCE_NEW,
                                              nonExistentFilename2));

    final RestLiSnapshotCompatibilityChecker checker = new RestLiSnapshotCompatibilityChecker();

    CompatibilityInfoMap infoMap = checker.check(nonExistentFilename1,
                                               nonExistentFilename2,
                                               CompatibilityLevel.BACKWARDS);
    Assert.assertFalse(infoMap.isCompatible(CompatibilityLevel.BACKWARDS));

    final Collection<CompatibilityInfo> incompatibles = new HashSet<>(infoMap.getIncompatibles());
    final Collection<CompatibilityInfo> compatibles = new HashSet<>(infoMap.getCompatibles());

    for (CompatibilityInfo te : incompatibles)
    {
      Assert.assertTrue(testIncompatibles.contains(te), "Reported incompatibles should contain: " + te.toString());
      incompatibles.remove(te);
    }

    for (CompatibilityInfo di : compatibles)
    {
      Assert.assertTrue(testCompatibles.contains(di), "Reported compatibles should contain: " + di.toString());
      compatibles.remove(di);
    }
  }