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

dockonsurf / tests / test_dos_input.py @ b4b2f307

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

1
import sys
2
import unittest
3
import numpy as np
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': np.array([1.0, 0.0, 0.0]),
58
                    'try_disso': True,
59
                    'sample_points_per_angle': 4,
60
                    'collision_threshold': 0.9,
61
                    'min_coll_height': 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
        self.assertEqual(get_molec_file(), 'acetic.xyz')
97

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

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

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

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

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

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

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

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

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

    
125
    def test_try_disso(self):
126
        self.assertEqual(get_disso_atoms(), True)
127

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

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

    
134
    def test_coll_bottom(self):
135
        self.assertEqual(get_min_coll_height(), 5.2)
136

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

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

    
143

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

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

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

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

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

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

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

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

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

    
171
    def test_cluster_magns(self):
172
        self.assertRaises(ValueError, get_select_magns)
173

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

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

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

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

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

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

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

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

    
198
    def test_try_disso(self):
199
        self.assertRaises(ValueError, get_disso_atoms)
200

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

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

    
207
    def test_coll_bottom(self):
208
        self.assertRaises(ValueError, get_min_coll_height)
209

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

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

    
216

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