def setUp(self): # comp = Composition("Mn2O3") self.solentry = ComputedEntry("Mn2O3", 49) ion = Ion.from_formula("MnO4-") self.ionentry = IonEntry(ion, 25) self.PxIon = PourbaixEntry(self.ionentry) self.PxSol = PourbaixEntry(self.solentry) self.PxIon.concentration = 1e-4
class PourbaixEntryTest(unittest.TestCase): """ Test all functions using a fictitious entry """ def setUp(self): # comp = Composition("Mn2O3") self.solentry = ComputedEntry("Mn2O3", 49) ion = Ion.from_formula("MnO4-") self.ionentry = IonEntry(ion, 25) self.PxIon = PourbaixEntry(self.ionentry) self.PxSol = PourbaixEntry(self.solentry) self.PxIon.concentration = 1e-4 def test_pourbaix_entry(self): self.assertEqual(self.PxIon.entry.energy, 25, "Wrong Energy!") self.assertEqual(self.PxIon.entry.name, "MnO4[-]", "Wrong Entry!") self.assertEqual(self.PxSol.entry.energy, 49, "Wrong Energy!") self.assertEqual(self.PxSol.entry.name, "Mn2O3", "Wrong Entry!") # self.assertEqual(self.PxIon.energy, 25, "Wrong Energy!") # self.assertEqual(self.PxSol.energy, 49, "Wrong Energy!") self.assertEqual(self.PxIon.concentration, 1e-4, "Wrong concentration!") def test_calc_coeff_terms(self): self.assertEqual(self.PxIon.npH, -8, "Wrong npH!") self.assertEqual(self.PxIon.nPhi, -7, "Wrong nPhi!") self.assertEqual(self.PxIon.nH2O, 4, "Wrong nH2O!") self.assertEqual(self.PxSol.npH, -6, "Wrong npH!") self.assertEqual(self.PxSol.nPhi, -6, "Wrong nPhi!") self.assertEqual(self.PxSol.nH2O, 3, "Wrong nH2O!") def test_to_from_dict(self): d = self.PxIon.as_dict() ion_entry = self.PxIon.from_dict(d) self.assertEqual(ion_entry.entry.name, "MnO4[-]", "Wrong Entry!") d = self.PxSol.as_dict() sol_entry = self.PxSol.from_dict(d) self.assertEqual(sol_entry.name, "Mn2O3(s)", "Wrong Entry!") self.assertEqual(sol_entry.energy, self.PxSol.energy, "as_dict and from_dict energies unequal") def test_energy_functions(self): # TODO: test these for values self.PxSol.energy_at_conditions(10, 0) self.PxSol.energy_at_conditions(np.array([1, 2, 3]), 0) self.PxSol.energy_at_conditions(10, np.array([1, 2, 3])) self.PxSol.energy_at_conditions(np.array([1, 2, 3]), np.array([1, 2, 3])) def test_multi_entry(self): # TODO: More robust multientry test m_entry = MultiEntry([self.PxSol, self.PxIon]) for attr in ['energy', 'composition', 'nPhi']: self.assertEqual(getattr(m_entry, attr), getattr(self.PxSol, attr) + getattr(self.PxIon, attr)) # As dict, from dict m_entry_dict = m_entry.as_dict() m_entry_new = MultiEntry.from_dict(m_entry_dict) self.assertEqual(m_entry_new.energy, m_entry.energy)
class PourbaixEntryTest(unittest.TestCase): _multiprocess_shared_ = True """ Test all functions using a fictitious entry """ def setUp(self): # comp = Composition("Mn2O3") self.solentry = ComputedEntry("Mn2O3", 49) ion = Ion.from_formula("MnO4-") self.ionentry = IonEntry(ion, 25) self.PxIon = PourbaixEntry(self.ionentry) self.PxSol = PourbaixEntry(self.solentry) self.PxIon.concentration = 1e-4 def test_pourbaix_entry(self): self.assertEqual(self.PxIon.entry.energy, 25, "Wrong Energy!") self.assertEqual(self.PxIon.entry.name, "MnO4[-]", "Wrong Entry!") self.assertEqual(self.PxSol.entry.energy, 49, "Wrong Energy!") self.assertEqual(self.PxSol.entry.name, "Mn2O3", "Wrong Entry!") # self.assertEqual(self.PxIon.energy, 25, "Wrong Energy!") # self.assertEqual(self.PxSol.energy, 49, "Wrong Energy!") self.assertEqual(self.PxIon.concentration, 1e-4, "Wrong concentration!") def test_calc_coeff_terms(self): self.assertEqual(self.PxIon.npH, -8, "Wrong npH!") self.assertEqual(self.PxIon.nPhi, -7, "Wrong nPhi!") self.assertEqual(self.PxIon.nH2O, 4, "Wrong nH2O!") self.assertEqual(self.PxSol.npH, -6, "Wrong npH!") self.assertEqual(self.PxSol.nPhi, -6, "Wrong nPhi!") self.assertEqual(self.PxSol.nH2O, 3, "Wrong nH2O!") def test_to_from_dict(self): d = self.PxIon.as_dict() ion_entry = self.PxIon.from_dict(d) self.assertEqual(ion_entry.entry.name, "MnO4[-]", "Wrong Entry!") d = self.PxSol.as_dict() sol_entry = self.PxSol.from_dict(d) self.assertEqual(sol_entry.name, "Mn2O3(s)", "Wrong Entry!") self.assertEqual(sol_entry.energy, self.PxSol.energy, "as_dict and from_dict energies unequal") def test_energy_functions(self): # TODO: test these for values self.PxSol.energy_at_conditions(10, 0) self.PxSol.energy_at_conditions(np.array([1, 2, 3]), 0) self.PxSol.energy_at_conditions(10, np.array([1, 2, 3])) self.PxSol.energy_at_conditions(np.array([1, 2, 3]), np.array([1, 2, 3])) def test_multi_entry(self): # TODO: More robust multientry test m_entry = MultiEntry([self.PxSol, self.PxIon]) for attr in ['energy', 'composition', 'nPhi']: self.assertEqual( getattr(m_entry, attr), getattr(self.PxSol, attr) + getattr(self.PxIon, attr)) # As dict, from dict m_entry_dict = m_entry.as_dict() m_entry_new = MultiEntry.from_dict(m_entry_dict) self.assertEqual(m_entry_new.energy, m_entry.energy) def test_get_elt_fraction(self): entry = ComputedEntry("Mn2Fe3O3", 49) pbentry = PourbaixEntry(entry) self.assertAlmostEqual(pbentry.get_element_fraction("Fe"), 0.6) self.assertAlmostEqual(pbentry.get_element_fraction("Mn"), 0.4)