def test_OKeeffe_Fe(self):
        """Test Routine O'Keeffe CN for BCC Fe"""

        cns = OKeeffe.get_avg_cn(self.fe_structure)
        for cation in cns:
            self.assertEqual(cation, "Fe", "Only atoms in BCC Fe should be Fe")
            self.assertIsInstance(cns[cation], float, "Averaged cation should be a float")
            self.assertGreaterEqual(cns[cation], 8, "Fe coordination should be 8 (OKeeffe tends to overestimate)")
    def test_OKeeffe_CaF2(self):
        """Test Routine O'Keeffe CN for CaF2"""

        cns = OKeeffe.get_avg_cn(self.caf2_structure)
        for cation in cns:
            self.assertTrue(cation == "Ca" or cation == "F", "Only ions in CaF2 should be Ca and F")
            self.assertIsInstance(cns[cation], float, "Averaged cation should be a float")
            if cation == "Ca":
                self.assertGreaterEqual(cns[cation], 8, "Ca coordination should be 8 (OKeeffe tends to overestimate)")
            if cation == "F":
                self.assertGreaterEqual(cns[cation], 4, "F coordination should be 4 (OKeeffe tends to overestimate)")
    def test_OKeeffe_LiCoO2(self):
        """Test Routine O'Keeffe CN for LiCoO2"""

        cns = OKeeffe.get_avg_cn(self.licoo2_structure)
        for cation in cns:
            self.assertTrue(cation == "Li" or cation == "Co" or cation == "O",
                            "Only ions in LiCoO2 should be Li, Co, and O")
            self.assertIsInstance(cns[cation], float, "Averaged cation should be a float")
            if cation == "Li":
                self.assertGreaterEqual(cns[cation], 6, "Li coordination should be 6 (OKeeffe tends to overestimate)")
            if cation == "Co":
                self.assertGreaterEqual(cns[cation], 6, "Co coordination should be 6 (OKeeffe tends to overestimate)")
            if cation == "O":
                self.assertGreaterEqual(cns[cation], 6, "O coordination should be 6 (OKeeffe tends to overestimate)")