diff --git a/pycgtool/bondset.py b/pycgtool/bondset.py index e4faef5912b5dc949d8cfddf3519b3982bcbd90e..972e053f327307d4a51dedf0ad00a5e412926641 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 0000000000000000000000000000000000000000..3b7dce9c68a0fc537036e3818e68ab3375a94611 --- /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 0000000000000000000000000000000000000000..791e3496cf0150db9b52a7ce776882015ca5e7cd --- /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 c9a1e18d41396a798e80b0ace05853461e16954a..7394917c000f548990174ab3c0bfefe40b110a6c 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)