From b285f37ecadb0fdd6b09f3f490b238f82a1e3394 Mon Sep 17 00:00:00 2001 From: "Oleg E. Peil" Date: Fri, 13 Nov 2015 14:38:20 +0100 Subject: [PATCH] Added some new tests New tests for the recently implemented parsers (for DOSMESH, EWINDOW, and TRANSFILE) have been added. --- python/vasp/test/_inpconf/test_inpconf.py | 3 +- .../test/_inpconf/test_special_parsers.py | 143 ++++++++++++++++++ python/vasp/test/_inpconf/tmatrix_file.dat | 11 ++ 3 files changed, 155 insertions(+), 2 deletions(-) create mode 100644 python/vasp/test/_inpconf/tmatrix_file.dat diff --git a/python/vasp/test/_inpconf/test_inpconf.py b/python/vasp/test/_inpconf/test_inpconf.py index 323cbd93..9700a765 100644 --- a/python/vasp/test/_inpconf/test_inpconf.py +++ b/python/vasp/test/_inpconf/test_inpconf.py @@ -4,7 +4,6 @@ Test suite for module `inpconf.py`. import unittest if __name__ == '__main__': -# suite = unittest.TestLoader().discover('./') - suite = unittest.TestLoader().discover('./', pattern='test_shells.py') + suite = unittest.TestLoader().discover('./') unittest.TextTestRunner(verbosity=2, buffer=True).run(suite) diff --git a/python/vasp/test/_inpconf/test_special_parsers.py b/python/vasp/test/_inpconf/test_special_parsers.py index 61fbbcb6..efd83aab 100644 --- a/python/vasp/test/_inpconf/test_special_parsers.py +++ b/python/vasp/test/_inpconf/test_special_parsers.py @@ -151,3 +151,146 @@ class TestParseStringTmatrix(arraytest.ArrayTestCase): self.assertEqual(res, expected) +################################################################################ +# +# TestParseEnergyWindow +# +################################################################################ +class TestParseEnergyWindow(arraytest.ArrayTestCase): + """ + Function: + + def parse_energy_window(self, par_str) + + Scenarios: + + - **if** par_str == '-1.5 3.0' **return** (-1.5, 3.0) + - **if** par_str == '3.0 -1.5' **raise** AssertionError + - **if** par_str == '1.0' **raise** AssertionError + - **if** par_str == 'aaa' **raise** ValueError + - **if** par_str == '1.5 3.0 2.0' **raise** AssertionError + """ + def setUp(self): + """ + """ +# Dummy ConfigParameters object + self.cpars = ConfigParameters(_rpath + 'test1.cfg') + +# Scenario 1 + def test_correct_range(self): + expected = (-1.5, 3.0) + res = self.cpars.parse_energy_window('-1.5 3.0') + self.assertEqual(res, expected) + +# Scenario 2 + def test_wrong_range(self): + err_mess = "The first float in EWINDOW" + with self.assertRaisesRegexp(AssertionError, err_mess): + self.cpars.parse_energy_window('3.0 -1.5') + +# Scenario 3 + def test_one_float(self): + err_mess = "EWINDOW must be specified" + with self.assertRaisesRegexp(AssertionError, err_mess): + self.cpars.parse_energy_window('1.0') + +# Scenario 4 + def test_wrong_string(self): + with self.assertRaises(ValueError): + self.cpars.parse_energy_window('aaa') + +# Scenario 5 + def test_three_floats(self): + err_mess = "EWINDOW must be specified" + with self.assertRaisesRegexp(AssertionError, err_mess): + self.cpars.parse_energy_window('1.5 3.0 2.0') + + +################################################################################ +# +# TestParseFileTmatrix +# +################################################################################ +class TestParseFileTmatrix(arraytest.ArrayTestCase): + """ + Function: + + def parse_file_tmatrix(self, par_str) + + Scenarios: + + - **if** file is correct **return** array() + - **if** file is incorrect **raise** (-1.5, 3.0) + """ + def setUp(self): + """ + """ +# Dummy ConfigParameters object + self.cpars = ConfigParameters(_rpath + 'test1.cfg') + +# Scenario 1 + def test_correct_file(self): + expected = np.array( +[[ -2.52000000e-04, -0.00000000e+00, -4.27145000e-02, 3.00000000e-07, -9.99087300e-01], + [ -4.13570000e-03, -2.00000000e-07, -9.99078700e-01, -1.00000000e-07, 4.27152000e-02], + [ -3.80200000e-04, 0.00000000e+00, 6.04452000e-02, -1.00000000e-07, -9.98171400e-01], + [ -5.14500000e-04, -0.00000000e+00, -9.98171400e-01, 0.00000000e+00, -6.04450000e-02]]) + + res = self.cpars.parse_file_tmatrix('tmatrix_file.dat') + self.assertEqual(res, expected) + +# Scenario 2 + def test_wrong_file(self): + with self.assertRaises(ValueError): + self.cpars.parse_file_tmatrix('test1.cfg') + +################################################################################ +# +# TestParseStringDosmesh +# +################################################################################ +class TestParseStringDosmesh(arraytest.ArrayTestCase): + """ + Function: + + def parse_string_dosmesh(self, par_str) + + Scenarios: + + - **if** par_str == '-8.0 4.0 101' **return** dictionary + - **if** par_str == '101' **return** dictionary + - **if** par_str == '-8.0 101' **raise** ValueError + - **if** par_str == '8.0' **raise** ValueError + """ + def setUp(self): + """ + """ +# Dummy ConfigParameters object + self.cpars = ConfigParameters(_rpath + 'test1.cfg') + +# Scenario 1 + def test_range_npoints(self): + expected = {'n_points': 101, 'emin': -8.0, 'emax': 4.0} + res = self.cpars.parse_string_dosmesh('-8.0 4.0 101') + self.assertEqual(res, expected) + +# Scenario 2 + def test_only_npoints(self): + expected_npoints = 101 + res = self.cpars.parse_string_dosmesh('101') + self.assertTrue(np.isnan(res['emin'])) + self.assertTrue(np.isnan(res['emax'])) + self.assertEqual(res['n_points'], expected_npoints) + +# Scenario 3 + def test_two_numbers(self): + err_mess = "DOSMESH must be either" + with self.assertRaisesRegexp(ValueError, err_mess): + self.cpars.parse_string_dosmesh('-8.0 101') + +# Scenario 4 + def test_wrong_input(self): + with self.assertRaises(ValueError): + self.cpars.parse_string_dosmesh('8.0') + + diff --git a/python/vasp/test/_inpconf/tmatrix_file.dat b/python/vasp/test/_inpconf/tmatrix_file.dat new file mode 100644 index 00000000..60f166ad --- /dev/null +++ b/python/vasp/test/_inpconf/tmatrix_file.dat @@ -0,0 +1,11 @@ +# Site 1 +# Eigenvalues: [ 0.64199229 0.91585983 0.95366093 0.97747915 0.98193939] +# Eigenvectors: + -0.0002520 -0.0000000 -0.0427145 0.0000003 -0.9990873 + -0.0041357 -0.0000002 -0.9990787 -0.0000001 0.0427152 + +# Site 2 +# Eigenvalues: [ 0.65643845 0.67582624 0.991015 0.99101927 0.9925216 ] +# Eigenvectors: + -0.0003802 0.0000000 0.0604452 -0.0000001 -0.9981714 + -0.0005145 -0.0000000 -0.9981714 0.0000000 -0.0604450