@@ -23,9 +23,49 @@ def test_chunk_shape_assignment_exception(self) -> None:
2323 template = Seismic2DPostStackTemplate ("time" )
2424 template .build_dataset ("test" , (50 , 50 ))
2525
26- with pytest .raises (ValueError , match = "Chunk shape.*does not match dimension sizes " ):
26+ with pytest .raises (ValueError , match = "Chunk shape.*has.*dimensions, expected " ):
2727 template .full_chunk_shape = (32 , 32 , 32 )
2828
29+ def test_chunk_shape_with_minus_one_before_build (self ) -> None :
30+ """Test that chunk shape can be set with -1 before build_dataset."""
31+ template = Seismic2DPostStackTemplate ("time" )
32+
33+ # Should be able to set chunk shape with -1 before build_dataset
34+ template .full_chunk_shape = (32 , - 1 )
35+
36+ # Before build_dataset, getter should return unexpanded values
37+ assert template .full_chunk_shape == (32 , - 1 )
38+ assert template ._var_chunk_shape == (32 , - 1 )
39+
40+ def test_chunk_shape_with_minus_one_after_build (self ) -> None :
41+ """Test that -1 values are expanded after build_dataset."""
42+ template = Seismic2DPostStackTemplate ("time" )
43+ template .full_chunk_shape = (32 , - 1 )
44+
45+ # Build dataset with specific sizes
46+ template .build_dataset ("test" , (100 , 200 ))
47+
48+ # After build_dataset, getter should expand -1 to dimension size
49+ assert template .full_chunk_shape == (32 , 200 )
50+ assert template ._var_chunk_shape == (32 , - 1 ) # Internal storage unchanged
51+
52+ def test_chunk_shape_validation_invalid_values (self ) -> None :
53+ """Test that chunk shape setter rejects invalid values."""
54+ template = Seismic2DPostStackTemplate ("time" )
55+ template .build_dataset ("test" , (50 , 50 ))
56+
57+ # Test rejection of 0
58+ with pytest .raises (ValueError , match = "Chunk size must be positive integer or -1" ):
59+ template .full_chunk_shape = (32 , 0 )
60+
61+ # Test rejection of negative values other than -1
62+ with pytest .raises (ValueError , match = "Chunk size must be positive integer or -1" ):
63+ template .full_chunk_shape = (32 , - 2 )
64+
65+ # Test that positive values and -1 are accepted
66+ template .full_chunk_shape = (32 , - 1 ) # Should not raise
67+ template .full_chunk_shape = (32 , 16 ) # Should not raise
68+
2969 def test_all_templates_inherit_from_abstract (self ) -> None :
3070 """Test that all concrete templates inherit from AbstractDatasetTemplate."""
3171 registry = TemplateRegistry ()
0 commit comments