##// END OF EJS Templates
Improve test mocking to actually capture failure mode.
Ryan May -
Show More
@@ -1,128 +1,139 b''
1 """Tests for pylab tools module.
1 """Tests for pylab tools module.
2 """
2 """
3 #-----------------------------------------------------------------------------
3 #-----------------------------------------------------------------------------
4 # Copyright (c) 2011, the IPython Development Team.
4 # Copyright (c) 2011, the IPython Development Team.
5 #
5 #
6 # Distributed under the terms of the Modified BSD License.
6 # Distributed under the terms of the Modified BSD License.
7 #
7 #
8 # The full license is in the file COPYING.txt, distributed with this software.
8 # The full license is in the file COPYING.txt, distributed with this software.
9 #-----------------------------------------------------------------------------
9 #-----------------------------------------------------------------------------
10
10
11 #-----------------------------------------------------------------------------
11 #-----------------------------------------------------------------------------
12 # Imports
12 # Imports
13 #-----------------------------------------------------------------------------
13 #-----------------------------------------------------------------------------
14 from __future__ import print_function
14 from __future__ import print_function
15
15
16 # Stdlib imports
16 # Stdlib imports
17
17
18 # Third-party imports
18 # Third-party imports
19 import matplotlib; matplotlib.use('Agg')
19 import matplotlib; matplotlib.use('Agg')
20 import nose.tools as nt
20 import nose.tools as nt
21
21
22 from matplotlib import pyplot as plt
22 from matplotlib import pyplot as plt
23 import numpy as np
23 import numpy as np
24
24
25 # Our own imports
25 # Our own imports
26 from IPython.testing import decorators as dec
26 from IPython.testing import decorators as dec
27 from .. import pylabtools as pt
27 from .. import pylabtools as pt
28
28
29 #-----------------------------------------------------------------------------
29 #-----------------------------------------------------------------------------
30 # Globals and constants
30 # Globals and constants
31 #-----------------------------------------------------------------------------
31 #-----------------------------------------------------------------------------
32
32
33 #-----------------------------------------------------------------------------
33 #-----------------------------------------------------------------------------
34 # Local utilities
34 # Local utilities
35 #-----------------------------------------------------------------------------
35 #-----------------------------------------------------------------------------
36
36
37 #-----------------------------------------------------------------------------
37 #-----------------------------------------------------------------------------
38 # Classes and functions
38 # Classes and functions
39 #-----------------------------------------------------------------------------
39 #-----------------------------------------------------------------------------
40
40
41 @dec.parametric
41 @dec.parametric
42 def test_figure_to_svg():
42 def test_figure_to_svg():
43 # simple empty-figure test
43 # simple empty-figure test
44 fig = plt.figure()
44 fig = plt.figure()
45 yield nt.assert_equal(pt.print_figure(fig, 'svg'), None)
45 yield nt.assert_equal(pt.print_figure(fig, 'svg'), None)
46
46
47 plt.close('all')
47 plt.close('all')
48
48
49 # simple check for at least svg-looking output
49 # simple check for at least svg-looking output
50 fig = plt.figure()
50 fig = plt.figure()
51 ax = fig.add_subplot(1,1,1)
51 ax = fig.add_subplot(1,1,1)
52 ax.plot([1,2,3])
52 ax.plot([1,2,3])
53 plt.draw()
53 plt.draw()
54 svg = pt.print_figure(fig, 'svg')[:100].lower()
54 svg = pt.print_figure(fig, 'svg')[:100].lower()
55 yield nt.assert_true('doctype svg' in svg)
55 yield nt.assert_true('doctype svg' in svg)
56
56
57
57
58 def test_import_pylab():
58 def test_import_pylab():
59 ip = get_ipython()
59 ip = get_ipython()
60 ns = {}
60 ns = {}
61 pt.import_pylab(ns, import_all=False)
61 pt.import_pylab(ns, import_all=False)
62 nt.assert_true('plt' in ns)
62 nt.assert_true('plt' in ns)
63 nt.assert_equal(ns['np'], np)
63 nt.assert_equal(ns['np'], np)
64
64
65
65
66 class TestPylabSwitch(object):
66 class TestPylabSwitch(object):
67 class Shell(object):
67 class Shell(object):
68 pylab_gui_select = None
68 pylab_gui_select = None
69
69
70 def setup(self):
70 def setup(self):
71 import matplotlib
72 def act_mpl(backend):
73 matplotlib.rcParams['backend'] = backend
74
75 # Save rcParams since they get modified
76 self._saved_rcParams = matplotlib.rcParams
77 matplotlib.rcParams = dict(backend='Qt4Agg')
78
79 # Mock out functions
71 self._save_am = pt.activate_matplotlib
80 self._save_am = pt.activate_matplotlib
72 pt.activate_matplotlib = lambda *a,**kw:None
81 pt.activate_matplotlib = act_mpl
73 self._save_ip = pt.import_pylab
82 self._save_ip = pt.import_pylab
74 pt.import_pylab = lambda *a,**kw:None
83 pt.import_pylab = lambda *a,**kw:None
75 self._save_cis = pt.configure_inline_support
84 self._save_cis = pt.configure_inline_support
76 pt.configure_inline_support = lambda *a,**kw:None
85 pt.configure_inline_support = lambda *a,**kw:None
77
86
78 def teardown(self):
87 def teardown(self):
79 pt.activate_matplotlib = self._save_am
88 pt.activate_matplotlib = self._save_am
80 pt.import_pylab = self._save_ip
89 pt.import_pylab = self._save_ip
81 pt.configure_inline_support = self._save_cis
90 pt.configure_inline_support = self._save_cis
91 import matplotlib
92 matplotlib.rcParams = self._saved_rcParams
82
93
83 def test_qt(self):
94 def test_qt(self):
84 s = self.Shell()
95 s = self.Shell()
85 gui = pt.pylab_activate(dict(), 'qt', False, s)
96 gui = pt.pylab_activate(dict(), None, False, s)
86 nt.assert_equal(gui, 'qt')
97 nt.assert_equal(gui, 'qt')
87 nt.assert_equal(s.pylab_gui_select, 'qt')
98 nt.assert_equal(s.pylab_gui_select, 'qt')
88
99
89 gui = pt.pylab_activate(dict(), 'inline', False, s)
100 gui = pt.pylab_activate(dict(), 'inline', False, s)
90 nt.assert_equal(gui, 'inline')
101 nt.assert_equal(gui, 'inline')
91 nt.assert_equal(s.pylab_gui_select, 'qt')
102 nt.assert_equal(s.pylab_gui_select, 'qt')
92
103
93 gui = pt.pylab_activate(dict(), None, False, s)
104 gui = pt.pylab_activate(dict(), 'qt', False, s)
94 nt.assert_equal(gui, 'qt')
105 nt.assert_equal(gui, 'qt')
95 nt.assert_equal(s.pylab_gui_select, 'qt')
106 nt.assert_equal(s.pylab_gui_select, 'qt')
96
107
97 gui = pt.pylab_activate(dict(), 'inline', False, s)
108 gui = pt.pylab_activate(dict(), 'inline', False, s)
98 nt.assert_equal(gui, 'inline')
109 nt.assert_equal(gui, 'inline')
99 nt.assert_equal(s.pylab_gui_select, 'qt')
110 nt.assert_equal(s.pylab_gui_select, 'qt')
100
111
101 gui = pt.pylab_activate(dict(), None, False, s)
112 gui = pt.pylab_activate(dict(), None, False, s)
102 nt.assert_equal(gui, 'qt')
113 nt.assert_equal(gui, 'qt')
103 nt.assert_equal(s.pylab_gui_select, 'qt')
114 nt.assert_equal(s.pylab_gui_select, 'qt')
104
115
105 def test_inline(self):
116 def test_inline(self):
106 s = self.Shell()
117 s = self.Shell()
107 gui = pt.pylab_activate(dict(), 'inline', False, s)
118 gui = pt.pylab_activate(dict(), 'inline', False, s)
108 nt.assert_equal(gui, 'inline')
119 nt.assert_equal(gui, 'inline')
109 nt.assert_equal(s.pylab_gui_select, None)
120 nt.assert_equal(s.pylab_gui_select, None)
110
121
111 gui = pt.pylab_activate(dict(), 'inline', False, s)
122 gui = pt.pylab_activate(dict(), 'inline', False, s)
112 nt.assert_equal(gui, 'inline')
123 nt.assert_equal(gui, 'inline')
113 nt.assert_equal(s.pylab_gui_select, None)
124 nt.assert_equal(s.pylab_gui_select, None)
114
125
115 gui = pt.pylab_activate(dict(), 'qt', False, s)
126 gui = pt.pylab_activate(dict(), 'qt', False, s)
116 nt.assert_equal(gui, 'qt')
127 nt.assert_equal(gui, 'qt')
117 nt.assert_equal(s.pylab_gui_select, 'qt')
128 nt.assert_equal(s.pylab_gui_select, 'qt')
118
129
119 def test_qt_gtk(self):
130 def test_qt_gtk(self):
120 s = self.Shell()
131 s = self.Shell()
121 gui = pt.pylab_activate(dict(), 'qt', False, s)
132 gui = pt.pylab_activate(dict(), 'qt', False, s)
122 nt.assert_equal(gui, 'qt')
133 nt.assert_equal(gui, 'qt')
123 nt.assert_equal(s.pylab_gui_select, 'qt')
134 nt.assert_equal(s.pylab_gui_select, 'qt')
124
135
125 gui = pt.pylab_activate(dict(), 'gtk', False, s)
136 gui = pt.pylab_activate(dict(), 'gtk', False, s)
126 nt.assert_equal(gui, 'qt')
137 nt.assert_equal(gui, 'qt')
127 nt.assert_equal(s.pylab_gui_select, 'qt')
138 nt.assert_equal(s.pylab_gui_select, 'qt')
128
139
General Comments 0
You need to be logged in to leave comments. Login now