JAL-3130 adapted getdown src. attempt 2. first attempt failed due to cp'ed .git files
[jalview.git] / getdown / src / getdown / core / src / test / java / com / threerings / getdown / cache / ResourceCacheTest.java
1 //
2 // Getdown - application installer, patcher and launcher
3 // Copyright (C) 2004-2018 Getdown authors
4 // https://github.com/threerings/getdown/blob/master/LICENSE
5
6 package com.threerings.getdown.cache;
7
8 import java.io.File;
9 import java.io.IOException;
10 import java.util.concurrent.TimeUnit;
11
12 import org.junit.*;
13 import org.junit.rules.TemporaryFolder;
14
15 import static org.junit.Assert.*;
16
17 /**
18  * Asserts the correct functionality of the {@link ResourceCache}.
19  */
20 public class ResourceCacheTest
21 {
22     @Before public void setupCache () throws IOException {
23         _fileToCache = _folder.newFile("filetocache.jar");
24         _cache = new ResourceCache(_folder.newFolder(".cache"));
25     }
26
27     @Test public void shouldCacheFile () throws IOException
28     {
29         assertEquals("abc123.jar", cacheFile().getName());
30     }
31
32     private File cacheFile() throws IOException
33     {
34         return _cache.cacheFile(_fileToCache, "abc123", "abc123");
35     }
36
37     @Test public void shouldTrackFileUsage () throws IOException
38     {
39         String name = "abc123.jar" + ResourceCache.LAST_ACCESSED_FILE_SUFFIX;
40         File lastAccessedFile = new File(cacheFile().getParentFile(), name);
41         assertTrue(lastAccessedFile.exists());
42     }
43
44     @Test public void shouldNotCacheTheSameFile () throws Exception
45     {
46         File cachedFile = cacheFile();
47         cachedFile.setLastModified(YESTERDAY);
48         long expectedLastModified = cachedFile.lastModified();
49         // caching it another time
50         File sameCachedFile = cacheFile();
51         assertEquals(expectedLastModified, sameCachedFile.lastModified());
52     }
53
54     @Test public void shouldRememberWhenFileWasRequested () throws Exception
55     {
56         File cachedFile = cacheFile();
57         String name = cachedFile.getName() + ResourceCache.LAST_ACCESSED_FILE_SUFFIX;
58         File lastAccessedFile = new File(cachedFile.getParentFile(), name);
59         lastAccessedFile.setLastModified(YESTERDAY);
60         long lastAccessed = lastAccessedFile.lastModified();
61         // caching it another time
62         cacheFile();
63         assertTrue(lastAccessedFile.lastModified() > lastAccessed);
64     }
65
66     @Rule public TemporaryFolder _folder = new TemporaryFolder();
67
68     private File _fileToCache;
69     private ResourceCache _cache;
70
71     private static final long YESTERDAY = System.currentTimeMillis() - TimeUnit.DAYS.toMillis(1);
72 }