class TestCelulaJogoDaVida(unittest.TestCase):
    def setUp(self):
        self.celula = CelulaJogoDaVida(viva=False,
                                       simbolo_viva='[X]',
                                       simbolo_morta='[ ]')

    def test_init_viva(self):
        self.assertFalse(self.celula.viva)

    def test_init_simbolo_viva(self):
        self.assertEqual(self.celula.simbolo_viva, '[X]')

    def test_init_simbolo_morta(self):
        self.assertEqual(self.celula.simbolo_morta, '[ ]')

    def test_viva_somente_leitura(self):
        with self.assertRaises(AttributeError):
            self.celula.viva = False

    def test_simbolo_viva_somente_leitura(self):
        with self.assertRaises(AttributeError):
            self.celula.simbolo_viva = '[$]'

    def test_simbolo_morta_somente_leitura(self):
        with self.assertRaises(AttributeError):
            self.celula.simbolo_morta = '[#]'

    def test_muda_estado(self):
        self.celula.muda_estado()
        self.assertTrue(self.celula.viva)
        self.celula.muda_estado()
        self.assertFalse(self.celula.viva)

    def test_nasce(self):
        self.celula.nasce()
        self.assertTrue(self.celula.viva)

    def test_morre(self):
        self.celula.morre()
        self.assertFalse(self.celula.viva)
class TestCelulaJogoDaVida(unittest.TestCase):
    def setUp(self):
        self.celula = CelulaJogoDaVida(viva=False,
                                       simbolo_viva='[X]',
                                       simbolo_morta='[ ]')

    def test_init_viva(self):
        self.assertFalse(self.celula.viva)

    def test_init_simbolo_viva(self):
        self.assertEqual(self.celula.simbolo_viva, '[X]')

    def test_init_simbolo_morta(self):
        self.assertEqual(self.celula.simbolo_morta, '[ ]')

    def test_viva_somente_leitura(self):
        with self.assertRaises(AttributeError):
            self.celula.viva = False

    def test_simbolo_viva_somente_leitura(self):
        with self.assertRaises(AttributeError):
            self.celula.simbolo_viva = '[$]'

    def test_simbolo_morta_somente_leitura(self):
        with self.assertRaises(AttributeError):
            self.celula.simbolo_morta = '[#]'

    def test_muda_estado(self):
        self.celula.muda_estado()
        self.assertTrue(self.celula.viva)
        self.celula.muda_estado()
        self.assertFalse(self.celula.viva)

    def test_nasce(self):
        self.celula.nasce()
        self.assertTrue(self.celula.viva)

    def test_morre(self):
        self.celula.morre()
        self.assertFalse(self.celula.viva)