mirror of
https://github.com/triqs/dft_tools
synced 2024-11-09 07:33:47 +01:00
9bbd71afb9
The problem was that when one shell was specified without an explicit group the created automatic group was lacking the default values for parameters 'normalize' and 'normion'. The current design, however, assumes that they must always be set.
108 lines
3.8 KiB
Python
108 lines
3.8 KiB
Python
r"""
|
|
Tests of 'parse_input()' defined in ConfigParameters class
|
|
"""
|
|
import arraytest
|
|
import numpy as np
|
|
from inpconf import ConfigParameters
|
|
|
|
################################################################################
|
|
#
|
|
# TestParseInput
|
|
#
|
|
################################################################################
|
|
class TestParseInput(arraytest.ArrayTestCase):
|
|
"""
|
|
Function:
|
|
|
|
def parse_input(self)
|
|
|
|
Scenarios:
|
|
|
|
- **if** no [Group] section exists and more than one [Shell] section
|
|
is given **raise** AssertionError
|
|
- **if** no [Group] section exists but the single [Shell] section
|
|
does not contain required group information **raise** KeyError
|
|
- **if** a shell referenced in a group does not exist
|
|
**raise** Exception
|
|
- **if** not all defined shells are referenced in the groups
|
|
**raise** Exception
|
|
- **if** all sections are parsed error-free check that the output
|
|
is correct
|
|
- correct example with a single shell and no explicit groups
|
|
"""
|
|
# Scenario 1
|
|
def test_no_group(self):
|
|
conf_pars = ConfigParameters('input_test_1.cfg')
|
|
err_mess = "At least one group"
|
|
with self.assertRaisesRegexp(AssertionError, err_mess):
|
|
conf_pars.parse_input()
|
|
|
|
# Scenario 2
|
|
def test_gr_required(self):
|
|
conf_pars = ConfigParameters('input_test_2.cfg')
|
|
err_mess = "One \[Shell\] section is"
|
|
with self.assertRaisesRegexp(KeyError, err_mess):
|
|
conf_pars.parse_input()
|
|
|
|
# Scenario 3
|
|
def test_no_shell(self):
|
|
conf_pars = ConfigParameters('input_test_3.cfg')
|
|
err_mess = "Shell 3 referenced in"
|
|
with self.assertRaisesRegexp(Exception, err_mess):
|
|
conf_pars.parse_input()
|
|
|
|
# Scenario 4
|
|
def test_shell_outside_groups(self):
|
|
conf_pars = ConfigParameters('input_test_4.cfg')
|
|
err_mess = "Some shells are not inside"
|
|
with self.assertRaisesRegexp(AssertionError, err_mess):
|
|
conf_pars.parse_input()
|
|
|
|
# Scenario 5
|
|
def test_example(self):
|
|
conf_pars = ConfigParameters('example.cfg')
|
|
conf_pars.parse_input()
|
|
# with open('parse_input.output.test', 'wt') as f:
|
|
# f.write("Shells:\n")
|
|
# f.write(conf_pars.shells.__repr__() + '\n\n')
|
|
# f.write("Groups:\n")
|
|
# f.write(conf_pars.groups.__repr__() + '\n')
|
|
res = "Shells:\n"
|
|
res += conf_pars.shells.__repr__() + '\n\n'
|
|
res += "Groups:\n"
|
|
res += conf_pars.groups.__repr__()
|
|
|
|
expected = r"""Shells:
|
|
[{'ion_list': array([4, 5, 6, 7]), 'user_index': 1, 'lshell': 2}, {'tmatrix': array([[ 0., 1., 0.],
|
|
[ 1., 0., 0.],
|
|
[ 0., 0., 1.]]), 'ion_list': array([0, 1, 2, 3]), 'user_index': 2, 'lshell': 1}, {'ion_list': array([0, 1, 2, 3]), 'user_index': 3, 'lshell': 3}]
|
|
|
|
Groups:
|
|
[{'normalize': True, 'index': 1, 'shells': [0, 1], 'normion': False, 'emax': 3.0, 'emin': -7.6}, {'normalize': True, 'index': 2, 'shells': [2], 'normion': False, 'emax': 2.0, 'emin': -1.6}]"""
|
|
|
|
self.assertEqual(res, expected)
|
|
|
|
# Scenario 6
|
|
def test_example_no_groups(self):
|
|
conf_pars = ConfigParameters('example_nogroup.cfg')
|
|
conf_pars.parse_input()
|
|
# with open('parse_input.output.test', 'wt') as f:
|
|
# f.write("Shells:\n")
|
|
# f.write(conf_pars.shells.__repr__() + '\n\n')
|
|
# f.write("Groups:\n")
|
|
# f.write(conf_pars.groups.__repr__() + '\n')
|
|
res = "Shells:\n"
|
|
res += conf_pars.shells.__repr__() + '\n\n'
|
|
res += "Groups:\n"
|
|
res += conf_pars.groups.__repr__()
|
|
|
|
expected = r"""Shells:
|
|
[{'ion_list': array([4, 5, 6, 7]), 'user_index': 1, 'lshell': 2}]
|
|
|
|
Groups:
|
|
[{'normalize': True, 'index': '1', 'emin': -7.6, 'emax': 3.0, 'normion': False, 'shells': [0]}]"""
|
|
|
|
self.assertEqual(res, expected)
|
|
|
|
|