Bug 1270213 - Add FileLastModifiedComparator. r=sebastian draft
authorMichael Comella <michael.l.comella@gmail.com>
Thu, 05 May 2016 14:42:34 -0700
changeset 364560 477739d5bdb18dc311b59c8b09aa22e91ee4f272
parent 364559 9d8a20548b82126d2dd9ff11744146dfa441b2f6
child 364561 eeae7245ce2e4ef7c70c92dd913709dce77811f9
push id17492
push usermichael.l.comella@gmail.com
push dateFri, 06 May 2016 21:43:40 +0000
reviewerssebastian
bugs1270213
milestone49.0a1
Bug 1270213 - Add FileLastModifiedComparator. r=sebastian MozReview-Commit-ID: 6JbQoqYbZsn
mobile/android/base/java/org/mozilla/gecko/util/FileUtils.java
mobile/android/tests/background/junit4/src/org/mozilla/gecko/util/TestFileUtils.java
--- 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);
+    }
 }