Statistiques
| Branche: | Tag: | Révision :

dockonsurf / tests / test_dos_input.py @ 0dfa15ff

Historique | Voir | Annoter | Télécharger (6,84 ko)

1
import sys
2
import unittest
3

    
4
from modules.dos_input import *
5

    
6
sys.path.extend(['../', '../modules', '../examples'])
7

    
8

    
9
class TestStr2Lst(unittest.TestCase):
10
    def test_norm_behav(self):
11
        self.assertEqual(str2lst('45'), [45])
12
        self.assertEqual(str2lst('(78, 9)'), [[78, 9]])
13
        self.assertEqual(str2lst('128,(135 138;141) 87 {45 68}'),
14
                         [128, 87, [135, 138, 141], [45, 68]])
15
        self.assertEqual(str2lst('3 4.5', float), [3.0, 4.5])
16

    
17
    def test_exceptions(self):
18
        self.assertRaises(AttributeError, str2lst, 6)
19
        self.assertRaises(ValueError, str2lst, 'hola')
20
        self.assertRaises(ValueError, str2lst, '3 ((6 7) 8) 4')
21
        self.assertRaises(ValueError, str2lst, '3 4.5')
22

    
23

    
24
class TestCheckInpFile(unittest.TestCase):
25
    def test_good(self):
26
        self.assertEqual(check_inp_file('cp2k.inp', 'cp2k'), None)
27

    
28
    def test_bad(self):
29
        self.assertRaises(UnboundLocalError, check_inp_file, 'cp2k.sub', 'cp2k')
30

    
31

    
32
class TestGoodInput(unittest.TestCase):
33
    read_input('good.inp')
34

    
35
    def test_all_good(self):
36
        exp_dict = {'project_name': 'example',
37
                    'isolated': True,
38
                    'screening': True,
39
                    'refinement': True,
40
                    'code': 'cp2k',
41
                    'batch_q_sys': 'sge',
42
                    'subm_script': 'cp2k.sub',
43
                    'relaunch_err': 'geo_not_conv',
44
                    'max_qw': 5,
45
                    'special_atoms': [('Fe1', 'Fe'), ('Fe2', 'Fe'),
46
                                      ('O1', 'O')],
47
                    'isol_inp_file': 'cp2k.inp',
48
                    'molec_file': 'acetic.xyz',
49
                    'cluster_magns': ['energy', 'moi'],
50
                    'num_conformers': 100,
51
                    'min_confs': False,
52
                    'screen_inp_file': 'screen.inp',
53
                    'surf_file': 'hematite.xyz',
54
                    'sites': [128, [135, 138, 141]],
55
                    'molec_ads_ctrs': [178, [185, 187]],
56
                    'molec_neigh_ctrs': [145, 45],
57
                    'surf_norm_vect': [1.0, 0.0, 0.0],
58
                    'try_disso': True,
59
                    'sample_points_per_angle': 4,
60
                    'collision_threshold': 0.9,
61
                    'collision_bottom': 5.2,
62
                    'refine_inp_file': 'refine.inp',
63
                    'energy_cutoff': 1.0
64
                    }
65
        self.assertEqual(read_input('good.inp'), exp_dict)
66

    
67
    def test_run_type(self):
68
        self.assertEqual(get_run_type(), (True, True, True))
69

    
70
    def test_code(self):
71
        self.assertEqual(get_code(), 'cp2k')
72

    
73
    def test_batch_q_sys(self):
74
        self.assertEqual(get_batch_q_sys(), 'sge')
75

    
76
    def test_subm_script(self):
77
        self.assertEqual(get_subm_script(), 'cp2k.sub')
78

    
79
    def test_project_name(self):
80
        self.assertEqual(get_project_name(), 'example')
81

    
82
    def test_relaunch_err(self):
83
        self.assertEqual(get_relaunch_err(), 'geo_not_conv')
84

    
85
    def test_max_qw(self):
86
        self.assertEqual(get_max_qw(), 5)
87

    
88
    def test_special_atoms(self):
89
        self.assertEqual(get_special_atoms(), [('Fe1', 'Fe'), ('Fe2', 'Fe'),
90
                                               ('O1', 'O')])
91

    
92
    def test_isol_inp_file(self):
93
        self.assertEqual(get_isol_inp_file(), 'cp2k.inp')
94

    
95
    def test_molec_file(self):
96
        print(os.getcwd())
97
        self.assertEqual(get_molec_file(), 'acetic.xyz')
98

    
99
    def test_cluster_magns(self):
100
        self.assertEqual(get_cluster_magns(), ['energy', 'moi'])
