def test_monomial_coefficient(self):
     """Test that setting a Monomial's coefficient behaves as expected."""
     a = Monomial(1, 2)
     a.coefficient = 2
     expected = Monomial(2, 2)
     self._assert_polynomials_are_the_same(expected, a)
     b = Monomial(1, 2)
     b.coefficient = 0
     expected = Monomial(0, 0)
     self._assert_polynomials_are_the_same(expected, b)
    def test_monomial_terms(self):
        """Test _vector for Monomials."""
        m = Monomial(6, 5)
        m.coefficient = 0
        self.assertEqual([(0, 0)], m.terms)
        m.terms = [(10, 5), (10, 5), (10, 5), (10, 5)]
        self.assertEqual(40, m.coefficient)
        self.assertEqual(5, m.degree)

        m.terms = [(10, 5), (10, 5), (0, 4), (0, 3),
                   (0, 2), (0, 1), (10, 5), (10, 5)]
        self.assertEqual(40, m.coefficient)
        self.assertEqual(5, m.degree)

        m.terms = [(25, 6), (-25, 6), (25, 4)]
        self.assertEqual(25, m.coefficient)
        self.assertEqual(4, m.degree)

        m.terms = [(25, 6), (-25, 5), (25, 5)]
        self.assertEqual(25, m.coefficient)
        self.assertEqual(6, m.degree)

        bad_terms = [(25, 6), (-25, 6), (25, 4), (25, 3)]
        self.assertRaises(TermError, m.__setattr__, "terms", bad_terms)