def test_shift_monomial_past_end(self):
        """Test that shifting a Monomial beyond 0 yields 0."""
        m1 = Monomial(1, 10) >> 15
        m2 = Monomial(1, 10) << -15
        m0 = Monomial.zero_instance()

        self._assert_polynomials_are_the_same(m0, m1)
        self._assert_polynomials_are_the_same(m0, m2)
    def test_zero_instance_mutable(self):
        """Test that zero instances are mutable."""
        zp = Polynomial.zero_instance()
        zm = Monomial.zero_instance()
        zc = Constant.zero_instance()
        zp.a = 1
        zm.a = 1
        zc.const = 1

        self._assert_polynomials_are_the_same(Polynomial(1), zp)
        self._assert_polynomials_are_the_same(Monomial(1, 0), zm)
        self._assert_polynomials_are_the_same(Constant(1), zc)