3
0
mirror of https://github.com/triqs/dft_tools synced 2024-06-02 03:15:33 +02:00
dft_tools/test/plovasp/inpconf/test_shells.py
Oleg E. Peil f86038a7fd Fixed tests to make them runnable with build pytriqs
All imports inside the test cases refer now to paths relative
to TRIQS python library path. For example,

`import vaspio`

is replaced with

`import applications.dft.converters.plovasp.vasio`

In this way all tests can be executed wtih `build_pytriqs` provided
that the package is installed (the same practice as with other
'dft_tools' tests).

Also, the underscore can now be removed from subdirectory names
because there is no more conflict with module names.
2016-03-10 12:24:05 +01:00

81 lines
2.6 KiB
Python

r"""
Tests of 'parse_shells()' defined in ConfigParameters class
"""
import os
import rpath
_rpath = os.path.dirname(rpath.__file__) + '/'
import arraytest
import numpy as np
from applications.dft.converters.plovasp.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):
conf_pars = ConfigParameters(_rpath + 'parse_shells_1.cfg')
err_mess = "No projected shells"
with self.assertRaisesRegexp(AssertionError, err_mess):
conf_pars.parse_shells()
# Scenario 2
def test_bad_indices(self):
conf_pars = ConfigParameters(_rpath + 'parse_shells_2.cfg')
err_mess = "Failed to extract shell indices"
with self.assertRaisesRegexp(ValueError, err_mess):
conf_pars.parse_shells()
# Scenario 3
def test_sh_required(self):
conf_pars = ConfigParameters(_rpath + 'parse_shells_3.cfg')
err_mess = "Required parameter"
with self.assertRaisesRegexp(Exception, err_mess):
conf_pars.parse_shells()
# Scenario 4
def test_two_shells(self):
conf_pars = ConfigParameters(_rpath + 'parse_shells_4.cfg')
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)