Skip to content

Commit a87eac4

Browse files
committed
Clean up some tests
1 parent 40d7bdc commit a87eac4

File tree

7 files changed

+158
-359
lines changed

7 files changed

+158
-359
lines changed

tests/test_dataset.py

Lines changed: 7 additions & 164 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import pytest
66

77
import mikeio
8-
from mikeio import EUMType, ItemInfo, EUMUnit, Dataset
8+
from mikeio import EUMType, ItemInfo, Dataset
99
from mikeio.exceptions import OutsideModelDomainError
1010

1111

@@ -86,8 +86,6 @@ def test_properties(ds1: Dataset) -> None:
8686
assert ds1.geometry.nx == 7
8787
assert ds1._zn is None
8888

89-
# assert not hasattr(ds1, "keys") # TODO: remove this
90-
# assert not hasattr(ds1, "values") # TODO: remove this
9189
assert isinstance(ds1.items[0], ItemInfo)
9290

9391

@@ -328,7 +326,6 @@ def test_select_multiple_items_by_name() -> None:
328326
data = [d1, d2, d3]
329327

330328
time = pd.date_range("2000-1-2", freq="h", periods=nt)
331-
# items = [ItemInfo("Foo"), ItemInfo("Bar"), ItemInfo("Baz")]
332329
items = [ItemInfo(x) for x in ["Foo", "Bar", "Baz"]]
333330
ds = mikeio.Dataset.from_numpy(data=data, time=time, items=items)
334331

@@ -387,17 +384,15 @@ def test_decribe(ds1: Dataset) -> None:
387384
assert df.Foo["max"] == pytest.approx(0.1)
388385

389386

390-
def test_create_undefined() -> None:
387+
def test_create_undefined_eum_type() -> None:
391388
nt = 100
392389
d1 = np.zeros([nt])
393390
d2 = np.zeros([nt])
394391

395392
time = pd.date_range("2000-1-2", freq="h", periods=nt)
396393
data = {
397-
"Item 1": mikeio.DataArray(
398-
data=d1, time=time, item=ItemInfo("Item 1")
399-
), # TODO redundant name
400-
"Item 2": mikeio.DataArray(data=d2, time=time, item=ItemInfo("Item 2")),
394+
"Item 1": mikeio.DataArray(d1, time=time),
395+
"Item 2": mikeio.DataArray(d2, time=time),
401396
}
402397

403398
ds = mikeio.Dataset(data)
@@ -421,7 +416,6 @@ def test_to_dataframe_single_timestep() -> None:
421416
df = ds.to_dataframe()
422417

423418
assert "Bar" in df.columns
424-
# assert isinstance(df.index, pd.DatetimeIndex)
425419

426420
df2 = ds.to_pandas()
427421
assert df2.shape == (1, 2)
@@ -467,18 +461,6 @@ def test_multidimensional_to_dataframe_no_supported() -> None:
467461
ds.to_dataframe()
468462

469463

470-
def test_get_data() -> None:
471-
data = []
472-
nt = 100
473-
d = np.zeros([nt, 100, 30]) + 1.0
474-
data.append(d)
475-
time = pd.date_range("2000-1-2", freq="h", periods=nt)
476-
items = [ItemInfo("Foo")]
477-
ds = mikeio.Dataset.from_numpy(data=data, time=time, items=items)
478-
479-
assert ds.shape == (100, 100, 30)
480-
481-
482464
def test_interp_time() -> None:
483465
nt = 4
484466
d = np.zeros([nt, 10, 3])
@@ -508,27 +490,20 @@ def test_interp_time() -> None:
508490

509491

510492
def test_interp_time_to_other_dataset() -> None:
511-
# Arrange
512-
## mikeio.Dataset 1
513493
nt = 4
514494
data = [np.zeros([nt, 10, 3])]
515495
time = pd.date_range("2000-1-1", freq="D", periods=nt)
516496
items = [ItemInfo("Foo")]
517497
ds1 = mikeio.Dataset.from_numpy(data=data, time=time, items=items)
518-
assert ds1.shape == (nt, 10, 3)
519498

520-
## mikeio.Dataset 2
521499
nt = 12
522500
data = [np.ones([nt, 10, 3])]
523501
time = pd.date_range("2000-1-1", freq="h", periods=nt)
524502
items = [ItemInfo("Foo")]
525503
ds2 = mikeio.Dataset.from_numpy(data=data, time=time, items=items)
526504

