2015-08-10 11:32:08 +02:00
|
|
|
r"""
|
|
|
|
Tests of 'parse_shells()' defined in ConfigParameters class
|
|
|
|
"""
|
2015-10-16 11:16:48 +02:00
|
|
|
import os
|
|
|
|
import rpath
|
|
|
|
_rpath = os.path.dirname(rpath.__file__) + '/'
|
|
|
|
|
2015-08-10 11:32:08 +02:00
|
|
|
import arraytest
|
|
|
|
import numpy as np
|
|
|
|
from inpconf import ConfigParameters
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
#
|
|
|
|
# TestParseShells
|
|
|
|
#
|
|
|
|
################################################################################
|
|
|
|
class TestParseShells(arraytest.ArrayTestCase):
|
|
|
|
"""
|
|
|
|
Function:
|
|
|
|
|
|
|
|
def parse_shells(self)
|
|
|
|
|
|
|
|
Scenarios:
|
|
|
|
|
|
|
|
- **if** config-file does not contain a valid [Shell] section
|
|
|
|
**raise** AssertionError
|
|
|
|
- **if** a [Shell] section does not contain a valid index
|
|
|
|
**raise** ValueError
|
|
|
|
- **if** a [Shell] section does not contain all required parameters
|
|
|
|
**raise** Exception
|
|
|
|
- **if** two correct [Shell] sections are defined
|
|
|
|
**return** a dictionary of shell parameters
|
|
|
|
"""
|
|
|
|
# Scenario 1
|
|
|
|
def test_no_shell(self):
|
2015-10-16 11:16:48 +02:00
|
|
|
conf_pars = ConfigParameters(_rpath + 'parse_shells_1.cfg')
|
2015-08-10 11:32:08 +02:00
|
|
|
err_mess = "No projected shells"
|
|
|
|
with self.assertRaisesRegexp(AssertionError, err_mess):
|
|
|
|
conf_pars.parse_shells()
|
|
|
|
|
|
|
|
# Scenario 2
|
|
|
|
def test_bad_indices(self):
|
2015-10-16 11:16:48 +02:00
|
|
|
conf_pars = ConfigParameters(_rpath + 'parse_shells_2.cfg')
|
2015-08-10 11:32:08 +02:00
|
|
|
err_mess = "Failed to extract shell indices"
|
|
|
|
with self.assertRaisesRegexp(ValueError, err_mess):
|
|
|
|
conf_pars.parse_shells()
|
|
|
|
|
|
|
|
# Scenario 3
|
|
|
|
def test_sh_required(self):
|
2015-10-16 11:16:48 +02:00
|
|
|
conf_pars = ConfigParameters(_rpath + 'parse_shells_3.cfg')
|
2015-08-10 11:32:08 +02:00
|
|
|
err_mess = "Required parameter"
|
|
|
|
with self.assertRaisesRegexp(Exception, err_mess):
|
|
|
|
conf_pars.parse_shells()
|
|
|
|
|
|
|
|
# Scenario 4
|
|
|
|
def test_two_shells(self):
|
2015-10-16 11:16:48 +02:00
|
|
|
conf_pars = ConfigParameters(_rpath + 'parse_shells_4.cfg')
|
2015-08-10 11:32:08 +02:00
|
|
|
conf_pars.parse_shells()
|
|
|
|
res = conf_pars.shells
|
|
|
|
expected = [{'user_index': 1, 'lshell': 2, 'ion_list': np.array([4, 5, 6, 7])},
|
|
|
|
{'user_index': 2, 'lshell': 1, 'ion_list': np.array([0, 1, 2, 3]),
|
|
|
|
'tmatrix': np.array([[ 0., 1., 0.], [ 1., 0., 0.], [ 0., 0., 1.]])}]
|
|
|
|
# ...lousy way to test equality of two dictionaries containing numpy arrays
|
|
|
|
self.assertEqual(len(res), len(expected))
|
|
|
|
|
|
|
|
arr = res[0].pop('ion_list')
|
|
|
|
arr_exp = expected[0].pop('ion_list')
|
|
|
|
self.assertEqual(arr, arr_exp)
|
|
|
|
|
|
|
|
arr = res[1].pop('ion_list')
|
|
|
|
arr_exp = expected[1].pop('ion_list')
|
|
|
|
self.assertEqual(arr, arr_exp)
|
|
|
|
|
|
|
|
arr = res[1].pop('tmatrix')
|
|
|
|
arr_exp = expected[1].pop('tmatrix')
|
|
|
|
self.assertEqual(arr, arr_exp)
|
|
|
|
|
|
|
|
self.assertListEqual(res, expected)
|
|
|
|
|
|
|
|
|