test_pylabtools.py
153 lines
| 4.9 KiB
| text/x-python
|
PythonLexer
Fernando Perez
|
r3734 | """Tests for pylab tools module. | ||
""" | ||||
#----------------------------------------------------------------------------- | ||||
# Copyright (c) 2011, the IPython Development Team. | ||||
# | ||||
# Distributed under the terms of the Modified BSD License. | ||||
# | ||||
# The full license is in the file COPYING.txt, distributed with this software. | ||||
#----------------------------------------------------------------------------- | ||||
#----------------------------------------------------------------------------- | ||||
# Imports | ||||
#----------------------------------------------------------------------------- | ||||
from __future__ import print_function | ||||
# Stdlib imports | ||||
# Third-party imports | ||||
import matplotlib; matplotlib.use('Agg') | ||||
import nose.tools as nt | ||||
from matplotlib import pyplot as plt | ||||
Fernando Perez
|
r5468 | import numpy as np | ||
Fernando Perez
|
r3734 | |||
# Our own imports | ||||
MinRK
|
r11329 | from IPython.core.interactiveshell import InteractiveShell | ||
Fernando Perez
|
r3734 | from .. import pylabtools as pt | ||
Daniel B. Vasquez
|
r14777 | from IPython.testing import decorators as dec | ||
Fernando Perez
|
r3734 | #----------------------------------------------------------------------------- | ||
# Globals and constants | ||||
#----------------------------------------------------------------------------- | ||||
#----------------------------------------------------------------------------- | ||||
# Local utilities | ||||
#----------------------------------------------------------------------------- | ||||
#----------------------------------------------------------------------------- | ||||
# Classes and functions | ||||
#----------------------------------------------------------------------------- | ||||
def test_figure_to_svg(): | ||||
# simple empty-figure test | ||||
fig = plt.figure() | ||||
Thomas Kluyver
|
r12374 | nt.assert_equal(pt.print_figure(fig, 'svg'), None) | ||
Fernando Perez
|
r3734 | |||
plt.close('all') | ||||
# simple check for at least svg-looking output | ||||
Fernando Perez
|
r3745 | fig = plt.figure() | ||
ax = fig.add_subplot(1,1,1) | ||||
Fernando Perez
|
r3734 | ax.plot([1,2,3]) | ||
plt.draw() | ||||
MinRK
|
r3984 | svg = pt.print_figure(fig, 'svg')[:100].lower() | ||
Thomas Kluyver
|
r12410 | nt.assert_in(b'doctype svg', svg) | ||
Fernando Perez
|
r5468 | |||
Daniel B. Vasquez
|
r14777 | @dec.skip_without("PIL.Image") | ||
def test_figure_to_jpg(): | ||||
# simple check for at least jpg-looking output | ||||
fig = plt.figure() | ||||
ax = fig.add_subplot(1,1,1) | ||||
ax.plot([1,2,3]) | ||||
plt.draw() | ||||
jpg = pt.print_figure(fig, 'jpg')[:100].lower() | ||||
assert jpg.startswith(b'\xff\xd8') | ||||
Daniel B. Vasquez
|
r14775 | |||
Fernando Perez
|
r5468 | |||
def test_import_pylab(): | ||||
ip = get_ipython() | ||||
Fernando Perez
|
r5469 | ns = {} | ||
pt.import_pylab(ns, import_all=False) | ||||
nt.assert_true('plt' in ns) | ||||
nt.assert_equal(ns['np'], np) | ||||
Ryan May
|
r7966 | |||
class TestPylabSwitch(object): | ||||
MinRK
|
r11329 | class Shell(InteractiveShell): | ||
def enable_gui(self, gui): | ||||
pass | ||||
Ryan May
|
r7966 | def setup(self): | ||
Ryan May
|
r8003 | import matplotlib | ||
def act_mpl(backend): | ||||
matplotlib.rcParams['backend'] = backend | ||||
# Save rcParams since they get modified | ||||
self._saved_rcParams = matplotlib.rcParams | ||||
Thomas Kluyver
|
r12924 | self._saved_rcParamsOrig = matplotlib.rcParamsOrig | ||
Ryan May
|
r8003 | matplotlib.rcParams = dict(backend='Qt4Agg') | ||
Thomas Kluyver
|
r12924 | matplotlib.rcParamsOrig = dict(backend='Qt4Agg') | ||
Ryan May
|
r8003 | |||
# Mock out functions | ||||
Ryan May
|
r7966 | self._save_am = pt.activate_matplotlib | ||
Ryan May
|
r8003 | pt.activate_matplotlib = act_mpl | ||
Ryan May
|
r7966 | self._save_ip = pt.import_pylab | ||
pt.import_pylab = lambda *a,**kw:None | ||||
self._save_cis = pt.configure_inline_support | ||||
pt.configure_inline_support = lambda *a,**kw:None | ||||
def teardown(self): | ||||
pt.activate_matplotlib = self._save_am | ||||
pt.import_pylab = self._save_ip | ||||
pt.configure_inline_support = self._save_cis | ||||
Ryan May
|
r8003 | import matplotlib | ||
matplotlib.rcParams = self._saved_rcParams | ||||
Thomas Kluyver
|
r12924 | matplotlib.rcParamsOrig = self._saved_rcParamsOrig | ||
Ryan May
|
r7966 | |||
def test_qt(self): | ||||
s = self.Shell() | ||||
MinRK
|
r11329 | gui, backend = s.enable_matplotlib(None) | ||
Ryan May
|
r7966 | nt.assert_equal(gui, 'qt') | ||
nt.assert_equal(s.pylab_gui_select, 'qt') | ||||
MinRK
|
r11329 | gui, backend = s.enable_matplotlib('inline') | ||
Ryan May
|
r7966 | nt.assert_equal(gui, 'inline') | ||
nt.assert_equal(s.pylab_gui_select, 'qt') | ||||
MinRK
|
r11329 | gui, backend = s.enable_matplotlib('qt') | ||
Ryan May
|
r7966 | nt.assert_equal(gui, 'qt') | ||
nt.assert_equal(s.pylab_gui_select, 'qt') | ||||
MinRK
|
r11329 | gui, backend = s.enable_matplotlib('inline') | ||
Ryan May
|
r7966 | nt.assert_equal(gui, 'inline') | ||
nt.assert_equal(s.pylab_gui_select, 'qt') | ||||
MinRK
|
r11329 | gui, backend = s.enable_matplotlib() | ||
Ryan May
|
r7966 | nt.assert_equal(gui, 'qt') | ||
nt.assert_equal(s.pylab_gui_select, 'qt') | ||||
def test_inline(self): | ||||
s = self.Shell() | ||||
MinRK
|
r11329 | gui, backend = s.enable_matplotlib('inline') | ||
Ryan May
|
r7966 | nt.assert_equal(gui, 'inline') | ||
nt.assert_equal(s.pylab_gui_select, None) | ||||
MinRK
|
r11329 | gui, backend = s.enable_matplotlib('inline') | ||
Ryan May
|
r7966 | nt.assert_equal(gui, 'inline') | ||
nt.assert_equal(s.pylab_gui_select, None) | ||||
MinRK
|
r11329 | gui, backend = s.enable_matplotlib('qt') | ||
Ryan May
|
r7966 | nt.assert_equal(gui, 'qt') | ||
nt.assert_equal(s.pylab_gui_select, 'qt') | ||||
def test_qt_gtk(self): | ||||
s = self.Shell() | ||||
MinRK
|
r11329 | gui, backend = s.enable_matplotlib('qt') | ||
Ryan May
|
r7966 | nt.assert_equal(gui, 'qt') | ||
nt.assert_equal(s.pylab_gui_select, 'qt') | ||||
MinRK
|
r11329 | gui, backend = s.enable_matplotlib('gtk') | ||
Ryan May
|
r7966 | nt.assert_equal(gui, 'qt') | ||
nt.assert_equal(s.pylab_gui_select, 'qt') | ||||