class TestAtom(unittest.TestCase):
    """
  Test atom class.
  """

    def setUp(self):
        """
    Instantiates a pair of atom objects for tests.
    """
        self.empty_atom = Atom()
        self.trial_atom = Atom()
        self.trial_atom.atomname = "C"
        self.trial_atom.coordinates = Point(coords=np.array([1, 2, 3]))
        self.trial_atom.charge = 0.0
        self.trial_atom.element = "C"
        self.trial_atom.residue = "CYS"
        # TODO(bramsundar): Fill in a non-junk value for chain.
        self.trial_atom.chain = "FF"
        self.trial_atom.indices_of_atoms_connecting = [4, 5, 6]

    def test_copy_of(self):
        """
    TestAtom: Verify that copy_of preserves atom information.
    """
        copy_atom = self.trial_atom.copy_of()
        assert copy_atom.atomname == "C"
        assert np.array_equal(copy_atom.coordinates.as_array(), np.array([1, 2, 3]))
        assert copy_atom.charge == 0
        assert copy_atom.element == "C"
        assert copy_atom.residue == "CYS"
        assert copy_atom.chain == "FF"
        assert copy_atom.indices_of_atoms_connecting == [4, 5, 6]

    def test_create_pdb_line(self):
        """
    TestAtom: Verify that PDB Line is in correct format.
    """
        # TODO(bramsundar): Add a more nontrivial test after looking into
        # PDB standard.
        line = self.trial_atom.create_pdb_line(1)
        assert type(line) == str

    def test_number_of_neighors(self):
        """
    TestAtom: Verify that the number of neighbors is computed correctly.
    """
        assert self.empty_atom.number_of_neighbors() == 0
        assert self.trial_atom.number_of_neighbors() == 3
class TestAtom(unittest.TestCase):
    """
  Test atom class.
  """
    def setUp(self):
        """
    Instantiates a pair of atom objects for tests.
    """
        self.empty_atom = Atom()
        self.trial_atom = Atom()
        self.trial_atom.atomname = "C"
        self.trial_atom.coordinates = Point(coords=np.array([1, 2, 3]))
        self.trial_atom.charge = 0.
        self.trial_atom.element = "C"
        self.trial_atom.residue = "CYS"
        # TODO(bramsundar): Fill in a non-junk value for chain.
        self.trial_atom.chain = "FF"
        self.trial_atom.indices_of_atoms_connecting = [4, 5, 6]

    def test_copy_of(self):
        """
    TestAtom: Verify that copy_of preserves atom information.
    """
        copy_atom = self.trial_atom.copy_of()
        assert copy_atom.atomname == "C"
        assert np.array_equal(copy_atom.coordinates.as_array(),
                              np.array([1, 2, 3]))
        assert copy_atom.charge == 0
        assert copy_atom.element == "C"
        assert copy_atom.residue == "CYS"
        assert copy_atom.chain == "FF"
        assert copy_atom.indices_of_atoms_connecting == [4, 5, 6]

    def test_create_pdb_line(self):
        """
    TestAtom: Verify that PDB Line is in correct format.
    """
        # TODO(bramsundar): Add a more nontrivial test after looking into
        # PDB standard.
        line = self.trial_atom.create_pdb_line(1)
        assert type(line) == str

    def test_number_of_neighors(self):
        """
    TestAtom: Verify that the number of neighbors is computed correctly.
    """
        assert self.empty_atom.number_of_neighbors() == 0
        assert self.trial_atom.number_of_neighbors() == 3