Author: ecki
Date: Wed Feb 11 02:15:41 2015
New Revision: 1658868

URL: http://svn.apache.org/r1658868
Log:
[tests] more seperate last modified tests, added todo for VFS-563

Modified:
    
commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/test/LastModifiedTests.java

Modified: 
commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/test/LastModifiedTests.java
URL: 
http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/test/LastModifiedTests.java?rev=1658868&r1=1658867&r2=1658868&view=diff
==============================================================================
--- 
commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/test/LastModifiedTests.java
 (original)
+++ 
commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/test/LastModifiedTests.java
 Wed Feb 11 02:15:41 2015
@@ -16,19 +16,21 @@
  */
 package org.apache.commons.vfs2.test;
 
-import junit.framework.AssertionFailedError;
+import static org.junit.Assert.assertNotEquals;
+
+import java.util.Date;
 
 import org.apache.commons.vfs2.Capability;
 import org.apache.commons.vfs2.FileObject;
+import org.apache.commons.vfs2.FileSystemException;
 import org.junit.Assert;
 
 /**
  * Test cases for getting and setting file last modified time.
- *
  */
 public class LastModifiedTests extends AbstractProviderTestCase
 {
-    private void asssertDelta(final String message, final long expected, final 
long actual, final long delta)
+    private void assertDelta(final String message, final long expected, final 
long actual, final long delta)
     {
         if (expected == actual)
         {
@@ -36,7 +38,7 @@ public class LastModifiedTests extends A
         }
         if (!(Math.abs(expected - actual) <= delta))
         {
-            Assert.fail(String.format("%s expected=%d, actual=%d, delta=%d", 
message, Long.valueOf(expected), Long.valueOf(actual), Long.valueOf(delta)));
+            Assert.fail(String.format("%s expected=%d (%s), actual=%d (%s), 
delta=%d", message, Long.valueOf(expected), new Date(expected).toString(), 
Long.valueOf(actual), new Date(actual).toString(), Long.valueOf(delta)));
         }
     }
 
@@ -51,71 +53,75 @@ public class LastModifiedTests extends A
     }
 
     /**
+     * Tests FileSystem#getLastModTimeAccuracy for sane values.
+     * @throws FileSystemException if error occurred
+     */
+    public void testGetAccurary() throws FileSystemException
+    {
+        final FileObject file = getReadFolder().resolveFile("file1.txt");
+        final long lastModTimeAccuracy = 
(long)file.getFileSystem().getLastModTimeAccuracy();
+        // System.out.println("Accuracy on " + 
file.getFileSystem().getRootURI() + " is " + lastModTimeAccuracy + " as told by 
" + file.getFileSystem().getClass().getCanonicalName());
+        assertTrue("Accuracy must be positive",  lastModTimeAccuracy >= 0);
+        assertTrue("Accuracy must be < 2m",  lastModTimeAccuracy < 2 * 60 * 
1000); // just any sane limit
+    }
+
+    /**
+     * Tests getting the last modified time of a folder.
+     * @throws FileSystemException if error occurred
+     */
+    public void testGetLastModifiedFolder() throws FileSystemException
+    {
+        final FileObject file = getReadFolder().resolveFile("dir1");
+        assertNotEquals(0L,  file.getContent().getLastModifiedTime());
+    }
+
+    /**
      * Tests getting the last modified time of a file.
+     * @throws FileSystemException if error occurred
      */
-    public void testGetLastModified() throws Exception
+    public void testGetLastModifiedFile() throws FileSystemException
     {
-        // Try a file.
         final FileObject file = getReadFolder().resolveFile("file1.txt");
-        file.getContent().getLastModifiedTime();
+        assertNotEquals(0L,  file.getContent().getLastModifiedTime());
+    }
+
+    /**
+     * Tests setting the last modified time of a folder.
+     * @throws FileSystemException if error occurred
+     */
+    public void testSetLastModifiedFolder() throws FileSystemException
+    {
+        final long yesterday = System.currentTimeMillis() - 24*60*60*1000;
 
-        // TODO - switch this on
-        // Try a folder
-        // final FileObject folder = getReadFolder().resolveFile( "dir1" );
-        // folder.getContent().getLastModifiedTime();
+        if 
(getReadFolder().getFileSystem().hasCapability(Capability.SET_LAST_MODIFIED_FOLDER))
+        {
+            // Try a folder
+            final FileObject folder = getReadFolder().resolveFile("dir1");
+            folder.getContent().setLastModifiedTime(yesterday);
+            final long lastModTimeAccuracy = 
(long)folder.getFileSystem().getLastModTimeAccuracy();
+            // folder.refresh(); TODO: does not work with SSH VFS-563
+            final long lastModifiedTime = 
folder.getContent().getLastModifiedTime();
+            assertDelta("set/getLastModified on Folder", yesterday, 
lastModifiedTime, lastModTimeAccuracy);
+        }
     }
 
     /**
      * Tests setting the last modified time of file.
+     * @throws FileSystemException if error occurred
      */
-    public void testSetLastModified() throws Exception
+    public void testSetLastModifiedFile() throws FileSystemException
     {
-        final long now = System.currentTimeMillis();
+        final long yesterday = System.currentTimeMillis() - 24*60*60*1000;
 
         if 
(getReadFolder().getFileSystem().hasCapability(Capability.SET_LAST_MODIFIED_FILE))
         {
             // Try a file
             final FileObject file = getReadFolder().resolveFile("file1.txt");
-            file.getContent().setLastModifiedTime(now);
-            final double lastModTimeAccuracy = 
file.getFileSystem().getLastModTimeAccuracy();
+            file.getContent().setLastModifiedTime(yesterday);
+            final long lastModTimeAccuracy = 
(long)file.getFileSystem().getLastModTimeAccuracy();
+            // folder.refresh(); TODO: does not work with SSH VFS-563
             final long lastModifiedTime = 
file.getContent().getLastModifiedTime();
-            try
-            {
-                assertEquals("Check 1", now, lastModifiedTime, 
lastModTimeAccuracy);
-            } catch (final AssertionFailedError e)
-            {
-                // on linux ext3 the above check is not necessarily true
-                if (lastModTimeAccuracy < 1000L)
-                {
-                    asssertDelta("Check 2", now, lastModifiedTime, 1000L);
-                } else
-                {
-                    throw e;
-                }
-            }
-        }
-
-        if 
(getReadFolder().getFileSystem().hasCapability(Capability.SET_LAST_MODIFIED_FOLDER))
-        {
-            // Try a folder
-            final FileObject folder = getReadFolder().resolveFile("dir1");
-            folder.getContent().setLastModifiedTime(now);
-            final double lastModTimeAccuracy = 
folder.getFileSystem().getLastModTimeAccuracy();
-            final long lastModifiedTime = 
folder.getContent().getLastModifiedTime();
-            try
-            {
-                assertEquals("Check 3", now, lastModifiedTime, 
lastModTimeAccuracy);
-            } catch (final AssertionFailedError e)
-            {
-                // on linux ext3 the above check is not necessarily true
-                if (lastModTimeAccuracy < 1000L)
-                {
-                    asssertDelta("Check 4", now, lastModifiedTime, 1000L);
-                } else
-                {
-                    throw e;
-                }
-            }
+            assertDelta("set/getLastModified on File", yesterday, 
lastModifiedTime, lastModTimeAccuracy);
         }
     }
 }


Reply via email to