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")
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")
def use_unicode(self): poly.set_default_printstyle('ascii')