Skip to content

Commit

Permalink
Merge pull request #704 from DHI/test_coverage
Browse files Browse the repository at this point in the history
Improve test coverage
  • Loading branch information
ecomodeller committed Jun 27, 2024
2 parents 310e57a + a8910f7 commit b972a95
Show file tree
Hide file tree
Showing 6 changed files with 109 additions and 70 deletions.
85 changes: 45 additions & 40 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,46 +51,51 @@ MIKE IO is tested extensively.

See detailed test coverage report below:
```
---------- coverage: platform linux, python 3.11.1-final-0 -----------
Name Stmts Miss Cover
-----------------------------------------------------
mikeio/__init__.py 38 2 95%
mikeio/base.py 26 5 81%
mikeio/data_utils.py 111 5 95%
mikeio/dataarray.py 992 152 85%
mikeio/dataset.py 772 100 87%
mikeio/dfs0.py 299 24 92%
mikeio/dfs1.py 67 3 96%
mikeio/dfs2.py 188 8 96%
mikeio/dfs3.py 186 26 86%
mikeio/dfs.py 288 36 88%
mikeio/dfsu/__init__.py 3 0 100%
mikeio/dfsu/dfsu.py 592 56 91%
mikeio/dfsu/factory.py 41 2 95%
mikeio/dfsu/layered.py 180 20 89%
mikeio/dfsu/spectral.py 127 6 95%
mikeio/dfsutil.py 129 15 88%
mikeio/eum.py 1324 12 99%
mikeio/exceptions.py 25 8 68%
mikeio/generic.py 433 16 96%
mikeio/interpolation.py 60 5 92%
mikeio/pfs/__init__.py 4 0 100%
mikeio/pfs/pfsdocument.py 242 16 93%
mikeio/pfs/pfssection.py 220 9 96%
mikeio/spatial/FM_geometry.py 1118 102 91%
mikeio/spatial/FM_utils.py 293 30 90%
mikeio/spatial/__init__.py 0 0 100%
mikeio/spatial/crs.py 50 4 92%
mikeio/spatial/geometry.py 90 33 63%
mikeio/spatial/grid_geometry.py 558 42 92%
mikeio/spatial/utils.py 38 0 100%
mikeio/spectral.py 90 5 94%
mikeio/track.py 100 14 86%
mikeio/xyz.py 12 0 100%
-----------------------------------------------------
TOTAL 8696 756 91%
=========== 697 passed, 3 warnings in 46.01s ========
---------- coverage: platform linux, python 3.12.4-final-0 -----------
Name Stmts Miss Cover
-------------------------------------------------------------
mikeio/__init__.py 31 3 90%
mikeio/_interpolation.py 68 6 91%
mikeio/_spectral.py 97 7 93%
mikeio/_time.py 29 1 97%
mikeio/_track.py 103 14 86%
mikeio/dataset/__init__.py 3 0 100%
mikeio/dataset/_data_plot.py 358 38 89%
mikeio/dataset/_data_utils.py 20 0 100%
mikeio/dataset/_dataarray.py 730 52 93%
mikeio/dataset/_dataset.py 734 57 92%
mikeio/dfs/__init__.py 5 0 100%
mikeio/dfs/_dfs0.py 198 13 93%
mikeio/dfs/_dfs1.py 58 2 97%
mikeio/dfs/_dfs2.py 132 3 98%
mikeio/dfs/_dfs3.py 147 9 94%
mikeio/dfs/_dfs.py 290 18 94%
mikeio/dfsu/__init__.py 6 0 100%
mikeio/dfsu/_common.py 36 1 97%
mikeio/dfsu/_dfsu.py 223 7 97%
mikeio/dfsu/_factory.py 20 1 95%
mikeio/dfsu/_layered.py 190 7 96%
mikeio/dfsu/_mesh.py 54 8 85%
mikeio/dfsu/_spectral.py 214 36 83%
mikeio/eum/__init__.py 2 0 100%
mikeio/eum/_eum.py 1334 9 99%
mikeio/exceptions.py 24 4 83%
mikeio/generic.py 451 17 96%
mikeio/pfs/__init__.py 8 0 100%
mikeio/pfs/_pfsdocument.py 248 13 95%
mikeio/pfs/_pfssection.py 223 9 96%
mikeio/spatial/_FM_geometry.py 521 24 95%
mikeio/spatial/_FM_geometry_layered.py 415 30 93%
mikeio/spatial/_FM_geometry_spectral.py 94 9 90%
mikeio/spatial/_FM_utils.py 275 22 92%
mikeio/spatial/__init__.py 6 0 100%
mikeio/spatial/_geometry.py 78 8 90%
mikeio/spatial/_grid_geometry.py 639 45 93%
mikeio/spatial/_utils.py 39 0 100%
mikeio/spatial/crs.py 51 5 90%
mikeio/xyz.py 14 0 100%
-------------------------------------------------------------
TOTAL 8168 478 94%
```

