Skip to content

Commit 3b49dc8

Browse files
committed
Expand testcases
1 parent ea82767 commit 3b49dc8

File tree

1 file changed

+212
-4
lines changed

1 file changed

+212
-4
lines changed

tests/unit/schema/v1/test_template_builder.py

Lines changed: 212 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def test_dimension_builder_state() -> None:
3131
builder = MDIODatasetBuilder("test_dataset")
3232

3333
# First dimension should change state to HAS_DIMENSIONS and create a variable
34-
builder = builder.add_dimension("x", 100, long_name="X Dimension")
34+
builder.add_dimension("x", 100, long_name="X Dimension")
3535
assert builder._state == _BuilderState.HAS_DIMENSIONS
3636
assert len(builder._dimensions) == 1 # noqa: PLR2004
3737
assert len(builder._variables) == 1 # noqa: PLR2004
@@ -43,7 +43,7 @@ def test_dimension_builder_state() -> None:
4343
assert builder._variables[0].dimensions[0].name == "x"
4444

4545
# Adding another dimension should maintain state and create another variable
46-
builder = builder.add_dimension("y", 200, data_type=ScalarType.UINT32)
46+
builder.add_dimension("y", 200, data_type=ScalarType.UINT32)
4747
assert builder._state == _BuilderState.HAS_DIMENSIONS
4848
assert len(builder._dimensions) == 2 # noqa: PLR2004
4949
assert len(builder._variables) == 2 # noqa: PLR2004
@@ -54,12 +54,12 @@ def test_dimension_builder_state() -> None:
5454
assert builder._variables[1].dimensions[0].name == "y"
5555

5656

57-
def test_dimension_with_metadata() -> None:
57+
def test_dimension_with_units() -> None:
5858
"""Test adding dimensions with custom metadata."""
5959
builder = MDIODatasetBuilder("test_dataset")
6060

