JAL-3599 Cater for macOS. ScheduledExecutor timeout implemented
[jalview.git] / test / jalview / ext / pymol / PymolManagerTest.java
1 /*
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $$Year-Rel$$ The Jalview Authors
4  * 
5  * This file is part of Jalview.
6  * 
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *  
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  * 
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  */
21 package jalview.ext.pymol;
22
23 import static org.testng.Assert.assertEquals;
24 import static org.testng.Assert.assertTrue;
25
26 import java.util.List;
27
28 import org.testng.annotations.Test;
29
30 import jalview.structure.StructureCommand;
31
32 public class PymolManagerTest
33 {
34   @Test(groups = "Functional")
35   public void testGetPostRequest()
36   {
37     String req = PymolManager
38             .getPostRequest(new StructureCommand("foobar"));
39     assertEquals(req,
40             "<methodCall><methodName>foobar</methodName><params></params></methodCall>");
41
42     req = PymolManager
43             .getPostRequest(new StructureCommand("foobar", "blue", "all"));
44     assertEquals(req,
45             "<methodCall><methodName>foobar</methodName><params>"
46                     + "<parameter><value>blue</value></parameter>"
47                     + "<parameter><value>all</value></parameter>"
48                     + "</params></methodCall>");
49   }
50
51   @Test(groups = "Functional")
52   public void testGetPymolPaths()
53   {
54     /*
55      * OSX
56      */
57     List<String> paths = PymolManager.getPymolPaths("Mac OS X");
58     assertEquals(paths.size(), 1);
59     assertTrue(
60             paths.contains("/Applications/PyMOL.app/Contents/MacOS/PyMOL"));
61
62     /*
63      * Linux
64      */
65     paths = PymolManager.getPymolPaths("Linux i386 1.5.0");
66     assertTrue(paths.contains("/usr/local/pymol/bin/PyMOL"));
67     assertTrue(paths.contains("/usr/local/bin/PyMOL"));
68     assertTrue(paths.contains("/usr/bin/PyMOL"));
69     assertTrue(paths.contains("/usr/local/pymol/bin/PyMOL"));
70     assertTrue(paths
71             .contains(System.getProperty("user.home") + "/opt/bin/PyMOL"));
72
73     /*
74      * Windows
75      */
76     paths = PymolManager.getPymolPaths("Windows 10");
77     assertTrue(paths.contains(System.getProperty("user.home")
78             + "\\AppData\\Local\\Schrodinger\\PyMOL2\\PyMOLWinWithConsole.bat"));
79     assertTrue(paths.contains(System.getProperty("user.home")
80             + "\\PyMOL\\PyMOLWinWithConsole.bat"));
81     assertTrue(paths
82             .contains("C:\\ProgramData\\PyMOL\\PyMOLWinWithConsole.bat"));
83
84     /*
85      * Other
86      */
87     paths = PymolManager.getPymolPaths("VAX/VMS");
88     assertTrue(paths.isEmpty());
89   }
90 }