123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- from sympy.core.singleton import S
- from sympy.printing.tableform import TableForm
- from sympy.printing.latex import latex
- from sympy.abc import x
- from sympy.functions.elementary.miscellaneous import sqrt
- from sympy.functions.elementary.trigonometric import sin
- from sympy.testing.pytest import raises
- from textwrap import dedent
- def test_TableForm():
- s = str(TableForm([["a", "b"], ["c", "d"], ["e", 0]],
- headings="automatic"))
- assert s == (
- ' | 1 2\n'
- '-------\n'
- '1 | a b\n'
- '2 | c d\n'
- '3 | e '
- )
- s = str(TableForm([["a", "b"], ["c", "d"], ["e", 0]],
- headings="automatic", wipe_zeros=False))
- assert s == dedent('''\
- | 1 2
- -------
- 1 | a b
- 2 | c d
- 3 | e 0''')
- s = str(TableForm([[x**2, "b"], ["c", x**2], ["e", "f"]],
- headings=("automatic", None)))
- assert s == (
- '1 | x**2 b \n'
- '2 | c x**2\n'
- '3 | e f '
- )
- s = str(TableForm([["a", "b"], ["c", "d"], ["e", "f"]],
- headings=(None, "automatic")))
- assert s == dedent('''\
- 1 2
- ---
- a b
- c d
- e f''')
- s = str(TableForm([[5, 7], [4, 2], [10, 3]],
- headings=[["Group A", "Group B", "Group C"], ["y1", "y2"]]))
- assert s == (
- ' | y1 y2\n'
- '---------------\n'
- 'Group A | 5 7 \n'
- 'Group B | 4 2 \n'
- 'Group C | 10 3 '
- )
- raises(
- ValueError,
- lambda:
- TableForm(
- [[5, 7], [4, 2], [10, 3]],
- headings=[["Group A", "Group B", "Group C"], ["y1", "y2"]],
- alignments="middle")
- )
- s = str(TableForm([[5, 7], [4, 2], [10, 3]],
- headings=[["Group A", "Group B", "Group C"], ["y1", "y2"]],
- alignments="right"))
- assert s == dedent('''\
- | y1 y2
- ---------------
- Group A | 5 7
- Group B | 4 2
- Group C | 10 3''')
- # other alignment permutations
- d = [[1, 100], [100, 1]]
- s = TableForm(d, headings=(('xxx', 'x'), None), alignments='l')
- assert str(s) == (
- 'xxx | 1 100\n'
- ' x | 100 1 '
- )
- s = TableForm(d, headings=(('xxx', 'x'), None), alignments='lr')
- assert str(s) == dedent('''\
- xxx | 1 100
- x | 100 1''')
- s = TableForm(d, headings=(('xxx', 'x'), None), alignments='clr')
- assert str(s) == dedent('''\
- xxx | 1 100
- x | 100 1''')
- s = TableForm(d, headings=(('xxx', 'x'), None))
- assert str(s) == (
- 'xxx | 1 100\n'
- ' x | 100 1 '
- )
- raises(ValueError, lambda: TableForm(d, alignments='clr'))
- #pad
- s = str(TableForm([[None, "-", 2], [1]], pad='?'))
- assert s == dedent('''\
- ? - 2
- 1 ? ?''')
- def test_TableForm_latex():
- s = latex(TableForm([[0, x**3], ["c", S.One/4], [sqrt(x), sin(x**2)]],
- wipe_zeros=True, headings=("automatic", "automatic")))
- assert s == (
- '\\begin{tabular}{r l l}\n'
- ' & 1 & 2 \\\\\n'
- '\\hline\n'
- '1 & & $x^{3}$ \\\\\n'
- '2 & $c$ & $\\frac{1}{4}$ \\\\\n'
- '3 & $\\sqrt{x}$ & $\\sin{\\left(x^{2} \\right)}$ \\\\\n'
- '\\end{tabular}'
- )
- s = latex(TableForm([[0, x**3], ["c", S.One/4], [sqrt(x), sin(x**2)]],
- wipe_zeros=True, headings=("automatic", "automatic"), alignments='l'))
- assert s == (
- '\\begin{tabular}{r l l}\n'
- ' & 1 & 2 \\\\\n'
- '\\hline\n'
- '1 & & $x^{3}$ \\\\\n'
- '2 & $c$ & $\\frac{1}{4}$ \\\\\n'
- '3 & $\\sqrt{x}$ & $\\sin{\\left(x^{2} \\right)}$ \\\\\n'
- '\\end{tabular}'
- )
- s = latex(TableForm([[0, x**3], ["c", S.One/4], [sqrt(x), sin(x**2)]],
- wipe_zeros=True, headings=("automatic", "automatic"), alignments='l'*3))
- assert s == (
- '\\begin{tabular}{l l l}\n'
- ' & 1 & 2 \\\\\n'
- '\\hline\n'
- '1 & & $x^{3}$ \\\\\n'
- '2 & $c$ & $\\frac{1}{4}$ \\\\\n'
- '3 & $\\sqrt{x}$ & $\\sin{\\left(x^{2} \\right)}$ \\\\\n'
- '\\end{tabular}'
- )
- s = latex(TableForm([["a", x**3], ["c", S.One/4], [sqrt(x), sin(x**2)]],
- headings=("automatic", "automatic")))
- assert s == (
- '\\begin{tabular}{r l l}\n'
- ' & 1 & 2 \\\\\n'
- '\\hline\n'
- '1 & $a$ & $x^{3}$ \\\\\n'
- '2 & $c$ & $\\frac{1}{4}$ \\\\\n'
- '3 & $\\sqrt{x}$ & $\\sin{\\left(x^{2} \\right)}$ \\\\\n'
- '\\end{tabular}'
- )
- s = latex(TableForm([["a", x**3], ["c", S.One/4], [sqrt(x), sin(x**2)]],
- formats=['(%s)', None], headings=("automatic", "automatic")))
- assert s == (
- '\\begin{tabular}{r l l}\n'
- ' & 1 & 2 \\\\\n'
- '\\hline\n'
- '1 & (a) & $x^{3}$ \\\\\n'
- '2 & (c) & $\\frac{1}{4}$ \\\\\n'
- '3 & (sqrt(x)) & $\\sin{\\left(x^{2} \\right)}$ \\\\\n'
- '\\end{tabular}'
- )
- def neg_in_paren(x, i, j):
- if i % 2:
- return ('(%s)' if x < 0 else '%s') % x
- else:
- pass # use default print
- s = latex(TableForm([[-1, 2], [-3, 4]],
- formats=[neg_in_paren]*2, headings=("automatic", "automatic")))
- assert s == (
- '\\begin{tabular}{r l l}\n'
- ' & 1 & 2 \\\\\n'
- '\\hline\n'
- '1 & -1 & 2 \\\\\n'
- '2 & (-3) & 4 \\\\\n'
- '\\end{tabular}'
- )
- s = latex(TableForm([["a", x**3], ["c", S.One/4], [sqrt(x), sin(x**2)]]))
- assert s == (
- '\\begin{tabular}{l l}\n'
- '$a$ & $x^{3}$ \\\\\n'
- '$c$ & $\\frac{1}{4}$ \\\\\n'
- '$\\sqrt{x}$ & $\\sin{\\left(x^{2} \\right)}$ \\\\\n'
- '\\end{tabular}'
- )
|