|
1 | 1 | """Tests the dimensions module.""" |
2 | 2 |
|
| 3 | +from unittest.mock import Mock |
| 4 | + |
| 5 | +import pytest |
| 6 | +from varinfo import VarInfoFromNetCDF4 |
| 7 | + |
3 | 8 | from harmony_regridding_service.dimensions import ( |
| 9 | + GridDimensionPair, |
4 | 10 | get_column_dims, |
| 11 | + get_resampled_dimension_pairs, |
5 | 12 | get_row_dims, |
6 | 13 | horizontal_dims_for_variable, |
7 | 14 | is_column_dim, |
8 | 15 | is_row_dim, |
9 | 16 | ) |
| 17 | +from harmony_regridding_service.exceptions import SourceDataError |
10 | 18 |
|
11 | 19 |
|
12 | 20 | def test_horizontal_dims_for_variable_grouped(test_IMERG_ncfile, var_info_fxn): |
@@ -103,3 +111,33 @@ def test__get_row_dims_y_dims_multiple_values(test_1D_dimensions_ncfile, var_inf |
103 | 111 |
|
104 | 112 | actual = get_row_dims(dims, var_info) |
105 | 113 | assert expected_dim == actual |
| 114 | + |
| 115 | + |
| 116 | +def test_get_resampled_dimension_pairs_no_values(): |
| 117 | + """Test that SourceDataError is raised when no horizontal dimension pairs exist.""" |
| 118 | + mock_var_info = Mock(spec=VarInfoFromNetCDF4) |
| 119 | + mock_var_info.group_variables_by_horizontal_dimensions.return_value = [ |
| 120 | + ('time',), |
| 121 | + ('time', 'lat', 'lon'), |
| 122 | + ] |
| 123 | + |
| 124 | + with pytest.raises( |
| 125 | + SourceDataError, match='No horizontal dimension pairs could be determined.' |
| 126 | + ): |
| 127 | + get_resampled_dimension_pairs(mock_var_info) |
| 128 | + |
| 129 | + |
| 130 | +def test_get_resampled_dimension_pairs(): |
| 131 | + """Test that horizontal pairs are returned.""" |
| 132 | + mock_var_info = Mock(spec=VarInfoFromNetCDF4) |
| 133 | + mock_var_info.group_variables_by_horizontal_dimensions.return_value = [ |
| 134 | + ('time',), |
| 135 | + ('time', 'lat', 'lon'), |
| 136 | + ('x', 'y'), |
| 137 | + ('lat', 'lon'), |
| 138 | + ] |
| 139 | + |
| 140 | + expected_pairs = [GridDimensionPair('x', 'y'), GridDimensionPair('lat', 'lon')] |
| 141 | + |
| 142 | + actual_pairs = get_resampled_dimension_pairs(mock_var_info) |
| 143 | + assert actual_pairs == expected_pairs |
0 commit comments