527-
# Act
528-
## interp
529505
dsi = ds1.interp_time(dt=ds2.time)
530506

531-
# Assert
532507
assert dsi.time[0] == ds2.time[0]
533508
assert dsi.time[-1] == ds2.time[-1]
534509
assert len(dsi.time) == len(ds2.time)
@@ -540,8 +515,6 @@ def test_interp_time_to_other_dataset() -> None:
540515

541516

542517
def test_extrapolate() -> None:
543-
# Arrange
544-
## mikeio.Dataset 1
545518
nt = 2
546519
data = [np.zeros([nt, 10, 3])]
547520
time = pd.date_range("2000-1-1", freq="D", periods=nt)
@@ -556,11 +529,8 @@ def test_extrapolate() -> None:
556529
items = [ItemInfo("Foo")]
557530
ds2 = mikeio.Dataset.from_numpy(data=data, time=time, items=items)
558531

559-
# Act
560-
## interp
561532
dsi = ds1.interp_time(dt=ds2.time, fill_value=1.0)
562533

563-
# Assert
564534
assert dsi.time[0] == ds2.time[0]
565535
assert dsi.time[-1] == ds2.time[-1]
566536
assert len(dsi.time) == len(ds2.time)
@@ -589,23 +559,9 @@ def test_extrapolate_not_allowed() -> None:
589559
ds1.interp_time(dt=ds2.time, fill_value=1.0, extrapolate=False)
590560

591561

592-
def test_get_data_2() -> None:
593-
nt = 100
594-
data = []
595-
d = np.zeros([nt, 100, 30]) + 1.0
596-
data.append(d)
597-
time = pd.date_range("2000-1-2", freq="h", periods=nt)
598-
items = [ItemInfo("Foo")]
599-
mikeio.Dataset.from_numpy(data=data, time=time, items=items)
600-
601-
assert data[0].shape == (100, 100, 30)
602-
603-
604562
def test_get_data_name() -> None:
605563
nt = 100
606-
data = []
607-
d = np.zeros([nt, 100, 30]) + 1.0
608-
data.append(d)
564+
data = [np.zeros([nt, 100, 30]) + 1.0]
609565
time = pd.date_range("2000-1-2", freq="h", periods=nt)
610566
items = [ItemInfo("Foo")]
611567
ds = mikeio.Dataset.from_numpy(data=data, time=time, items=items)
@@ -629,19 +585,6 @@ def test_modify_selected_variable() -> None:
629585
assert ds.Foo.to_numpy()[0, 0] == 1.0 # type: ignore
630586

631587

632-
def test_get_bad_name() -> None:
633-
nt = 100
634-
data = []
635-
d = np.zeros([100, 100, 30]) + 1.0
636-
data.append(d)
637-
time = pd.date_range("2000-1-2", freq="h", periods=nt)
638-
items = [ItemInfo("Foo")]
639-
ds = mikeio.Dataset.from_numpy(data=data, time=time, items=items)
640-
641-
with pytest.raises(Exception):
642-
ds["BAR"]
643-
644-
645588
def test_flipud() -> None:
646589
nt = 2
647590
d = np.random.random([nt, 100, 30])
@@ -656,37 +599,16 @@ def test_flipud() -> None:
656599
assert dsud["Foo"].to_numpy()[0, 0, 0] == ds["Foo"].to_numpy()[0, -1, 0]
657600

658601

659-
def test_aggregation_workflows(tmp_path: Path) -> None:
660-
# TODO move to integration tests
661-
filename = "tests/testdata/HD2D.dfsu"
662-
dfs = mikeio.Dfsu2DH(filename)
663-
664-
ds = dfs.read(items=["Surface elevation", "Current speed"])
665-
ds2 = ds.max(axis=1)
666-
667-
outfilename = tmp_path / "max.dfs0"
668-
ds2.to_dfs(outfilename)
669-
assert outfilename.exists()
670-
671-
ds3 = ds.min(axis=1)
672-
673-
outfilename = tmp_path / "min.dfs0"
674-
ds3.to_dfs(outfilename)
675-
assert outfilename.exists()
676-
677-
678602
def test_aggregation_dataset_no_time() -> None:
679-
filename = "tests/testdata/HD2D.dfsu"
680-
dfs = mikeio.Dfsu2DH(filename)
603+
dfs = mikeio.Dfsu2DH("tests/testdata/HD2D.dfsu")
681604
ds = dfs.read(time=-1, items=["Surface elevation", "Current speed"])
682605

