Skip to content

Commit

Permalink
Reorganize test_plot_implicit.py, UnXFAIL some tests
Browse files Browse the repository at this point in the history
  • Loading branch information
skirpichev committed Nov 29, 2017
1 parent 5ba9fa3 commit 0be2040
Showing 1 changed file with 39 additions and 39 deletions.
78 changes: 39 additions & 39 deletions diofant/plotting/tests/test_plot_implicit.py
Expand Up @@ -3,66 +3,50 @@

import pytest

from diofant import (And, Eq, I, Or, Symbol, cos, exp, pi, plot_implicit, re,
from diofant import (And, Eq, I, Or, cos, exp, pi, plot_implicit, re,
sin, symbols, tan)
from diofant.external import import_module
from diofant.plotting.plot import unset_show
from diofant.abc import x, y


__all__ = ()

matplotlib = import_module('matplotlib', min_module_version='1.1.0',
catch=(RuntimeError,))

# Set plots not to show
unset_show()


def tmp_file(name=''):
return NamedTemporaryFile(suffix='.png').name


def plot_and_save(name):
x = Symbol('x')
y = Symbol('y')
# implicit plot tests
plot_implicit(Eq(y, cos(x)), (x, -5, 5), (y, -2, 2)).save(tmp_file(name))
plot_implicit(Eq(y, cos(x)), (x, -5, 5), (y, -2, 2), show=False).save(tmp_file(name))
plot_implicit(Eq(y**2, x**3 - x), (x, -5, 5),
(y, -4, 4)).save(tmp_file(name))
(y, -4, 4), show=False).save(tmp_file(name))
plot_implicit(y > 1 / x, (x, -5, 5),
(y, -2, 2)).save(tmp_file(name))
(y, -2, 2), show=False).save(tmp_file(name))
plot_implicit(y < 1 / tan(x), (x, -5, 5),
(y, -2, 2)).save(tmp_file(name))
(y, -2, 2), show=False).save(tmp_file(name))
plot_implicit(y >= 2 * sin(x) * cos(x), (x, -5, 5),
(y, -2, 2)).save(tmp_file(name))
(y, -2, 2), show=False).save(tmp_file(name))
plot_implicit(y <= x**2, (x, -3, 3),
(y, -1, 5)).save(tmp_file(name))
(y, -1, 5), show=False).save(tmp_file(name))

# Test all input args for plot_implicit
plot_implicit(Eq(y**2, x**3 - x)).save(tmp_file())
plot_implicit(Eq(y**2, x**3 - x), adaptive=False).save(tmp_file())
plot_implicit(Eq(y**2, x**3 - x), adaptive=False, points=500).save(tmp_file())
plot_implicit(y > x, (x, -5, 5)).save(tmp_file())
plot_implicit(And(y > exp(x), y > x + 2)).save(tmp_file())
plot_implicit(Or(y > x, y > -x)).save(tmp_file())
plot_implicit(x**2 - 1, (x, -5, 5)).save(tmp_file())
plot_implicit(x**2 - 1).save(tmp_file())
plot_implicit(y > x, depth=-5).save(tmp_file())
plot_implicit(y > x, depth=5).save(tmp_file())
plot_implicit(y > cos(x), adaptive=False).save(tmp_file())
plot_implicit(y < cos(x), adaptive=False).save(tmp_file())
plot_implicit(And(y > cos(x), Or(y > x, Eq(y, x)))).save(tmp_file())
plot_implicit(y - cos(pi / x)).save(tmp_file())

# Test plots which cannot be rendered using the adaptive algorithm
# TODO: catch the warning.
plot_implicit(Eq(y, re(cos(x) + I*sin(x)))).save(tmp_file(name))

with warnings.catch_warnings(record=True) as w:
plot_implicit(x**2 - 1, legend='An implicit plot').save(tmp_file())
assert len(w) == 1
assert issubclass(w[-1].category, UserWarning)
assert 'No labeled objects found' in str(w[0].message)
plot_implicit(Eq(y**2, x**3 - x), show=False).save(tmp_file(name))
plot_implicit(Eq(y**2, x**3 - x), adaptive=False, show=False).save(tmp_file(name))
plot_implicit(Eq(y**2, x**3 - x), adaptive=False, points=500, show=False).save(tmp_file(name))
plot_implicit(y > x, (x, -5, 5), show=False).save(tmp_file(name))
plot_implicit(And(y > exp(x), y > x + 2), show=False).save(tmp_file(name))
plot_implicit(Or(y > x, y > -x), show=False).save(tmp_file(name))
plot_implicit(x**2 - 1, (x, -5, 5), show=False).save(tmp_file(name))
plot_implicit(x**2 - 1, show=False).save(tmp_file(name))
plot_implicit(y > x, depth=-5, show=False).save(tmp_file(name))
plot_implicit(y > x, depth=5, show=False).save(tmp_file(name))
plot_implicit(y > cos(x), adaptive=False, show=False).save(tmp_file(name))
plot_implicit(y < cos(x), adaptive=False, show=False).save(tmp_file(name))
plot_implicit(y - cos(pi / x), show=False).save(tmp_file(name))


def test_line_color():
Expand All @@ -73,8 +57,24 @@ def test_line_color():
assert p._series[0].line_color == "r"


@pytest.mark.xfail
@pytest.mark.skipif(matplotlib is None, reason="no matplotlib")
def test_matplotlib():
plot_and_save('test')
test_line_color()


@pytest.mark.xfail
@pytest.mark.skipif(matplotlib is None, reason="no matplotlib")
def test_matplotlib2():
name = 'test2'

plot_implicit(And(y > cos(x), Or(y > x, Eq(y, x))), show=False).save(tmp_file(name))

# Test plots which cannot be rendered using the adaptive algorithm
# TODO: catch the warning.
plot_implicit(Eq(y, re(cos(x) + I*sin(x))), show=False).save(tmp_file(name))

with warnings.catch_warnings(record=True) as w:
plot_implicit(x**2 - 1, legend='An implicit plot', show=False).save(tmp_file(name))
assert len(w) == 1
assert issubclass(w[-1].category, UserWarning)
assert 'No labeled objects found' in str(w[0].message)

0 comments on commit 0be2040

Please sign in to comment.