Example #1
0
def test_nonnumeric_object_coefficients(coefs, tgt):
    """
    Test coef fallback for object arrays of non-numeric coefficients.
    """
    p = poly.Polynomial(coefs)
    poly.set_default_printstyle('unicode')
    assert_equal(str(p), tgt)
def test_complex_coefficients():
    """Test both numpy and built-in complex."""
    coefs = [0 + 1j, 1 + 1j, -2 + 2j, 3 + 0j]
    # numpy complex
    p1 = poly.Polynomial(coefs)
    # Python complex
    p2 = poly.Polynomial(array(coefs, dtype=object))
    poly.set_default_printstyle("unicode")
    assert_equal(str(p1), "1j + (1+1j)·x¹ - (2-2j)·x² + (3+0j)·x³")
    assert_equal(str(p2), "1j + (1+1j)·x¹ + (-2+2j)·x² + (3+0j)·x³")
    poly.set_default_printstyle("ascii")
    assert_equal(str(p1), "1j + (1+1j) x**1 - (2-2j) x**2 + (3+0j) x**3")
    assert_equal(str(p2), "1j + (1+1j) x**1 + (-2+2j) x**2 + (3+0j) x**3")
Example #3
0
class TestLinebreaking:
    poly.set_default_printstyle('ascii')

    def test_single_line_one_less(self):
        # With 'ascii' style, len(str(p)) is default linewidth - 1 (i.e. 74)
        p = poly.Polynomial([123456789, 123456789, 123456789, 1234, 1])
        assert_equal(len(str(p)), 74)
        assert_equal(str(p),
                     ('123456789.0 + 123456789.0 x**1 + 123456789.0 x**2 + '
                      '1234.0 x**3 + 1.0 x**4'))

    def test_num_chars_is_linewidth(self):
        # len(str(p)) == default linewidth == 75
        p = poly.Polynomial([123456789, 123456789, 123456789, 1234, 10])
        assert_equal(len(str(p)), 75)
        assert_equal(str(p),
                     ('123456789.0 + 123456789.0 x**1 + 123456789.0 x**2 + '
                      '1234.0 x**3 +\n10.0 x**4'))

    def test_first_linebreak_multiline_one_less_than_linewidth(self):
        # Multiline str where len(first_line) + len(next_term) == lw - 1 == 74
        p = poly.Polynomial(
            [123456789, 123456789, 123456789, 12, 1, 123456789])
        assert_equal(len(str(p).split('\n')[0]), 74)
        assert_equal(str(p),
                     ('123456789.0 + 123456789.0 x**1 + 123456789.0 x**2 + '
                      '12.0 x**3 + 1.0 x**4 +\n123456789.0 x**5'))

    def test_first_linebreak_multiline_on_linewidth(self):
        # First line is one character longer than previous test
        p = poly.Polynomial(
            [123456789, 123456789, 123456789, 123, 1, 123456789])
        assert_equal(str(p),
                     ('123456789.0 + 123456789.0 x**1 + 123456789.0 x**2 + '
                      '123.0 x**3 +\n1.0 x**4 + 123456789.0 x**5'))

    @pytest.mark.parametrize(('lw', 'tgt'), (
        (75, ('0.0 + 10.0 x**1 + 200.0 x**2 + 3000.0 x**3 + 40000.0 x**4 +\n'
              '500000.0 x**5 + 600000.0 x**6 + 70000.0 x**7 + 8000.0 x**8 + '
              '900.0 x**9')),
        (45, ('0.0 + 10.0 x**1 + 200.0 x**2 + 3000.0 x**3 +\n40000.0 x**4 + '
              '500000.0 x**5 +\n600000.0 x**6 + 70000.0 x**7 + 8000.0 x**8 +\n'
              '900.0 x**9')),
        (132, ('0.0 + 10.0 x**1 + 200.0 x**2 + 3000.0 x**3 + 40000.0 x**4 + '
               '500000.0 x**5 + 600000.0 x**6 + 70000.0 x**7 + 8000.0 x**8 + '
               '900.0 x**9')),
    ))
    def test_linewidth_printoption(self, lw, tgt):
        p = poly.Polynomial(
            [0, 10, 200, 3000, 40000, 500000, 600000, 70000, 8000, 900])
        with printoptions(linewidth=lw):
            assert_equal(str(p), tgt)
            for line in str(p).split('\n'):
                assert_(len(line) < lw)
def test_set_default_printoptions():
    p = poly.Polynomial([1, 2, 3])
    c = poly.Chebyshev([1, 2, 3])
    poly.set_default_printstyle("ascii")
    assert_equal(str(p), "1.0 + 2.0 x**1 + 3.0 x**2")
    assert_equal(str(c), "1.0 + 2.0 T_1(x) + 3.0 T_2(x)")
    poly.set_default_printstyle("unicode")
    assert_equal(str(p), "1.0 + 2.0·x¹ + 3.0·x²")
    assert_equal(str(c), "1.0 + 2.0·T₁(x) + 3.0·T₂(x)")
    with pytest.raises(ValueError):
        poly.set_default_printstyle("invalid_input")
 def test_empty_formatstr(self):
     poly.set_default_printstyle("ascii")
     p = poly.Polynomial([1, 2, 3])
     assert_equal(format(p), "1.0 + 2.0 x**1 + 3.0 x**2")
     assert_equal(f"{p}", "1.0 + 2.0 x**1 + 3.0 x**2")
 def test_format_ascii(self):
     poly.set_default_printstyle("unicode")
     p = poly.Polynomial([1, 2, 0, -1])
     assert_equal(format(p, "ascii"), "1.0 + 2.0 x**1 + 0.0 x**2 - 1.0 x**3")
 def test_format_unicode(self):
     poly.set_default_printstyle("ascii")
     p = poly.Polynomial([1, 2, 0, -1])
     assert_equal(format(p, "unicode"), "1.0 + 2.0·x¹ + 0.0·x² - 1.0·x³")
def test_numeric_object_coefficients(coefs, tgt):
    p = poly.Polynomial(coefs)
    poly.set_default_printstyle("unicode")
    assert_equal(str(p), tgt)
 def use_ascii(self):
     poly.set_default_printstyle("ascii")
 def use_unicode(self):
     poly.set_default_printstyle("unicode")
Example #11
0
 def use_unicode(self):
     poly.set_default_printstyle('ascii')