683606
ds2 = ds.max()
684607
assert ds2["Current speed"].values == pytest.approx(1.6463733)
685608

686609

687610
def test_aggregations() -> None:
688-
filename = "tests/testdata/gebco_sound.dfs2"
689-
ds = mikeio.read(filename)
611+
ds = mikeio.read("tests/testdata/gebco_sound.dfs2")
690612

691613
for axis in [0, 1, 2]:
692614
ds.mean(axis=axis)
@@ -718,21 +640,6 @@ def test_to_dfs_extension_validation(tmp_path: Path) -> None:
718640
assert "dfsu" in str(excinfo.value)
719641

720642

721-
def test_weighted_average(tmp_path: Path) -> None:
722-
# TODO move to integration tests
723-
fp = Path("tests/testdata/HD2D.dfsu")
724-
dfs = mikeio.Dfsu2DH(fp)
725-
726-
ds = dfs.read(items=["Surface elevation", "Current speed"])
727-
728-
area = dfs.geometry.get_element_area()
729-
ds2 = ds.average(weights=area, axis=1)
730-
731-
out_path = tmp_path / "average.dfs0"
732-
ds2.to_dfs(out_path)
733-
assert out_path.exists()
734-
735-
736643
def test_quantile_axis1(ds1: Dataset) -> None:
737644
dsq = ds1.quantile(q=0.345, axis=1)
738645
assert dsq[0].to_numpy()[0] == 0.1
@@ -867,70 +774,6 @@ def test_dropna() -> None:
867774
assert ds2.n_timesteps == 8
868775

869776

870-
def test_default_type() -> None:
871-
item = ItemInfo("Foo")
872-
assert item.type == EUMType.Undefined
873-
assert repr(item.unit) == "undefined"
874-
875-
876-
def test_int_is_valid_type_info() -> None:
877-
item = ItemInfo("Foo", 100123)
878-
assert item.type == EUMType.Viscosity
879-
880-
item = ItemInfo("U", 100002)
881-
assert item.type == EUMType.Wind_Velocity
882-
883-
884-
def test_int_is_valid_unit_info() -> None:
885-
item = ItemInfo("U", 100002, 2000)
886-
assert item.type == EUMType.Wind_Velocity
887-
assert item.unit == EUMUnit.meter_per_sec
888-
assert repr(item.unit) == "meter per sec" # TODO replace _per_ with /
889-
890-
891-
def test_default_unit_from_type() -> None:
892-
item = ItemInfo("Foo", EUMType.Water_Level)
893-
assert item.type == EUMType.Water_Level
894-
assert item.unit == EUMUnit.meter
895-
assert repr(item.unit) == "meter"
896-
897-
item = ItemInfo("Tp", EUMType.Wave_period)
898-
assert item.type == EUMType.Wave_period
899-
assert item.unit == EUMUnit.second
900-
assert repr(item.unit) == "second"
901-
902-
item = ItemInfo("Temperature", EUMType.Temperature)
903-
assert item.type == EUMType.Temperature
904-
assert item.unit == EUMUnit.degree_Celsius
905-
assert repr(item.unit) == "degree Celsius"
906-
907-
908-
def test_default_name_from_type() -> None:
909-
item = ItemInfo(EUMType.Current_Speed)
910-
assert item.name == "Current Speed"
911-
assert item.unit == EUMUnit.meter_per_sec
912-
913-
item2 = ItemInfo(EUMType.Current_Direction, EUMUnit.degree)
914-
assert item2.unit == EUMUnit.degree
915-
item3 = ItemInfo(
916-
"Current direction (going to)", EUMType.Current_Direction, EUMUnit.degree
917-
)
918-
assert item3.type == EUMType.Current_Direction
919-
assert item3.unit == EUMUnit.degree
920-
921-
922-
def test_iteminfo_string_type_should_fail_with_helpful_message() -> None:
923-
with pytest.raises(ValueError):
924-
ItemInfo("Water level", "Water level") # type: ignore
925-
926-
927-
def test_item_search() -> None:
928-
res = EUMType.search("level")
929-
930-
assert len(res) > 0
931-
assert isinstance(res[0], EUMType)
932-
933-
934777
def test_dfsu3d_dataset() -> None:
935778
filename = "tests/testdata/oresund_sigma_z.dfsu"
936779

0 commit comments

Comments
 (0)