1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222
|
import numpy as np
from numpy.testing import assert_warns
from ..exporter import Exporter
from ..renderers import FakeRenderer, FullFakeRenderer
from . import plt
def fake_renderer_output(fig, Renderer):
renderer = Renderer()
exporter = Exporter(renderer)
exporter.run(fig)
return renderer.output
def _assert_output_equal(text1, text2):
for line1, line2 in zip(text1.strip().split(), text2.strip().split()):
assert line1 == line2
def test_lines():
fig, ax = plt.subplots()
ax.plot(range(20), '-k')
_assert_output_equal(fake_renderer_output(fig, FakeRenderer),
"""
opening figure
opening axes
draw path with 20 vertices
closing axes
closing figure
""")
_assert_output_equal(fake_renderer_output(fig, FullFakeRenderer),
"""
opening figure
opening axes
draw line with 20 points
closing axes
closing figure
""")
def test_markers():
fig, ax = plt.subplots()
ax.plot(range(2), 'ok')
_assert_output_equal(fake_renderer_output(fig, FakeRenderer),
"""
opening figure
opening axes
draw path with 25 vertices
draw path with 25 vertices
closing axes
closing figure
""")
_assert_output_equal(fake_renderer_output(fig, FullFakeRenderer),
"""
opening figure
opening axes
draw 2 markers
closing axes
closing figure
""")
def test_path_collection():
fig, ax = plt.subplots()
ax.scatter(range(3), range(3))
_assert_output_equal(fake_renderer_output(fig, FakeRenderer),
"""
opening figure
opening axes
draw path with 25 vertices
draw path with 25 vertices
draw path with 25 vertices
closing axes
closing figure
""")
_assert_output_equal(fake_renderer_output(fig, FullFakeRenderer),
"""
opening figure
opening axes
draw path collection with 3 offsets
closing axes
closing figure
""")
def test_text():
fig, ax = plt.subplots()
ax.set_xlabel("my x label")
ax.set_ylabel("my y label")
ax.set_title("my title")
ax.text(0.5, 0.5, "my text")
_assert_output_equal(fake_renderer_output(fig, FakeRenderer),
"""
opening figure
opening axes
draw text 'my text' None
draw text 'my x label' xlabel
draw text 'my y label' ylabel
draw text 'my title' title
closing axes
closing figure
""")
def test_path():
fig, ax = plt.subplots()
ax.add_patch(plt.Circle((0, 0), 1))
ax.add_patch(plt.Rectangle((0, 0), 1, 2))
_assert_output_equal(fake_renderer_output(fig, FakeRenderer),
"""
opening figure
opening axes
draw path with 25 vertices
draw path with 4 vertices
closing axes
closing figure
""")
def test_Figure():
""" if the fig is not associated with a canvas, FakeRenderer shall
not fail. """
fig = plt.Figure()
ax = fig.add_subplot(111)
ax.add_patch(plt.Circle((0, 0), 1))
ax.add_patch(plt.Rectangle((0, 0), 1, 2))
_assert_output_equal(fake_renderer_output(fig, FakeRenderer),
"""
opening figure
opening axes
draw path with 25 vertices
draw path with 4 vertices
closing axes
closing figure
""")
def test_multiaxes():
fig, ax = plt.subplots(2)
ax[0].plot(range(4))
ax[1].plot(range(10))
_assert_output_equal(fake_renderer_output(fig, FakeRenderer),
"""
opening figure
opening axes
draw path with 4 vertices
closing axes
opening axes
draw path with 10 vertices
closing axes
closing figure
""")
def test_image():
np.random.seed(0) # image size depends on the seed
fig, ax = plt.subplots()
ax.imshow(np.random.random((10, 10)),
cmap=plt.cm.jet, interpolation='nearest')
_assert_output_equal(fake_renderer_output(fig, FakeRenderer),
"""
opening figure
opening axes
draw image of size 2848
closing axes
closing figure
""")
def test_legend():
fig, ax = plt.subplots()
ax.plot([1, 2, 3], label='label')
ax.legend().set_visible(False)
_assert_output_equal(fake_renderer_output(fig, FakeRenderer),
"""
opening figure
opening axes
draw path with 3 vertices
opening legend
closing legend
closing axes
closing figure
""")
def test_legend_dots():
fig, ax = plt.subplots()
ax.plot([1, 2, 3], label='label')
ax.plot([2, 2, 2], 'o', label='dots')
ax.legend().set_visible(True)
_assert_output_equal(fake_renderer_output(fig, FullFakeRenderer),
"""
opening figure
opening axes
draw line with 3 points
draw 3 markers
opening legend
draw line with 2 points
draw text 'label' None
draw 2 markers
draw text 'dots' None
draw path with 5 vertices
closing legend
closing axes
closing figure
""")
def test_blended():
fig, ax = plt.subplots()
ax.axvline(0)
assert_warns(UserWarning, fake_renderer_output, fig, FakeRenderer)
|