You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

204 lines
12 KiB

5 months ago
from sympy.core.singleton import S
from sympy.core.symbol import Symbol
from sympy.functions.elementary.exponential import log
from sympy.functions.elementary.miscellaneous import sqrt
from sympy.functions.elementary.trigonometric import sin
from sympy.plotting.textplot import textplot_str
from sympy.utilities.exceptions import ignore_warnings
def test_axes_alignment():
x = Symbol('x')
lines = [
' 1 | ..',
' | ... ',
' | .. ',
' | ... ',
' | ... ',
' | .. ',
' | ... ',
' | ... ',
' | .. ',
' | ... ',
' 0 |--------------------------...--------------------------',
' | ... ',
' | .. ',
' | ... ',
' | ... ',
' | .. ',
' | ... ',
' | ... ',
' | .. ',
' | ... ',
' -1 |_______________________________________________________',
' -1 0 1'
]
assert lines == list(textplot_str(x, -1, 1))
lines = [
' 1 | ..',
' | .... ',
' | ... ',
' | ... ',
' | .... ',
' | ... ',
' | ... ',
' | .... ',
' 0 |--------------------------...--------------------------',
' | .... ',
' | ... ',
' | ... ',
' | .... ',
' | ... ',
' | ... ',
' | .... ',
' -1 |_______________________________________________________',
' -1 0 1'
]
assert lines == list(textplot_str(x, -1, 1, H=17))
def test_singularity():
x = Symbol('x')
lines = [
' 54 | . ',
' | ',
' | ',
' | ',
' | ',' | ',
' | ',
' | ',
' | ',
' | ',
' 27.5 |--.----------------------------------------------------',
' | ',
' | ',
' | ',
' | . ',
' | \\ ',
' | \\ ',
' | .. ',
' | ... ',
' | ............. ',
' 1 |_______________________________________________________',
' 0 0.5 1'
]
assert lines == list(textplot_str(1/x, 0, 1))
lines = [
' 0 | ......',
' | ........ ',
' | ........ ',
' | ...... ',
' | ..... ',
' | .... ',
' | ... ',
' | .. ',
' | ... ',
' | / ',
' -2 |-------..----------------------------------------------',
' | / ',
' | / ',
' | / ',
' | . ',
' | ',
' | . ',
' | ',
' | ',
' | ',
' -4 |_______________________________________________________',
' 0 0.5 1'
]
# RuntimeWarning: divide by zero encountered in log
with ignore_warnings(RuntimeWarning):
assert lines == list(textplot_str(log(x), 0, 1))
def test_sinc():
x = Symbol('x')
lines = [
' 1 | . . ',
' | . . ',
' | ',
' | . . ',
' | ',
' | . . ',
' | ',
' | ',
' | . . ',
' | ',
' 0.4 |-------------------------------------------------------',
' | . . ',
' | ',
' | . . ',
' | ',
' | ..... ..... ',
' | .. \\ . . / .. ',
' | / \\ / \\ ',
' |/ \\ . . / \\',
' | \\ / \\ / ',
' -0.2 |_______________________________________________________',
' -10 0 10'
]
# RuntimeWarning: invalid value encountered in double_scalars
with ignore_warnings(RuntimeWarning):
assert lines == list(textplot_str(sin(x)/x, -10, 10))
def test_imaginary():
x = Symbol('x')
lines = [
' 1 | ..',
' | .. ',
' | ... ',
' | .. ',
' | .. ',
' | .. ',
' | .. ',
' | .. ',
' | .. ',
' | / ',
' 0.5 |----------------------------------/--------------------',
' | .. ',
' | / ',
' | . ',
' | ',
' | . ',
' | . ',
' | ',
' | ',
' | ',
' 0 |_______________________________________________________',
' -1 0 1'
]
# RuntimeWarning: invalid value encountered in sqrt
with ignore_warnings(RuntimeWarning):
assert list(textplot_str(sqrt(x), -1, 1)) == lines
lines = [
' 1 | ',
' | ',
' | ',
' | ',
' | ',
' | ',
' | ',
' | ',
' | ',
' | ',
' 0 |-------------------------------------------------------',
' | ',
' | ',
' | ',
' | ',
' | ',
' | ',
' | ',
' | ',
' | ',
' -1 |_______________________________________________________',
' -1 0 1'
]
assert list(textplot_str(S.ImaginaryUnit, -1, 1)) == lines