## Cloud enabled
Expand Down
1 change: 1 addition & 0 deletions docs/_quarto.yml
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ quartodoc:
- dataset._data_plot._DataArrayPlotterGrid2D
- dataset._data_plot._DataArrayPlotterFM
- dataset._data_plot._DataArrayPlotterFMVerticalProfile
- dataset._data_plot._DataArrayPlotterFMVerticalColumn
- title: Geometry
desc: ""
contents:
Expand Down
35 changes: 24 additions & 11 deletions mikeio/dataset/_data_plot.py
Original file line number Diff line number Diff line change
Expand Up @@ -563,13 +563,22 @@ class _DataArrayPlotterFMVerticalColumn(_DataArrayPlotter):
Examples
--------
>>> ds = mikeio.read("oresund_sigma_z.dfsu")
>>> dsp = ds.sel(x=333934.1, y=6158101.5)
>>> da = dsp["Temperature"]
>>> dsp.plot()
>>> dsp.plot(extrapolate=False, marker='o')
>>> dsp.plot.pcolormesh()
>>> dsp.plot.hist()
```{python}
import mikeio
ds = mikeio.read("../data/oresund_sigma_z.dfsu")
dsp = ds.sel(x=333934.1, y=6158101.5)
da = dsp["Temperature"]
da.plot()
```
```{python}
da.plot(extrapolate=False, marker='o')
```
```{python}
da.plot.pcolormesh()
```
```{python}
da.plot.hist()
```
"""

def __call__(
Expand Down Expand Up @@ -659,10 +668,14 @@ class _DataArrayPlotterFMVerticalProfile(_DataArrayPlotter):
Examples
--------
>>> da = mikeio.read("oresund_vertical_slice.dfsu")["Temperature"]
>>> da.plot()
>>> da.plot.mesh()
>>> da.plot.hist()
```{python}
import mikeio
da = mikeio.read("../data/oresund_vertical_slice.dfsu")["Temperature"]
da.plot()
```
```{python}
da.plot.hist()
```
"""

def __call__(
Expand Down
18 changes: 0 additions & 18 deletions mikeio/dataset/_dataset.py
Original file line number Diff line number Diff line change
Expand Up @@ -1166,24 +1166,6 @@ def interp_like(

# ============= Combine/concat ===========

def _append_items(self, other: "Dataset") -> "Dataset":
item_names = {item.name for item in self.items}
other_names = {item.name for item in other.items}

overlap = other_names.intersection(item_names)
if len(overlap) != 0:
raise ValueError("Can not append items, names are not unique")

if not np.all(self.time == other.time):
# if not: create common time?
raise ValueError("All timesteps must match")

for key, value in other._data_vars.items():
if key != "Z coordinate":
self[key] = value

return self

@staticmethod
def concat(
datasets: Sequence["Dataset"], keep: Literal["last"] = "last"
Expand Down
33 changes: 33 additions & 0 deletions tests/test_dfsu_plot.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,3 +139,36 @@ def test_plot_non_utm_file():
ds = mikeio.read("tests/testdata/FakeLake_NONUTM.dfsu")
da = ds[0]
da.plot()


def test_plot_timeseries():
ds = mikeio.read("tests/testdata/HD2D.dfsu")

# just make sure it runs
ds["Surface elevation"].isel(element=0).plot.line()
ds["Surface elevation"].isel(time=-1).plot.line()


def test_plot_vertical_transect():
ds = mikeio.read("tests/testdata/oresund_sigma_z.dfsu")

dsp = ds.sel(x=333934.1, y=6158101.5)
da = dsp["Temperature"]
da.plot.pcolormesh()


def test_plot_point_spectrum():
# directional spectra
da = mikeio.read("tests/testdata/line_dir_spectra.dfsu")[0]
da.isel(node=4).plot()

# frequency spectra
da2 = mikeio.read("tests/testdata/line_freq_spectra.dfsu")[0]
da2_pt = da2.isel(node=4)
da2_pt.plot()

# 2d spectra
da_pt = mikeio.read("tests/testdata/pt_spectra.dfsu")[0]
da_pt.plot.patch()
da_pt.plot.contour()
da_pt.plot.contourf()
7 changes: 6 additions & 1 deletion tests/test_geometry_grid.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import numpy as np
import pytest
from mikeio import Mesh
from mikeio import Grid2D, Grid1D
from mikeio import Grid2D, Grid1D, Grid3D
from mikeio.spatial._FM_geometry import GeometryFM2D
from mikeio.spatial import GeometryUndefined
from mikeio.exceptions import OutsideModelDomainError
Expand Down Expand Up @@ -413,3 +413,8 @@ def test_bad_projection_raises_error():

with pytest.raises(ValueError, match="proj"):
Grid2D(nx=2, ny=2, dx=0.1, projection="Not a WKT projection string")


def test_grid3d_repr():
g = Grid3D(nx=2, ny=2, nz=2, dx=1, dy=1, dz=1, projection="UTM-33")
assert "Grid3D" in repr(g)

0 comments on commit b972a95

Please sign in to comment.