6161
# Add dimension with custom metadata
62-
builder = builder.add_dimension(
62+
builder.add_dimension(
6363
"depth",
6464
size=100,
6565
data_type=ScalarType.FLOAT32,
@@ -73,6 +73,214 @@ def test_dimension_with_metadata() -> None:
7373
assert depth_var.metadata.units_v1.length == "m"
7474

7575

76+
def test_dimension_with_attributes() -> None:
77+
"""Test adding dimensions with attributes."""
78+
builder = MDIODatasetBuilder("test_dataset")
79+
80+
# Add dimension with attributes
81+
builder.add_dimension(
82+
"depth",
83+
size=100,
84+
data_type=ScalarType.FLOAT32,
85+
metadata={"attributes": {"MGA": 51}},
86+
)
87+
88+
assert len(builder._variables) == 1
89+
depth_var = builder._variables[0]
90+
assert depth_var.name == "depth"
91+
assert depth_var.data_type == ScalarType.FLOAT32
92+
assert depth_var.metadata.attributes["MGA"] == 51
93+
94+
95+
def test_dimension_with_chunk_grid() -> None:
96+
"""Test adding dimensions with chunk grid."""
97+
builder = MDIODatasetBuilder("test_dataset")
98+
99+
# Add dimension with chunk grid
100+
builder.add_dimension(
101+
"depth",
102+
size=100,
103+
data_type=ScalarType.FLOAT32,
104+
metadata={"chunkGrid": {"name": "regular", "configuration": {"chunkShape": [20]}}},
105+
)
106+
107+
assert len(builder._variables) == 1
108+
depth_var = builder._variables[0]
109+
assert depth_var.name == "depth"
110+
assert depth_var.data_type == ScalarType.FLOAT32
111+
assert depth_var.metadata.chunk_grid.name == "regular"
112+
assert depth_var.metadata.chunk_grid.configuration.chunk_shape == [20]
113+
114+
115+
def test_dimension_with_stats() -> None:
116+
"""Test adding dimensions with stats."""
117+
builder = MDIODatasetBuilder("test_dataset")
118+
119+
# Add dimension with stats
120+
builder.add_dimension(
121+
"depth",
122+
size=100,
123+
data_type=ScalarType.FLOAT32,
124+
metadata={
125+
"statsV1": {
126+
"count": 100,
127+
"sum": 1215.1,
128+
"sumSquares": 125.12,
129+
"min": 5.61,
130+
"max": 10.84,
131+
"histogram": {"binCenters": [1, 2], "counts": [10, 15]},
132+
}
133+
},
134+
)
135+
136+
assert len(builder._variables) == 1
137+
depth_var = builder._variables[0]
138+
assert depth_var.name == "depth"
139+
assert depth_var.data_type == ScalarType.FLOAT32
140+
assert depth_var.metadata.stats_v1.count == 100
141+
assert depth_var.metadata.stats_v1.sum == 1215.1
142+
143+
144+
def test_dimension_with_full_metadata() -> None:
145+
"""Test adding dimensions with all metadata."""
146+
builder = MDIODatasetBuilder("test_dataset")
147+
148+
# Add dimension with all metadata
149+
builder.add_dimension(
150+
"depth",
151+
size=100,
152+
data_type=ScalarType.FLOAT32,
153+
metadata={
154+
"unitsV1": {"length": "m"},
155+
"attributes": {"MGA": 51},
156+
"chunkGrid": {"name": "regular", "configuration": {"chunkShape": [20]}},
157+
"statsV1": {
158+
"count": 100,
159+
"sum": 1215.1,
160+
"sumSquares": 125.12,
161+
"min": 5.61,
162+
"max": 10.84,
163+
"histogram": {"binCenters": [1, 2], "counts": [10, 15]},
164+
},
165+
},
166+
)
167+
168+
assert len(builder._variables) == 1
169+
depth_var = builder._variables[0]
170+
assert depth_var.name == "depth"
171+
assert depth_var.data_type == ScalarType.FLOAT32
172+
assert depth_var.metadata.units_v1.length == "m"
173+
assert depth_var.metadata.attributes["MGA"] == 51
174+
assert depth_var.metadata.chunk_grid.name == "regular"
175+
assert depth_var.metadata.chunk_grid.configuration.chunk_shape == [20]
176+
assert depth_var.metadata.stats_v1.count == 100
177+
assert depth_var.metadata.stats_v1.sum == 1215.1
178+
assert depth_var.metadata.stats_v1.sum_squares == 125.12
179+
assert depth_var.metadata.stats_v1.min == 5.61
180+
assert depth_var.metadata.stats_v1.max == 10.84
181+
assert depth_var.metadata.stats_v1.histogram.bin_centers == [1, 2]
182+
assert depth_var.metadata.stats_v1.histogram.counts == [10, 15]
183+
184+
j = builder.build().json()
185+
print(j)
186+
187+
188+
def test_coordiante_with_units() -> None:
189+
"""Test adding coordinates with units."""
190+
builder = MDIODatasetBuilder("test_dataset")
191+
builder.add_dimension("inline", 100)
192+
builder.add_dimension("crossline", 100)
193+
194+
# Add coordinate with units
195+
builder.add_coordinate("cdp", dimensions=["inline", "crossline"], metadata={"unitsV1": {"length": "m"}})
196+
197+
assert len(builder._variables) == 2
198+
assert len(builder._coordinates) == 1
199+
cdp_var = builder._coordinates[0]
200+
assert cdp_var.name == "cdp"
201+
assert cdp_var.data_type == ScalarType.FLOAT32
202+
assert cdp_var.metadata.units_v1.length == "m"
203+
204+
def test_coordinate_with_attributes() -> None:
205+
"""Test adding coordinates with attributes."""
206+
builder = MDIODatasetBuilder("test_dataset")
207+
builder.add_dimension("inline", 100)
208+
builder.add_dimension("crossline", 100)
209+
210+
# Add coordinate with attributes
211+
builder.add_coordinate("cdp", dimensions=["inline", "crossline"], metadata={"attributes": {"MGA": 51}})
212+
213+
assert len(builder._variables) == 2
214+
assert len(builder._coordinates) == 1
215+
cdp_var = builder._coordinates[0]
216+
assert cdp_var.name == "cdp"
217+
assert cdp_var.data_type == ScalarType.FLOAT32
218+
assert cdp_var.metadata.attributes["MGA"] == 51
219+
220+
def test_coordinate_with_chunk_grid() -> None:
221+
"""Test adding coordinates with chunk grid."""
222+
builder = MDIODatasetBuilder("test_dataset")
223+
builder.add_dimension("inline", 100)
224+
builder.add_dimension("crossline", 100)
225+
226+
# Add coordinate with chunk grid
227+
builder.add_coordinate("cdp", dimensions=["inline", "crossline"], metadata={"chunkGrid": {"name": "regular", "configuration": {"chunkShape": [20, 20]}}})
228+
229+
assert len(builder._variables) == 2
230+
assert len(builder._coordinates) == 1
231+
cdp_var = builder._coordinates[0]
232+
assert cdp_var.name == "cdp"
233+
assert cdp_var.data_type == ScalarType.FLOAT32
234+
assert cdp_var.metadata.chunk_grid.name == "regular"
235+
assert cdp_var.metadata.chunk_grid.configuration.chunk_shape == [20, 20]
236+
237+
def test_coordinate_with_stats() -> None:
238+
"""Test adding coordinates with stats."""
239+
builder = MDIODatasetBuilder("test_dataset")
240+
builder.add_dimension("inline", 100)
241+
builder.add_dimension("crossline", 100)
242+
243+
# Add coordinate with stats
244+
builder.add_coordinate("cdp", dimensions=["inline", "crossline"], metadata={"statsV1": {"count": 100, "sum": 1215.1, "sumSquares": 125.12, "min": 5.61, "max": 10.84, "histogram": {"binCenters": [1, 2], "counts": [10, 15]}}})
245+
246+
assert len(builder._variables) == 2
247+
assert len(builder._coordinates) == 1
248+
cdp_var = builder._coordinates[0]
249+
assert cdp_var.name == "cdp"
250+
assert cdp_var.data_type == ScalarType.FLOAT32
251+
assert cdp_var.metadata.stats_v1.count == 100
252+
assert cdp_var.metadata.stats_v1.sum == 1215.1
253+
254+
def test_coordinate_with_full_metadata() -> None:
255+
"""Test adding coordinates with all metadata."""
256+
builder = MDIODatasetBuilder("test_dataset")
257+
builder.add_dimension("inline", 100)
258+
builder.add_dimension("crossline", 100)
259+
260+
# Add coordinate with all metadata
261+
builder.add_coordinate("cdp", dimensions=["inline", "crossline"], metadata={"unitsV1": {"length": "m"}, "attributes": {"MGA": 51}, "chunkGrid": {"name": "regular", "configuration": {"chunkShape": [20]}}, "statsV1": {"count": 100, "sum": 1215.1, "sumSquares": 125.12, "min": 5.61, "max": 10.84, "histogram": {"binCenters": [1, 2], "counts": [10, 15]}}})
262+
263+
assert len(builder._variables) == 2
264+
assert len(builder._coordinates) == 1
265+
cdp_var = builder._coordinates[0]
266+
assert cdp_var.name == "cdp"
267+
assert cdp_var.data_type == ScalarType.FLOAT32
268+
assert cdp_var.metadata.units_v1.length == "m"
269+
assert cdp_var.metadata.attributes["MGA"] == 51
270+
assert cdp_var.metadata.chunk_grid.name == "regular"
271+
assert cdp_var.metadata.chunk_grid.configuration.chunk_shape == [20]
272+
assert cdp_var.metadata.stats_v1.count == 100
273+
assert cdp_var.metadata.stats_v1.sum == 1215.1
274+
assert cdp_var.metadata.stats_v1.sum_squares == 125.12
275+
assert cdp_var.metadata.stats_v1.min == 5.61
276+
assert cdp_var.metadata.stats_v1.max == 10.84
277+
assert cdp_var.metadata.stats_v1.histogram.bin_centers == [1, 2]
278+
assert cdp_var.metadata.stats_v1.histogram.counts == [10, 15]
279+
280+
j = builder.build().json()
281+
print(j)
282+
283+
76284
def test_coordinate_builder_state() -> None:
77285
"""Test coordinate builder state transitions and functionality."""
78286
builder = MDIODatasetBuilder("test_dataset")

0 commit comments

Comments
 (0)