Bug 1270213 - Add FileLastModifiedComparator. r=sebastian
MozReview-Commit-ID: 6JbQoqYbZsn
--- a/mobile/android/base/java/org/mozilla/gecko/util/FileUtils.java
+++ b/mobile/android/base/java/org/mozilla/gecko/util/FileUtils.java
@@ -12,16 +12,17 @@ import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.FilenameFilter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.nio.charset.Charset;
+import java.util.Comparator;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.json.JSONException;
import org.json.JSONObject;
import org.mozilla.gecko.annotation.RobocopTarget;
@@ -234,9 +235,16 @@ public class FileUtils {
if (mCachedMatcher == null) {
mCachedMatcher = mPattern.matcher(filename);
} else {
mCachedMatcher.reset(filename);
}
return mCachedMatcher.matches();
}
}
+
+ public static class FileLastModifiedComparator implements Comparator<File> {
+ @Override
+ public int compare(final File lhs, final File rhs) {
+ return Long.compare(lhs.lastModified(), rhs.lastModified());
+ }
+ }
}
--- a/mobile/android/tests/background/junit4/src/org/mozilla/gecko/util/TestFileUtils.java
+++ b/mobile/android/tests/background/junit4/src/org/mozilla/gecko/util/TestFileUtils.java
@@ -9,16 +9,17 @@ package org.mozilla.gecko.util;
import org.json.JSONException;
import org.json.JSONObject;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.junit.runner.RunWith;
import org.mozilla.gecko.background.testhelpers.TestRunner;
+import org.mozilla.gecko.util.FileUtils.FileLastModifiedComparator;
import org.mozilla.gecko.util.FileUtils.FilenameRegexFilter;
import org.mozilla.gecko.util.FileUtils.FilenameWhitelistFilter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -315,9 +316,24 @@ public class TestFileUtils {
assertTrue("Filename, " + str + ", matching regex expected to accept", testFilter.accept(testFile, str));
}
final String[] notExpectedToAccept = new String[] { "DUCKIE", "1337", "2fast" };
for (final String str : notExpectedToAccept) {
assertFalse("Filename, " + str + ", not matching regex not expected to accept", testFilter.accept(testFile, str));
}
}
+
+ @Test
+ public void testFileLastModifiedComparator() {
+ final FileLastModifiedComparator testComparator = new FileLastModifiedComparator();
+ final File oldFile = mock(File.class);
+ final File newFile = mock(File.class);
+ final File equallyNewFile = mock(File.class);
+ when(oldFile.lastModified()).thenReturn(10L);
+ when(newFile.lastModified()).thenReturn(100L);
+ when(equallyNewFile.lastModified()).thenReturn(100L);
+
+ assertTrue("Old file is less than new file", testComparator.compare(oldFile, newFile) < 0);
+ assertTrue("New file is greater than old file", testComparator.compare(newFile, oldFile) > 0);
+ assertTrue("New files are equal", testComparator.compare(newFile, equallyNewFile) == 0);
+ }
}