def test_to_from_dict(self): reactants = [Composition("Fe"), Composition("O2")] products = [Composition("Fe2O3")] rxn = Reaction(reactants, products) d = rxn.as_dict() rxn = Reaction.from_dict(d) self.assertEqual(rxn.normalized_repr, "4 Fe + 3 O2 -> 2 Fe2O3")
def test_init(self): reactants = [Composition("Fe"), Composition("O2")] products = [Composition("Fe2O3")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "2 Fe + 1.5 O2 -> Fe2O3") self.assertEqual(rxn.normalized_repr, "4 Fe + 3 O2 -> 2 Fe2O3") d = rxn.as_dict() rxn = Reaction.from_dict(d) repr, factor = rxn.normalized_repr_and_factor() self.assertEqual(repr, "4 Fe + 3 O2 -> 2 Fe2O3") self.assertAlmostEqual(factor, 2) reactants = [Composition("FePO4"), Composition('Mn')] products = [Composition("FePO4"), Composition('Xe')] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "FePO4 -> FePO4") products = [Composition("Ti2 O4"), Composition("O1")] reactants = [Composition("Ti1 O2")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "2 TiO2 -> 2 TiO2") reactants = [Composition("FePO4"), Composition("Li")] products = [Composition("LiFePO4")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "FePO4 + Li -> LiFePO4") reactants = [Composition("MgO")] products = [Composition("MgO")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "MgO -> MgO") reactants = [Composition("Mg")] products = [Composition("Mg")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "Mg -> Mg") reactants = [Composition("FePO4"), Composition("LiPO3")] products = [Composition("LiFeP2O7")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "FePO4 + LiPO3 -> LiFeP2O7") reactants = [Composition("Na"), Composition("K2O")] products = [Composition("Na2O"), Composition("K")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "2 Na + K2O -> Na2O + 2 K") # Test for an old bug which has a problem when excess product is # defined. products = [Composition("FePO4"), Composition("O")] reactants = [Composition("FePO4")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "FePO4 -> FePO4") products = list(map(Composition, ['LiCrO2', 'La8Ti8O12', 'O2'])) reactants = [Composition('LiLa3Ti3CrO12')] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "LiLa3Ti3CrO12 -> LiCrO2 + 1.5 La2Ti2O3 + 2.75 O2")
def test_init(self): reactants = [Composition("Fe"), Composition("O2")] products = [Composition("Fe2O3")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "2.000 Fe + 1.500 O2 -> 1.000 Fe2O3", "Wrong reaction obtained!") self.assertEqual(rxn.normalized_repr, "4 Fe + 3 O2 -> 2 Fe2O3", "Wrong normalized reaction obtained!") d = rxn.as_dict() rxn = Reaction.from_dict(d) self.assertEqual(rxn.normalized_repr, "4 Fe + 3 O2 -> 2 Fe2O3", "Wrong normalized reaction obtained!") reactants = [Composition("Fe"), Composition("O"), Composition("Mn"), Composition("P")] products = [Composition("FeP"), Composition("MnO")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "1.000 Fe + 0.500 O2 + 1.000 Mn + 1.000 P -> 1.000 FeP + 1.000 MnO", "Wrong reaction obtained!") self.assertEqual(rxn.normalized_repr, "2 Fe + O2 + 2 Mn + 2 P -> 2 FeP + 2 MnO", "Wrong normalized reaction obtained!") reactants = [Composition("FePO4")] products = [Composition("FePO4")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "1.000 FePO4 -> 1.000 FePO4", "Wrong reaction obtained!") products = [Composition("Ti2 O4"), Composition("O1")] reactants = [Composition("Ti1 O2")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "2.000 TiO2 -> 2.000 TiO2", "Wrong reaction obtained!") reactants = [Composition("FePO4"), Composition("Li")] products = [Composition("LiFePO4")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "1.000 FePO4 + 1.000 Li -> 1.000 LiFePO4", "Wrong reaction obtained!") reactants = [Composition("MgO")] products = [Composition("MgO")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "1.000 MgO -> 1.000 MgO", "Wrong reaction obtained!") reactants = [Composition("Mg")] products = [Composition("Mg")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "1.000 Mg -> 1.000 Mg", "Wrong reaction obtained!") reactants = [Composition("FePO4"), Composition("LiPO3")] products = [Composition("LiFeP2O7")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "1.000 FePO4 + 1.000 LiPO3 -> 1.000 LiFeP2O7", "Wrong reaction obtained!") reactants = [Composition("Na"), Composition("K2O")] products = [Composition("Na2O"), Composition("K")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "1.000 Na + 0.500 K2O -> 0.500 Na2O + 1.000 K", "Wrong reaction obtained!") # Test for an old bug which has a problem when excess product is # defined. products = [Composition("FePO4"), Composition("O")] reactants = [Composition("FePO4")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "1.000 FePO4 -> 1.000 FePO4", "Wrong reaction obtained!") products = list(map(Composition, ['La8Ti8O12', 'O2', 'LiCrO2'])) reactants = [Composition('LiLa3Ti3CrO12')] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "1.000 LiLa3Ti3CrO12 -> 1.500 La2Ti2O3 + 2.750 O2 + 1.000 LiCrO2", "Wrong reaction obtained!")
def test_init(self): reactants = [Composition("Fe"), Composition("O2")] products = [Composition("Fe2O3")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "2.000 Fe + 1.500 O2 -> 1.000 Fe2O3", "Wrong reaction obtained!") self.assertEqual(rxn.normalized_repr, "4 Fe + 3 O2 -> 2 Fe2O3", "Wrong normalized reaction obtained!") d = rxn.as_dict() rxn = Reaction.from_dict(d) self.assertEqual(rxn.normalized_repr, "4 Fe + 3 O2 -> 2 Fe2O3", "Wrong normalized reaction obtained!") reactants = [ Composition("Fe"), Composition("O"), Composition("Mn"), Composition("P") ] products = [Composition("FeP"), Composition("MnO")] rxn = Reaction(reactants, products) self.assertEqual( str(rxn), "1.000 Fe + 0.500 O2 + 1.000 Mn + 1.000 P -> 1.000 FeP + 1.000 MnO", "Wrong reaction obtained!") self.assertEqual(rxn.normalized_repr, "2 Fe + O2 + 2 Mn + 2 P -> 2 FeP + 2 MnO", "Wrong normalized reaction obtained!") reactants = [Composition("FePO4")] products = [Composition("FePO4")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "1.000 FePO4 -> 1.000 FePO4", "Wrong reaction obtained!") products = [Composition("Ti2 O4"), Composition("O1")] reactants = [Composition("Ti1 O2")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "2.000 TiO2 -> 2.000 TiO2", "Wrong reaction obtained!") reactants = [Composition("FePO4"), Composition("Li")] products = [Composition("LiFePO4")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "1.000 FePO4 + 1.000 Li -> 1.000 LiFePO4", "Wrong reaction obtained!") reactants = [Composition("MgO")] products = [Composition("MgO")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "1.000 MgO -> 1.000 MgO", "Wrong reaction obtained!") reactants = [Composition("Mg")] products = [Composition("Mg")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "1.000 Mg -> 1.000 Mg", "Wrong reaction obtained!") reactants = [Composition("FePO4"), Composition("LiPO3")] products = [Composition("LiFeP2O7")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "1.000 FePO4 + 1.000 LiPO3 -> 1.000 LiFeP2O7", "Wrong reaction obtained!") reactants = [Composition("Na"), Composition("K2O")] products = [Composition("Na2O"), Composition("K")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "1.000 Na + 0.500 K2O -> 0.500 Na2O + 1.000 K", "Wrong reaction obtained!") # Test for an old bug which has a problem when excess product is # defined. products = [Composition("FePO4"), Composition("O")] reactants = [Composition("FePO4")] rxn = Reaction(reactants, products) self.assertEqual(str(rxn), "1.000 FePO4 -> 1.000 FePO4", "Wrong reaction obtained!") products = list(map(Composition, ['La8Ti8O12', 'O2', 'LiCrO2'])) reactants = [Composition('LiLa3Ti3CrO12')] rxn = Reaction(reactants, products) self.assertEqual( str(rxn), "1.000 LiLa3Ti3CrO12 -> 1.500 La2Ti2O3 + 2.750 O2 + 1.000 LiCrO2", "Wrong reaction obtained!")