Skip to content

Commit

Permalink
Use parametrized tests
Browse files Browse the repository at this point in the history
  • Loading branch information
astrofrog committed Aug 3, 2020
1 parent f114457 commit 774de4a
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 62 deletions.
50 changes: 19 additions & 31 deletions regions/shapes/tests/test_ellipse.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@ def test_rotate(self):
assert_allclose(reg.center.xy, (1, 4))
assert_allclose(reg.angle.to_value("deg"), 95)

def test_as_mpl_selector(self):
@pytest.mark.parametrize('sync', (False, True))
def test_as_mpl_selector(self, sync):

plt = pytest.importorskip('matplotlib.pyplot')

Expand All @@ -102,7 +103,7 @@ def update_mask(reg):

region = self.reg.copy(angle=0 * u.deg)

selector = region.as_mpl_selector(ax, callback=update_mask, sync=True) # noqa
selector = region.as_mpl_selector(ax, callback=update_mask, sync=sync) # noqa

x, y = ax.transData.transform([[7.3, 4.4]])[0]
ax.figure.canvas.button_press_event(x, y, 1)
Expand All @@ -113,41 +114,28 @@ def update_mask(reg):

ax.figure.canvas.draw()

assert_allclose(region.center.x, 8.3)
assert_allclose(region.center.y, 4.9)
assert_allclose(region.width, 2)
assert_allclose(region.height, 1)
assert_quantity_allclose(region.angle, 0 * u.deg)
if sync:

assert_equal(mask, region.to_mask(mode='subpixels', subpixels=10).to_image(data.shape))
assert_allclose(region.center.x, 8.3)
assert_allclose(region.center.y, 4.9)
assert_allclose(region.width, 2)
assert_allclose(region.height, 1)
assert_quantity_allclose(region.angle, 0 * u.deg)

with pytest.raises(Exception, match='Cannot attach more than one selector to a region.'):
region.as_mpl_selector(ax)

# Make sure the region doesn't change if sync=False
assert_equal(mask, region.to_mask(mode='subpixels', subpixels=10).to_image(data.shape))

region2 = self.reg.copy(angle=0 * u.deg)
mask[:] = 0
else:

selector = region2.as_mpl_selector(ax, callback=update_mask, sync=False) # noqa
assert_allclose(region.center.x, 3)
assert_allclose(region.center.y, 4)
assert_allclose(region.width, 4)
assert_allclose(region.height, 3)
assert_quantity_allclose(region.angle, 0 * u.deg)

x, y = ax.transData.transform([[5.3, 4.4]])[0]
ax.figure.canvas.button_press_event(x, y, 1)
x, y = ax.transData.transform([[7.3, 5.4]])[0]
ax.figure.canvas.motion_notify_event(x, y, 1)
x, y = ax.transData.transform([[7.3, 5.4]])[0]
ax.figure.canvas.button_release_event(x, y, 1)
assert_equal(mask, 0)

ax.figure.canvas.draw()

# The region parameters haven't changed and the mask is still empty
assert_allclose(region2.center.x, 3)
assert_allclose(region2.center.y, 4)
assert_allclose(region2.width, 4)
assert_allclose(region2.height, 3)
assert_quantity_allclose(region2.angle, 0 * u.deg)

assert_equal(mask, 0)
with pytest.raises(Exception, match='Cannot attach more than one selector to a region.'):
region.as_mpl_selector(ax)


class TestEllipseSkyRegion(BaseTestSkyRegion):
Expand Down
50 changes: 19 additions & 31 deletions regions/shapes/tests/test_rectangle.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,8 @@ def test_rotate(self):
assert_allclose(reg.center.xy, (1, 4))
assert_allclose(reg.angle.to_value("deg"), 95)

def test_as_mpl_selector(self):
@pytest.mark.parametrize('sync', (False, True))
def test_as_mpl_selector(self, sync):

plt = pytest.importorskip('matplotlib.pyplot')

Expand All @@ -127,7 +128,7 @@ def update_mask(reg):

region = self.reg.copy(angle=0 * u.deg)

selector = region.as_mpl_selector(ax, callback=update_mask, sync=True) # noqa
selector = region.as_mpl_selector(ax, callback=update_mask, sync=sync) # noqa

x, y = ax.transData.transform([[7.3, 4.4]])[0]
ax.figure.canvas.button_press_event(x, y, 1)
Expand All @@ -138,41 +139,28 @@ def update_mask(reg):

ax.figure.canvas.draw()

assert_allclose(region.center.x, 8.3)
assert_allclose(region.center.y, 4.9)
assert_allclose(region.width, 2)
assert_allclose(region.height, 1)
assert_quantity_allclose(region.angle, 0 * u.deg)
if sync:

assert_equal(mask, region.to_mask(mode='subpixels', subpixels=10).to_image(data.shape))
assert_allclose(region.center.x, 8.3)
assert_allclose(region.center.y, 4.9)
assert_allclose(region.width, 2)
assert_allclose(region.height, 1)
assert_quantity_allclose(region.angle, 0 * u.deg)

with pytest.raises(Exception, match='Cannot attach more than one selector to a region.'):
region.as_mpl_selector(ax)

# Make sure the region doesn't change if sync=False

region2 = self.reg.copy(angle=0 * u.deg)
mask[:] = 0
assert_equal(mask, region.to_mask(mode='subpixels', subpixels=10).to_image(data.shape))

selector = region2.as_mpl_selector(ax, callback=update_mask, sync=False) # noqa

x, y = ax.transData.transform([[7.3, 4.4]])[0]
ax.figure.canvas.button_press_event(x, y, 1)
x, y = ax.transData.transform([[9.3, 5.4]])[0]
ax.figure.canvas.motion_notify_event(x, y, 1)
x, y = ax.transData.transform([[9.3, 5.4]])[0]
ax.figure.canvas.button_release_event(x, y, 1)
else:

ax.figure.canvas.draw()
assert_allclose(region.center.x, 3)
assert_allclose(region.center.y, 4)
assert_allclose(region.width, 4)
assert_allclose(region.height, 3)
assert_quantity_allclose(region.angle, 0 * u.deg)

# The region parameters haven't changed and the mask is still empty
assert_allclose(region2.center.x, 3)
assert_allclose(region2.center.y, 4)
assert_allclose(region2.width, 4)
assert_allclose(region2.height, 3)
assert_quantity_allclose(region2.angle, 0 * u.deg)
assert_equal(mask, 0)

assert_equal(mask, 0)
with pytest.raises(Exception, match='Cannot attach more than one selector to a region.'):
region.as_mpl_selector(ax)


def test_rectangular_pixel_region_bbox():
Expand Down

0 comments on commit 774de4a

Please sign in to comment.