Skip to content

Commit

Permalink
Merge 93048ca into 9a09cd1
Browse files Browse the repository at this point in the history
  • Loading branch information
pgkirsch committed Oct 23, 2021
2 parents 9a09cd1 + 93048ca commit a7b603c
Show file tree
Hide file tree
Showing 24 changed files with 51 additions and 36 deletions.
10 changes: 10 additions & 0 deletions gpfit/tests/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
## Plot unit tests

Plot unit tests are run with [pytest-mpl](https://github.com/matplotlib/pytest-mpl)

To generate the baseline images:
`pytest --mpl-generate-path=baseline t_plot_fit.py`

To test against the baseline images:
`pytest --mpl t_plot_fit.py`

Binary file removed gpfit/tests/artifacts/isma_test.png
Binary file not shown.
Binary file removed gpfit/tests/artifacts/isma_test_slices.png
Binary file not shown.
Binary file removed gpfit/tests/artifacts/isma_test_surface.png
Binary file not shown.
Binary file removed gpfit/tests/artifacts/ma_test.png
Binary file not shown.
Binary file removed gpfit/tests/artifacts/ma_test_slices.png
Binary file not shown.
Binary file removed gpfit/tests/artifacts/ma_test_surface.png
Binary file not shown.
Binary file removed gpfit/tests/artifacts/sma_test.png
Binary file not shown.
Binary file removed gpfit/tests/artifacts/sma_test_slices.png
Binary file not shown.
Binary file removed gpfit/tests/artifacts/sma_test_surface.png
Binary file not shown.
File renamed without changes.
File renamed without changes.
Binary file added gpfit/tests/baseline/isma_1d.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added gpfit/tests/baseline/isma_2d_slices.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added gpfit/tests/baseline/isma_2d_surface.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added gpfit/tests/baseline/ma_1d.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added gpfit/tests/baseline/ma_2d_slices.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added gpfit/tests/baseline/ma_2d_surface.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added gpfit/tests/baseline/sma_1d.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added gpfit/tests/baseline/sma_2d_slices.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added gpfit/tests/baseline/sma_2d_surface.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 0 additions & 3 deletions gpfit/tests/run_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@
from gpfit.tests import t_print_fit
TESTS += t_print_fit.TESTS

from gpfit.tests import t_plot_fit
TESTS += t_plot_fit.TESTS

from gpfit.tests import t_examples
TESTS += t_examples.TESTS

Expand Down
65 changes: 33 additions & 32 deletions gpfit/tests/t_plot_fit.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
"unit tests for plot fit methods"
import unittest
import pytest
import numpy as np
from gpfit.fit import MaxAffine, SoftmaxAffine, ImplicitSoftmaxAffine

SEED = 33404

class TestPlot(unittest.TestCase):

class TestPlot:
"Unit tests for plot methods"

N = 51
Expand All @@ -14,23 +16,26 @@ class TestPlot(unittest.TestCase):
y = np.log(w)
K = 2

@pytest.mark.mpl_image_compare(filename='ma_1d.png')
def test_max_affine(self):
f = MaxAffine(self.x, self.y, self.K)
f = MaxAffine(self.x, self.y, self.K, seed=SEED)
fig, _ = f.plot()
fig.savefig("artifacts/ma_test.png")
return fig

@pytest.mark.mpl_image_compare(filename='sma_1d.png')
def test_softmax_affine(self):
f = SoftmaxAffine(self.x, self.y, self.K)
f = SoftmaxAffine(self.x, self.y, self.K, seed=SEED)
fig, _ = f.plot()
fig.savefig("artifacts/sma_test.png")
return fig

@pytest.mark.mpl_image_compare(filename='isma_1d.png')
def test_implicit_softmax_affine(self):
f = ImplicitSoftmaxAffine(self.x, self.y, self.K)
f = ImplicitSoftmaxAffine(self.x, self.y, self.K, seed=SEED)
fig, _ = f.plot()
fig.savefig("artifacts/isma_test.png")
return fig


class TestPlotSurface(unittest.TestCase):
class TestPlotSurface:
"Unit tests for plot_surface methods"

rng = np.random.RandomState(33404)
Expand All @@ -42,23 +47,26 @@ class TestPlotSurface(unittest.TestCase):
y = np.log(P)
K = 3

@pytest.mark.mpl_image_compare(filename='ma_2d_surface.png')
def test_max_affine(self):
f = MaxAffine(self.x, self.y, self.K)
f = MaxAffine(self.x, self.y, self.K, seed=SEED)
fig, _ = f.plot_surface(azim=135)
fig.savefig("artifacts/ma_test_surface.png")
return fig

@pytest.mark.mpl_image_compare(filename='sma_2d_surface.png')
def test_softmax_affine(self):
f = SoftmaxAffine(self.x, self.y, self.K)
f = SoftmaxAffine(self.x, self.y, self.K, seed=SEED)
fig, _ = f.plot_surface(azim=135)
fig.savefig("artifacts/sma_test_surface.png")
return fig

@pytest.mark.mpl_image_compare(filename='isma_2d_surface.png')
def test_implicit_softmax_affine(self):
f = ImplicitSoftmaxAffine(self.x, self.y, self.K)
f = ImplicitSoftmaxAffine(self.x, self.y, self.K, seed=SEED)
fig, _ = f.plot_surface(azim=135)
fig.savefig("artifacts/isma_test_surface.png")
return fig


class TestPlotSlices(unittest.TestCase):
class TestPlotSlices:
"Unit tests for plot_slices method"

Vdd = np.linspace(1, 2, 10)
Expand All @@ -71,33 +79,26 @@ class TestPlotSlices(unittest.TestCase):
y = np.log(P)
K = 3

@pytest.mark.mpl_image_compare(filename='ma_2d_slices.png')
def test_max_affine(self):
f = MaxAffine(self.x, self.y, self.K)
f = MaxAffine(self.x, self.y, self.K, seed=SEED)
fig, _ = f.plot_slices()
fig.savefig("artifacts/ma_test_slices.png")
return fig

@pytest.mark.mpl_image_compare(filename='sma_2d_slices.png')
def test_softmax_affine(self):
f = SoftmaxAffine(self.x, self.y, self.K)
f = SoftmaxAffine(self.x, self.y, self.K, seed=SEED)
fig, _ = f.plot_slices()
fig.savefig("artifacts/sma_test_slices.png")
return fig

@pytest.mark.mpl_image_compare(filename='isma_2d_slices.png')
def test_implicit_softmax_affine(self):
f = ImplicitSoftmaxAffine(self.x, self.y, self.K)
f = ImplicitSoftmaxAffine(self.x, self.y, self.K, seed=SEED)
fig, _ = f.plot_slices()
fig.savefig("artifacts/isma_test_slices.png")

return fig

TESTS = [
TestPlot,
TestPlotSurface,
TestPlotSlices,
]

if __name__ == '__main__':
SUITE = unittest.TestSuite()
LOADER = unittest.TestLoader()

for t in TESTS:
SUITE.addTests(LOADER.loadTestsFromTestCase(t))

unittest.TextTestRunner(verbosity=2).run(SUITE)
9 changes: 8 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,14 @@
author_email="gpkit@mit.edu",
url="https://github.com/convexengineering/gpfit",
python_requires=">=3.4",
install_requires=["numpy", "scipy", "gpkit", "matplotlib"],
install_requires=[
"numpy",
"scipy",
"gpkit",
"matplotlib==3.3.2",
"pytest==6.2.5",
"pytest-mpl==0.13",
],
version="0.2.0",
packages=["gpfit", "gpfit.maths", "gpfit.tests", "gpfit.xfoil"],
include_package_data=True,
Expand Down

0 comments on commit a7b603c

Please sign in to comment.