From 52f235548a879251aad638cd727fc8892d81baf0 Mon Sep 17 00:00:00 2001 From: James Graham <J.A.Graham@soton.ac.uk> Date: Thu, 6 Apr 2017 15:31:20 +0100 Subject: [PATCH] Add proper error message if atom is defined multiple times in a single bond Add test file required for previous commit --- pycgtool/bondset.py | 4 ++++ test/data/duplicate_atoms.bnd | 3 +++ test/data/nosections.cfg | 3 +++ test/test_bondset.py | 4 ++++ 4 files changed, 14 insertions(+) create mode 100644 test/data/duplicate_atoms.bnd create mode 100644 test/data/nosections.cfg diff --git a/pycgtool/bondset.py b/pycgtool/bondset.py index e4faef5..972e053 100644 --- a/pycgtool/bondset.py +++ b/pycgtool/bondset.py @@ -147,6 +147,10 @@ class BondSet: func_form = functional_forms[atomlist[-1]] except AttributeError: func_form = self._functional_forms[len(atomlist)] + + if {x for x in atomlist if atomlist.count(x) > 1}: + raise ValueError("Defined bond '{0}' contains duplicate atoms".format(atomlist)) + mol_bonds.append(Bond(atoms=atomlist, func_form=func_form)) if len(atomlist) > 2: angles_defined = True diff --git a/test/data/duplicate_atoms.bnd b/test/data/duplicate_atoms.bnd new file mode 100644 index 0000000..3b7dce9 --- /dev/null +++ b/test/data/duplicate_atoms.bnd @@ -0,0 +1,3 @@ +[test] +A1 A2 +A2 A2 diff --git a/test/data/nosections.cfg b/test/data/nosections.cfg new file mode 100644 index 0000000..791e349 --- /dev/null +++ b/test/data/nosections.cfg @@ -0,0 +1,3 @@ +hello +I have no sections +This is wrong diff --git a/test/test_bondset.py b/test/test_bondset.py index c9a1e18..7394917 100644 --- a/test/test_bondset.py +++ b/test/test_bondset.py @@ -195,3 +195,7 @@ class BondSetTest(unittest.TestCase): logging.disable(logging.NOTSET) self.assertTrue(cmp_whitespace_float("sugar_out.itp", "test/data/sugar_out.itp", float_rel_error=0.001)) + + def test_duplicate_atoms_in_bond(self): + with self.assertRaises(ValueError): + bondset = BondSet("test/data/duplicate_atoms.bnd", DummyOptions) -- GitLab