1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    * 
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.vfs.test;
18  
19  import junit.framework.AssertionFailedError;
20  import org.apache.commons.vfs.Capability;
21  import org.apache.commons.vfs.FileObject;
22  
23  /***
24   * Test cases for getting and setting file last modified time.
25   *
26   * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
27   * @version $Revision: 480428 $ $Date: 2006-11-29 07:15:24 +0100 (Mi, 29 Nov 2006) $
28   */
29  public class LastModifiedTests
30      extends AbstractProviderTestCase
31  {
32      /***
33       * Returns the capabilities required by the tests of this test case.
34       */
35      protected Capability[] getRequiredCaps()
36      {
37          return new Capability[]{
38              Capability.GET_LAST_MODIFIED
39          };
40      }
41  
42      /***
43       * Tests getting the last modified time of a file.
44       */
45      public void testGetLastModified() throws Exception
46      {
47          // Try a file.
48          final FileObject file = getReadFolder().resolveFile("file1.txt");
49          file.getContent().getLastModifiedTime();
50  
51          // TODO - switch this on
52          // Try a folder
53          //final FileObject folder = getReadFolder().resolveFile( "dir1" );
54          //folder.getContent().getLastModifiedTime();
55      }
56  
57      /***
58       * Tests setting the last modified time of file.
59       */
60      public void testSetLastModified() throws Exception
61      {
62          final long now = System.currentTimeMillis();
63  
64          if (getReadFolder().getFileSystem().hasCapability(Capability.SET_LAST_MODIFIED_FILE))
65          {
66              // Try a file
67              final FileObject file = getReadFolder().resolveFile("file1.txt");
68              file.getContent().setLastModifiedTime(now);
69              try
70              {
71                  assertEquals(now, file.getContent().getLastModifiedTime(), file.getFileSystem().getLastModTimeAccuracy());
72              }
73              catch (AssertionFailedError e)
74              {
75                  // on linux ext3 the above check is not necessarily true
76                  if (file.getFileSystem().getLastModTimeAccuracy() < 1000L)
77                  {
78                      assertEquals(now, file.getContent().getLastModifiedTime(), 1000L);
79                  }
80                  else
81                  {
82                      throw e;
83                  }
84              }
85          }
86  
87          if (getReadFolder().getFileSystem().hasCapability(Capability.SET_LAST_MODIFIED_FOLDER))
88          {
89              // Try a folder
90              final FileObject folder = getReadFolder().resolveFile("dir1");
91              folder.getContent().setLastModifiedTime(now);
92              try
93              {
94                  assertEquals(now, folder.getContent().getLastModifiedTime(), folder.getFileSystem().getLastModTimeAccuracy());
95              }
96              catch (AssertionFailedError e)
97              {
98                  // on linux ext3 the above check is not necessarily true
99                  if (folder.getFileSystem().getLastModTimeAccuracy() < 1000L)
100                 {
101                     assertEquals(now, folder.getContent().getLastModifiedTime(), 1000L);
102                 }
103                 else
104                 {
105                     throw e;
106                 }
107             }
108         }
109     }
110 }