diff --git a/tests/resources/image/snapshot_boxplot.png b/tests/resources/image/snapshot_boxplot.png new file mode 100644 index 000000000..05aa3fa80 Binary files /dev/null and b/tests/resources/image/snapshot_boxplot.png differ diff --git a/tests/resources/image/snapshot_heatmap.png b/tests/resources/image/snapshot_heatmap.png new file mode 100644 index 000000000..eedf2950c Binary files /dev/null and b/tests/resources/image/snapshot_heatmap.png differ diff --git a/tests/resources/image/snapshot_histogram_numeric.png b/tests/resources/image/snapshot_histogram_numeric.png new file mode 100644 index 000000000..a56ca4a87 Binary files /dev/null and b/tests/resources/image/snapshot_histogram_numeric.png differ diff --git a/tests/resources/image/snapshot_histogram_str.png b/tests/resources/image/snapshot_histogram_str.png new file mode 100644 index 000000000..00e5e11b0 Binary files /dev/null and b/tests/resources/image/snapshot_histogram_str.png differ diff --git a/tests/resources/image/snapshot_lineplot.png b/tests/resources/image/snapshot_lineplot.png new file mode 100644 index 000000000..f08f85553 Binary files /dev/null and b/tests/resources/image/snapshot_lineplot.png differ diff --git a/tests/resources/image/snapshot_scatterplot.png b/tests/resources/image/snapshot_scatterplot.png new file mode 100644 index 000000000..819772918 Binary files /dev/null and b/tests/resources/image/snapshot_scatterplot.png differ diff --git a/tests/safeds/data/tabular/containers/_column/test_plot_boxplot.py b/tests/safeds/data/tabular/containers/_column/test_plot_boxplot.py index dab15248c..481d1aafa 100644 --- a/tests/safeds/data/tabular/containers/_column/test_plot_boxplot.py +++ b/tests/safeds/data/tabular/containers/_column/test_plot_boxplot.py @@ -1,29 +1,20 @@ -import _pytest -import matplotlib.pyplot as plt import pytest +from safeds.data.image.containers import Image from safeds.data.tabular.containers import Table from safeds.data.tabular.exceptions import NonNumericColumnError +from tests.helpers import resolve_resource_path -def test_plot_boxplot_complex() -> None: - with pytest.raises(NotImplementedError): # noqa: PT012 - table = Table.from_dict({"A": [1, 2, complex(1, -2)]}) - table.get_column("A").plot_boxplot() + +def test_should_match_snapshot() -> None: + table = Table.from_dict({"A": [1, 2, 3]}) + table.get_column("A").plot_boxplot() + current = table.get_column("A").plot_boxplot() + snapshot = Image.from_png_file(resolve_resource_path("./image/snapshot_boxplot.png")) + assert snapshot._image.tobytes() == current._image.tobytes() -def test_plot_boxplot_non_numeric() -> None: +def test_should_raise_if_column_contains_non_numerical_values() -> None: table = Table.from_dict({"A": [1, 2, "A"]}) with pytest.raises(NonNumericColumnError): table.get_column("A").plot_boxplot() - - -def test_plot_boxplot_float(monkeypatch: _pytest.monkeypatch) -> None: - monkeypatch.setattr(plt, "show", lambda: None) - table = Table.from_dict({"A": [1, 2, 3.5]}) - table.get_column("A").plot_boxplot() - - -def test_plot_boxplot_int(monkeypatch: _pytest.monkeypatch) -> None: - monkeypatch.setattr(plt, "show", lambda: None) - table = Table.from_dict({"A": [1, 2, 3]}) - table.get_column("A").plot_boxplot() diff --git a/tests/safeds/data/tabular/containers/_column/test_plot_histogram.py b/tests/safeds/data/tabular/containers/_column/test_plot_histogram.py index 24da311f1..c23391356 100644 --- a/tests/safeds/data/tabular/containers/_column/test_plot_histogram.py +++ b/tests/safeds/data/tabular/containers/_column/test_plot_histogram.py @@ -1,9 +1,18 @@ -import _pytest -import matplotlib.pyplot as plt +from safeds.data.image.containers import Image from safeds.data.tabular.containers import Table +from tests.helpers import resolve_resource_path -def test_plot_histogram(monkeypatch: _pytest.monkeypatch) -> None: - monkeypatch.setattr(plt, "show", lambda: None) + +def test_should_match_snapshot_numeric() -> None: table = Table.from_dict({"A": [1, 2, 3]}) - table.get_column("A").plot_histogram() + current = table.get_column("A").plot_histogram() + snapshot = Image.from_png_file(resolve_resource_path("./image/snapshot_histogram_numeric.png")) + assert snapshot._image.tobytes() == current._image.tobytes() + + +def test_should_match_snapshot_str() -> None: + table = Table.from_dict({"A": ["A", "B", "Apple"]}) + current = table.get_column("A").plot_histogram() + snapshot = Image.from_png_file(resolve_resource_path("./image/snapshot_histogram_str.png")) + assert snapshot._image.tobytes() == current._image.tobytes() diff --git a/tests/safeds/data/tabular/containers/_table/test_plot_correlation_heatmap.py b/tests/safeds/data/tabular/containers/_table/test_plot_correlation_heatmap.py index 7981acae0..f91c446e4 100644 --- a/tests/safeds/data/tabular/containers/_table/test_plot_correlation_heatmap.py +++ b/tests/safeds/data/tabular/containers/_table/test_plot_correlation_heatmap.py @@ -1,15 +1,11 @@ -import _pytest -import matplotlib.pyplot as plt +from safeds.data.image.containers import Image from safeds.data.tabular.containers import Table +from tests.helpers import resolve_resource_path -def test_plot_correlation_heatmap_non_numeric(monkeypatch: _pytest.monkeypatch) -> None: - monkeypatch.setattr(plt, "show", lambda: None) - table = Table.from_dict({"A": [1, 2, "A"], "B": [1, 2, 3]}) - table.plot_correlation_heatmap() - -def test_plot_correlation_heatmap(monkeypatch: _pytest.monkeypatch) -> None: - monkeypatch.setattr(plt, "show", lambda: None) - table = Table.from_dict({"A": [1, 2, 3.5], "B": [2, 4, 7]}) - table.plot_correlation_heatmap() +def test_should_match_snapshot() -> None: + table = Table.from_dict({"A": [1, 2, 3.5], "B": [0.2, 4, 77]}) + current = table.plot_correlation_heatmap() + legacy = Image.from_png_file(resolve_resource_path("./image/snapshot_heatmap.png")) + assert legacy._image.tobytes() == current._image.tobytes() diff --git a/tests/safeds/data/tabular/containers/_table/test_plot_lineplot.py b/tests/safeds/data/tabular/containers/_table/test_plot_lineplot.py index f1314c6c2..9d0dfdb1b 100644 --- a/tests/safeds/data/tabular/containers/_table/test_plot_lineplot.py +++ b/tests/safeds/data/tabular/containers/_table/test_plot_lineplot.py @@ -1,17 +1,19 @@ -import _pytest -import matplotlib.pyplot as plt import pytest +from safeds.data.image.containers import Image from safeds.data.tabular.containers import Table from safeds.data.tabular.exceptions import UnknownColumnNameError +from tests.helpers import resolve_resource_path -def test_plot_lineplot(monkeypatch: _pytest.monkeypatch) -> None: - monkeypatch.setattr(plt, "show", lambda: None) + +def test_should_match_snapshot() -> None: table = Table.from_dict({"A": [1, 2, 3], "B": [2, 4, 7]}) - table.plot_lineplot("A", "B") + current = table.plot_lineplot("A", "B") + snapshot = Image.from_png_file(resolve_resource_path("./image/snapshot_lineplot.png")) + assert snapshot._image.tobytes() == current._image.tobytes() -def test_plot_lineplot_wrong_column_name() -> None: +def test_should_raise_if_column_does_not_exist() -> None: table = Table.from_dict({"A": [1, 2, 3], "B": [2, 4, 7]}) with pytest.raises(UnknownColumnNameError): table.plot_lineplot("C", "A") diff --git a/tests/safeds/data/tabular/containers/_table/test_plot_scatterplot.py b/tests/safeds/data/tabular/containers/_table/test_plot_scatterplot.py index 21512f895..536d670eb 100644 --- a/tests/safeds/data/tabular/containers/_table/test_plot_scatterplot.py +++ b/tests/safeds/data/tabular/containers/_table/test_plot_scatterplot.py @@ -1,17 +1,19 @@ -import _pytest -import matplotlib.pyplot as plt import pytest +from safeds.data.image.containers import Image from safeds.data.tabular.containers import Table from safeds.data.tabular.exceptions import UnknownColumnNameError +from tests.helpers import resolve_resource_path -def test_plot_scatterplot(monkeypatch: _pytest.monkeypatch) -> None: - monkeypatch.setattr(plt, "show", lambda: None) + +def test_should_match_snapshot() -> None: table = Table.from_dict({"A": [1, 2, 3], "B": [2, 4, 7]}) - table.plot_scatterplot("A", "B") + current = table.plot_scatterplot("A", "B") + snapshot = Image.from_png_file(resolve_resource_path("./image/snapshot_scatterplot.png")) + assert snapshot._image.tobytes() == current._image.tobytes() -def test_plot_scatterplot_wrong_column_name() -> None: +def test_should_raise_if_column_does_not_exist() -> None: table = Table.from_dict({"A": [1, 2, 3], "B": [2, 4, 7]}) with pytest.raises(UnknownColumnNameError): table.plot_scatterplot("C", "A")