8a9e56ae582847a61476a70f19fe161869189982
[proteocache.git] / testsrc / compbio / casscode / msa / LimitTester.java
1 /* Copyright (c) 2009 Peter Troshin\r
2  *  \r
3  *  JAva Bioinformatics Analysis Web Services (JABAWS) @version: 1.0     \r
4  * \r
5  *  This library is free software; you can redistribute it and/or modify it under the terms of the\r
6  *  Apache License version 2 as published by the Apache Software Foundation\r
7  * \r
8  *  This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without\r
9  *  even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Apache \r
10  *  License for more details.\r
11  * \r
12  *  A copy of the license is in apache_license.txt. It is also available here:\r
13  * @see: http://www.apache.org/licenses/LICENSE-2.0.txt\r
14  * \r
15  * Any republication or derived work distributed in source code form\r
16  * must include this copyright and license notice.\r
17  */\r
18 \r
19 package compbio.runner.msa;\r
20 \r
21 import static org.testng.Assert.assertEquals;\r
22 import static org.testng.Assert.assertFalse;\r
23 import static org.testng.Assert.assertNotNull;\r
24 import static org.testng.Assert.assertTrue;\r
25 import static org.testng.Assert.fail;\r
26 \r
27 import java.io.File;\r
28 import java.io.FileInputStream;\r
29 import java.io.FileNotFoundException;\r
30 import java.io.IOException;\r
31 import java.util.List;\r
32 \r
33 import javax.xml.bind.JAXBException;\r
34 \r
35 import org.testng.annotations.BeforeMethod;\r
36 import org.testng.annotations.Test;\r
37 \r
38 import compbio.data.sequence.FastaSequence;\r
39 import compbio.data.sequence.SequenceUtil;\r
40 import compbio.engine.conf.RunnerConfigMarshaller;\r
41 import compbio.metadata.AllTestSuit;\r
42 import compbio.metadata.Limit;\r
43 import compbio.metadata.LimitsManager;\r
44 import compbio.metadata.PresetManager;\r
45 \r
46 public class LimitTester {\r
47 \r
48         static final String clustalLimitsFile = AllTestSuit.TEST_DATA_PATH\r
49                         + "ClustalLimits.xml";\r
50         static String test_input = AllTestSuit.TEST_DATA_PATH_ABSOLUTE\r
51                         + "TO1381.fasta"; //\r
52         static final String input = AllTestSuit.TEST_DATA_PATH\r
53                         + "ClustalPresets.xml";\r
54 \r
55         LimitsManager<ClustalW> clustalLimitConfig = null;\r
56         PresetManager<ClustalW> presets = null;\r
57 \r
58         @BeforeMethod(groups = { AllTestSuit.test_group_runner })\r
59         public void setup() {\r
60                 try {\r
61                         RunnerConfigMarshaller<ClustalW> clustalmarsh = new RunnerConfigMarshaller<ClustalW>(\r
62                                         LimitsManager.class);\r
63                         clustalLimitConfig = clustalmarsh.read(new FileInputStream(\r
64                                         new File(clustalLimitsFile)), LimitsManager.class);\r
65                         assertNotNull(clustalLimitConfig.getLimits());\r
66                         assertEquals(clustalLimitConfig.getLimits().size(), 3);\r
67                         // Load presets\r
68                         RunnerConfigMarshaller<ClustalW> rconfigPresets = new RunnerConfigMarshaller<ClustalW>(\r
69                                         PresetManager.class);\r
70                         File infile = new File(input);\r
71                         assertTrue(infile.exists());\r
72                         presets = rconfigPresets.read(new FileInputStream(infile),\r
73                                         PresetManager.class);\r
74                         assertNotNull(presets);\r
75                         assertFalse(presets.getPresets().isEmpty());\r
76 \r
77                 } catch (JAXBException e) {\r
78                         e.printStackTrace();\r
79                         fail(e.getLocalizedMessage());\r
80                 } catch (FileNotFoundException e) {\r
81                         e.printStackTrace();\r
82                         fail(e.getLocalizedMessage());\r
83                 }\r
84 \r
85         }\r
86 \r
87         @Test\r
88         public void testLoadLimits() {\r
89                 assertNotNull(clustalLimitConfig);\r
90                 List<Limit<ClustalW>> limits = clustalLimitConfig.getLimits();\r
91                 assertEquals(limits.size(), 3);\r
92                 Limit<ClustalW> limit = limits.get(0);\r
93                 assertNotNull(limit);\r
94                 assertEquals(limit.getPreset(),\r
95                                 "Disable gap weighting (Speed-oriented)");\r
96                 assertEquals(limit.getSeqNumber(), 400);\r
97                 assertEquals(limit.getAvgSeqLength(), 600);\r
98                 assertFalse(limit.isDefault());\r
99 \r
100                 limit = limits.get(1);\r
101                 assertNotNull(limit);\r
102                 assertEquals(limit.getPreset(), null);\r
103                 assertEquals(limit.getSeqNumber(), 1000);\r
104                 assertEquals(limit.getAvgSeqLength(), 400);\r
105                 assertTrue(limit.isDefault());\r
106         }\r
107 \r
108         @Test\r
109         public void testLimitExceeded() {\r
110 \r
111                 String test_input = AllTestSuit.TEST_DATA_PATH_ABSOLUTE\r
112                                 + "testlimit.fasta";\r
113 \r
114                 FileInputStream fio;\r
115                 try {\r
116                         fio = new FileInputStream(test_input);\r
117                         List<FastaSequence> data = SequenceUtil.readFasta(fio);\r
118                         fio.close();\r
119                         assertNotNull(data);\r
120                         assertEquals(data.size(), 6);\r
121                         assertEquals(Limit.getAvgSequenceLength(data), 20486);\r
122                         Limit small = new Limit(40, 500, "default");\r
123 \r
124                         assertTrue(small.isExceeded(data));\r
125 \r
126                         Limit large = new Limit(500, 500, "default");\r
127                         assertFalse(large.isExceeded(data));\r
128 \r
129                         Limit numSeqOnly = new Limit(6, 0, "default");\r
130                         assertFalse(numSeqOnly.isExceeded(data));\r
131 \r
132                         Limit exnumSeqOnly = new Limit(5, 0, "default");\r
133                         assertTrue(exnumSeqOnly.isExceeded(data));\r
134 \r
135                         Limit numSeq3 = new Limit(5, 1000000, "default");\r
136                         assertTrue(numSeq3.isExceeded(data));\r
137 \r
138                 } catch (FileNotFoundException e) {\r
139                         e.printStackTrace();\r
140                         fail(e.getMessage());\r
141                 } catch (IOException e) {\r
142                         e.printStackTrace();\r
143                         fail(e.getMessage());\r
144                 }\r
145         }\r
146 }\r