101

    
102
    def test_num_conformers(self):
103
        self.assertEqual(get_num_conformers(), 100)
104

    
105
    def test_min_confs(self):
106
        self.assertEqual(get_min_confs(), False)
107

    
108
    def test_screen_inp_file(self):
109
        self.assertEqual(get_screen_inp_file(), 'screen.inp')
110

    
111
    def test_surf_file(self):
112
        self.assertEqual(get_surf_file(), 'hematite.xyz')
113

    
114
    def test_sites(self):
115
        self.assertEqual(get_sites(), [128, [135, 138, 141]])
116

    
117
    def test_molec_ads_ctrs(self):
118
        self.assertEqual(get_molec_ads_ctrs(), [178, [185, 187]])
119

    
120
    def test_molec_neigh_ctrs(self):
121
        self.assertEqual(get_molec_neigh_ctrs(), [145, 45])
122

    
123
    def test_surf_norm_vect(self):
124
        self.assertEqual(get_surf_norm_vect(), [1.0, 0.0, 0.0])
125

    
126
    def test_try_disso(self):
127
        self.assertEqual(get_try_disso(), True)
128

    
129
    def test_pts_per_angle(self):
130
        self.assertEqual(get_pts_per_angle(), 4)
131

    
132
    def test_coll_thrsld(self):
133
        self.assertEqual(get_coll_thrsld(), 0.9)
134

    
135
    def test_coll_bottom(self):
136
        self.assertEqual(get_coll_bottom(), 5.2)
137

    
138
    def test_refine_inp_file(self):
139
        self.assertEqual(get_refine_inp_file(), 'refine.inp')
140

    
141
    def test_energy_cutoff(self):
142
        self.assertEqual(get_energy_cutoff(), 1.0)
143

    
144

    
145
class TestBadInput(unittest.TestCase):
146
    dos_inp.read('wrong.inp')
147

    
148
    def test_run_type(self):
149
        self.assertRaises(ValueError, get_run_type)
150

    
151
    def test_code(self):
152
        self.assertRaises(ValueError, get_code)
153

    
154
    def test_batch_q_sys(self):
155
        self.assertRaises(ValueError, get_batch_q_sys)
156

    
157
    def test_subm_script(self):
158
        self.assertRaises(FileNotFoundError, get_subm_script)
159

    
160
    def test_relaunch_err(self):
161
        self.assertRaises(ValueError, get_relaunch_err)
162

    
163
    def test_max_qw(self):
164
        self.assertRaises(ValueError, get_max_qw)
165

    
166
    def test_special_atoms(self):
167
        self.assertRaises(ValueError, get_special_atoms)
168

    
169
    def test_isol_inp_file(self):
170
        self.assertRaises(FileNotFoundError, get_isol_inp_file)
171

    
172
    def test_cluster_magns(self):
173
        self.assertRaises(ValueError, get_cluster_magns)
174

    
175
    def test_num_conformers(self):
176
        self.assertRaises(ValueError, get_num_conformers)
177

    
178
    def test_min_confs(self):
179
        self.assertRaises(ValueError, get_min_confs)
180

    
181
    def test_screen_inp_file(self):
182
        self.assertRaises(FileNotFoundError, get_screen_inp_file)
183

    
184
    def test_surf_file(self):
185
        self.assertRaises(FileNotFoundError, get_surf_file)
186

    
187
    def test_sites(self):
188
        self.assertRaises(ValueError, get_sites)
189

    
190
    def test_molec_ads_ctrs(self):
191
        self.assertRaises(ValueError, get_molec_ads_ctrs)
192

    
193
    def test_molec_neigh_ctrs(self):
194
        self.assertRaises(ValueError, get_molec_neigh_ctrs)
195

    
196
    def test_surf_norm_vect(self):
197
        self.assertRaises(ValueError, get_surf_norm_vect)
198

    
199
    def test_try_disso(self):
200
        self.assertRaises(ValueError, get_try_disso)
201

    
202
    def test_pts_per_angle(self):
203
        self.assertRaises(ValueError, get_pts_per_angle)
204

    
205
    def test_coll_thrsld(self):
206
        self.assertRaises(ValueError, get_coll_thrsld)
207

    
208
    def test_coll_bottom(self):
209
        self.assertRaises(ValueError, get_coll_bottom)
210

    
211
    def test_refine_inp_file(self):
212
        self.assertRaises(FileNotFoundError, get_refine_inp_file)
213

    
214
    def test_energy_cutoff(self):
215
        self.assertRaises(ValueError, get_energy_cutoff)
216

    
217

    
218
if __name__ == '__main__':
219
    unittest.main()