Пример #1
0
class TestCell(unittest.TestCase):

    def setUp(self):
        symbols = ['Si', 'O', 'O', 'Si', 'O', 'O']
        lattice = [[4.65, 0, 0],
                   [0, 4.75, 0],
                   [0, 0, 3.25]]
        points=np.transpose([[0.0, 0.0, 0.0],
                             [0.3, 0.3, 0.0],
                             [0.7, 0.7, 0.0],
                             [0.5, 0.5, 0.5],
                             [0.2, 0.8, 0.5],
                             [0.8, 0.2, 0.5]])
        self._cell = Cell(lattice=lattice,
                          points=points,
                          symbols=symbols)

    def tearDown(self):
        pass

    def _test_str(self):
        print(self._cell)

    def _test_sort_cell_by_symbols(self):
        print(sort_cell_by_symbols(self._cell))

    def test_lattice(self):
        lattice = self._cell.lattice
        self._cell.lattice = lattice
        np.testing.assert_allclose(lattice, self._cell.lattice)
        self._cell.set_lattice(lattice)
        self._cell.get_lattice()
        np.testing.assert_allclose(lattice, self._cell.get_lattice())

    def test_points(self):
        points = self._cell.points
        self._cell.points = points
        np.testing.assert_allclose(points, self._cell.points)
        self._cell.set_points(points)
        self._cell.get_points()
        np.testing.assert_allclose(points, self._cell.get_points())

    def test_numbers(self):
        numbers = self._cell.numbers
        self._cell.numbers = numbers
        np.testing.assert_array_equal(numbers, self._cell.numbers)
        self._cell.set_numbers(numbers)
        self._cell.get_numbers()
        np.testing.assert_array_equal(numbers, self._cell.get_numbers())

    def test_symbols(self):
        symbols = self._cell.symbols
        self._cell.symbols = symbols
        for s, ss in zip(symbols, self._cell.symbols):
            self.assertEqual(s, ss)
        self._cell.set_symbols(symbols)
        self._cell.get_symbols()
        for s, ss in zip(symbols, self._cell.get_symbols()):
            self.assertEqual(s, ss)

    def test_masses(self):
        masses = self._cell.masses
        self._cell.masses = masses
        np.testing.assert_allclose(masses, self._cell.masses)
        self._cell.set_masses(masses)
        self._cell.get_masses()
        np.testing.assert_allclose(masses, self._cell.get_masses())

    def test_magnetic_moments(self):
        magnetic_moments = self._cell.magnetic_moments
        self._cell.magnetic_moments = magnetic_moments
        if magnetic_moments is None:
            self.assertEqual(magnetic_moments, self._cell.magnetic_moments)
        else:
            np.testing.assert_allclose(magnetic_moments, self._cell.magnetic_moments)
        self._cell.get_magnetic_moments()
        self._cell.set_magnetic_moments(magnetic_moments)

    def test_volume(self):
        volume = self._cell.volume
        self._cell.get_volume()
        self.assertTrue(abs(volume - self._cell.get_volume()) < 1e-8)