def test_stoichiometry(self): """Testing stoichoimetry generation.""" data = ccData() def check(atomnos, formula, charge=0): data.natom = len(atomnos) data.atomnos = np.array(atomnos) data.atomcoords = np.zeros((data.natom, 3)) data.charge = charge self.assertEqual(Nuclear(data).stoichiometry(), formula) # Basics and permutations. check([], "") check([6, 1, 6, 1, 1, 1], "C2H4") check([1, 1, 1, 6, 1, 6], "C2H4") # Charges. check([8], "O", charge=0) check([8], "O(+1)", charge=1) check([8], "O(-1)", charge=-1) check([8], "O(+2)", charge=2) check([8], "O(+9)", charge=9) # Element counts. check([6, 1], "CH") check([6] * 60, "C60") # Test the Hill system. check([8, 1, 1], "H2O") check([6, 8, 8, 1, 1], "CH2O2") check([16, 16, 8, 8], "O2S2")