Adding all project files
This commit is contained in:
parent
6c9e127bdc
commit
cd4316ad0f
42289 changed files with 8009643 additions and 0 deletions
110
venv/Lib/site-packages/sympy/plotting/tests/test_utils.py
Normal file
110
venv/Lib/site-packages/sympy/plotting/tests/test_utils.py
Normal file
|
@ -0,0 +1,110 @@
|
|||
from pytest import raises
|
||||
from sympy import (
|
||||
symbols, Expr, Tuple, Integer, cos, solveset, FiniteSet, ImageSet)
|
||||
from sympy.plotting.utils import (
|
||||
_create_ranges, _plot_sympify, extract_solution)
|
||||
from sympy.physics.mechanics import ReferenceFrame, Vector as MechVector
|
||||
from sympy.vector import CoordSys3D, Vector
|
||||
|
||||
|
||||
def test_plot_sympify():
|
||||
x, y = symbols("x, y")
|
||||
|
||||
# argument is already sympified
|
||||
args = x + y
|
||||
r = _plot_sympify(args)
|
||||
assert r == args
|
||||
|
||||
# one argument needs to be sympified
|
||||
args = (x + y, 1)
|
||||
r = _plot_sympify(args)
|
||||
assert isinstance(r, (list, tuple, Tuple)) and len(r) == 2
|
||||
assert isinstance(r[0], Expr)
|
||||
assert isinstance(r[1], Integer)
|
||||
|
||||
# string and dict should not be sympified
|
||||
args = (x + y, (x, 0, 1), "str", 1, {1: 1, 2: 2.0})
|
||||
r = _plot_sympify(args)
|
||||
assert isinstance(r, (list, tuple, Tuple)) and len(r) == 5
|
||||
assert isinstance(r[0], Expr)
|
||||
assert isinstance(r[1], Tuple)
|
||||
assert isinstance(r[2], str)
|
||||
assert isinstance(r[3], Integer)
|
||||
assert isinstance(r[4], dict) and isinstance(r[4][1], int) and isinstance(r[4][2], float)
|
||||
|
||||
# nested arguments containing strings
|
||||
args = ((x + y, (y, 0, 1), "a"), (x + 1, (x, 0, 1), "$f_{1}$"))
|
||||
r = _plot_sympify(args)
|
||||
assert isinstance(r, (list, tuple, Tuple)) and len(r) == 2
|
||||
assert isinstance(r[0], Tuple)
|
||||
assert isinstance(r[0][1], Tuple)
|
||||
assert isinstance(r[0][1][1], Integer)
|
||||
assert isinstance(r[0][2], str)
|
||||
assert isinstance(r[1], Tuple)
|
||||
assert isinstance(r[1][1], Tuple)
|
||||
assert isinstance(r[1][1][1], Integer)
|
||||
assert isinstance(r[1][2], str)
|
||||
|
||||
# vectors from sympy.physics.vectors module are not sympified
|
||||
# vectors from sympy.vectors are sympified
|
||||
# in both cases, no error should be raised
|
||||
R = ReferenceFrame("R")
|
||||
v1 = 2 * R.x + R.y
|
||||
C = CoordSys3D("C")
|
||||
v2 = 2 * C.i + C.j
|
||||
args = (v1, v2)
|
||||
r = _plot_sympify(args)
|
||||
assert isinstance(r, (list, tuple, Tuple)) and len(r) == 2
|
||||
assert isinstance(v1, MechVector)
|
||||
assert isinstance(v2, Vector)
|
||||
|
||||
|
||||
def test_create_ranges():
|
||||
x, y = symbols("x, y")
|
||||
|
||||
# user don't provide any range -> return a default range
|
||||
r = _create_ranges({x}, [], 1)
|
||||
assert isinstance(r, (list, tuple, Tuple)) and len(r) == 1
|
||||
assert isinstance(r[0], (Tuple, tuple))
|
||||
assert r[0] == (x, -10, 10)
|
||||
|
||||
r = _create_ranges({x, y}, [], 2)
|
||||
assert isinstance(r, (list, tuple, Tuple)) and len(r) == 2
|
||||
assert isinstance(r[0], (Tuple, tuple))
|
||||
assert isinstance(r[1], (Tuple, tuple))
|
||||
assert r[0] == (x, -10, 10) or (y, -10, 10)
|
||||
assert r[1] == (y, -10, 10) or (x, -10, 10)
|
||||
assert r[0] != r[1]
|
||||
|
||||
# not enough ranges provided by the user -> create default ranges
|
||||
r = _create_ranges(
|
||||
{x, y},
|
||||
[
|
||||
(x, 0, 1),
|
||||
],
|
||||
2,
|
||||
)
|
||||
assert isinstance(r, (list, tuple, Tuple)) and len(r) == 2
|
||||
assert isinstance(r[0], (Tuple, tuple))
|
||||
assert isinstance(r[1], (Tuple, tuple))
|
||||
assert r[0] == (x, 0, 1) or (y, -10, 10)
|
||||
assert r[1] == (y, -10, 10) or (x, 0, 1)
|
||||
assert r[0] != r[1]
|
||||
|
||||
# too many free symbols
|
||||
raises(ValueError, lambda: _create_ranges({x, y}, [], 1))
|
||||
raises(ValueError, lambda: _create_ranges({x, y}, [(x, 0, 5), (y, 0, 1)], 1))
|
||||
|
||||
|
||||
def test_extract_solution():
|
||||
x = symbols("x")
|
||||
|
||||
sol = solveset(cos(10 * x))
|
||||
assert sol.has(ImageSet)
|
||||
res = extract_solution(sol)
|
||||
assert len(res) == 20
|
||||
assert isinstance(res, FiniteSet)
|
||||
|
||||
res = extract_solution(sol, 20)
|
||||
assert len(res) == 40
|
||||
assert isinstance(res, FiniteSet)
|
Loading…
Add table
Add a link
Reference in a new issue