Skip to content

Commit e5c7d29

Browse files
committed
Add tests for new core object methods.
1 parent 5c59ad1 commit e5c7d29

File tree

2 files changed

+79
-1
lines changed

2 files changed

+79
-1
lines changed

tests/unit/core/test_NcData.py

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,5 +58,61 @@ def test(self, mocker):
5858
mocker.patch("ncdata.utils.ncdata_copy", mock_copycall)
5959
ncdata = NcData()
6060
result = ncdata.copy()
61-
assert mock_copycall.called_once_witk(mocker.call(ncdata))
61+
assert mock_copycall.call_args_list == [mocker.call(ncdata)]
6262
assert result == mock_copied_ncdata
63+
64+
65+
class Test_NcData_eq:
66+
# check that == calls dataset_differences
67+
def test(self, mocker):
68+
ncdata1, ncdata2 = [NcData(name) for name in ("data1", "data2")]
69+
called = mocker.patch("ncdata.utils.dataset_differences")
70+
ncdata1 == ncdata2
71+
assert called.call_args_list == [mocker.call(ncdata1, ncdata2)]
72+
73+
def test_self_equal(self, mocker):
74+
ds = NcData()
75+
called = mocker.patch("ncdata.utils.dataset_differences")
76+
assert ds == ds
77+
assert called.call_args_list == []
78+
79+
def test_badtype_nonequal(self, mocker):
80+
ds = NcData()
81+
called = mocker.patch("ncdata.utils.dataset_differences")
82+
assert ds != 1
83+
assert called.call_args_list == []
84+
85+
86+
class Test_NcVariable_slicer:
87+
# check that .slicer makes a slice.
88+
def test(self, mocker):
89+
ncdata1 = NcData()
90+
91+
dim_args = (1, 2, 3) # N.B. not actually acceptable for a real usage
92+
mock_return = mocker.sentinel.retval
93+
called = mocker.patch("ncdata.utils.Slicer", return_value=mock_return)
94+
result = ncdata1.slicer(*dim_args)
95+
96+
assert called.call_args_list == [mocker.call(ncdata1, *dim_args)]
97+
assert result == mock_return
98+
99+
100+
class Test_NcVariable_getitem:
101+
# check that data[*keys] calls data.slicer[*keys]
102+
def test(self, mocker):
103+
from ncdata.utils import Slicer
104+
105+
ncdata1 = NcData()
106+
107+
dim_keys = (1, 2, 3) # N.B. not actually acceptable for a real usage
108+
mock_slicer = mocker.MagicMock(spec=Slicer)
109+
called = mocker.patch(
110+
"ncdata._core.NcData.slicer", return_value=mock_slicer
111+
)
112+
result = ncdata1[*dim_keys]
113+
114+
assert called.call_args_list == [mocker.call()]
115+
assert mock_slicer.__getitem__.call_args_list == [
116+
mocker.call(dim_keys)
117+
]
118+
assert result == mock_slicer[dim_keys]

tests/unit/core/test_NcVariable.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import dask.array as da
88
import numpy as np
99
import pytest
10+
1011
from ncdata import NcVariable
1112
from ncdata.utils import variable_differences
1213

@@ -257,3 +258,24 @@ def test_populated(self):
257258
)
258259
result = var.copy()
259260
self.check_var_iscopy(result, var)
261+
262+
263+
class Test_NcVariable_eq:
264+
def test_equal(self, mocker):
265+
# Check that == calls variable_differences
266+
var1, var2 = [NcVariable(name=name) for name in ("x", "y")]
267+
called = mocker.patch("ncdata.utils.variable_differences")
268+
var1 == var2
269+
assert called.call_args_list == [mocker.call(var1, var2)]
270+
271+
def test_self_equal(self, mocker):
272+
var = NcVariable(name="x")
273+
called = mocker.patch("ncdata.utils.variable_differences")
274+
assert var == var
275+
assert called.call_args_list == []
276+
277+
def test_badtype_nonequal(self, mocker):
278+
var = NcVariable(name="x")
279+
called = mocker.patch("ncdata.utils.variable_differences")
280+
assert var != 1
281+
assert called.call_args_list == []

0 commit comments

Comments
 (0)