Merge branch 'develop' into update_212_Dec_merge_with_21125_chamges
[jalview.git] / test / jalview / io / FileLoaderTest.java
index 7898ed5..e6d7c4b 100644 (file)
  */
 package jalview.io;
 
+import static org.testng.Assert.assertEquals;
+
+import jalview.bin.Cache;
+
 import org.junit.Assert;
 import org.testng.annotations.Test;
 
@@ -39,4 +43,34 @@ public class FileLoaderTest
     // Data source type expected to be DataSourceType.URL
     Assert.assertEquals(DataSourceType.URL, fileLoader.protocol);
   }
+
+  @Test(groups = "Functional")
+  public void testUpdateRecentlyOpened()
+  {
+    // ensure properties file is read-only
+    Cache.loadProperties("test/jalview/io/testProps.jvprops");
+
+    String recent = "RECENT_FILE";
+    Cache.removeProperty(recent);
+
+    String prop = FileLoader.updateRecentlyOpened("a/b/c",
+            DataSourceType.FILE);
+    assertEquals(prop, "a/b/c");
+
+    prop = FileLoader.updateRecentlyOpened("d/e/f", DataSourceType.FILE);
+    assertEquals(prop, "d/e/f\ta/b/c");
+
+    // revisiting a file moves it to the top of the list
+    prop = FileLoader.updateRecentlyOpened("a/b/c", DataSourceType.FILE);
+    assertEquals(prop, "a/b/c\td/e/f");
+    
+    // history list is limited to the most recent 11 items
+    for (int i = 0; i < 20; i++)
+    {
+      prop = FileLoader.updateRecentlyOpened(String.format("%d.fa", i),
+              DataSourceType.FILE);
+    }
+    assertEquals(prop,
+            "19.fa\t18.fa\t17.fa\t16.fa\t15.fa\t14.fa\t13.fa\t12.fa\t11.fa\t10.fa\t9.fa");
+  }
 }