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