| 123 | |
| 124 | @pytest.mark.parametrize("bits", [1, 2, 4, 8]) |
| 125 | def test_decode_unsigned_from_signed(bits) -> None: |
| 126 | unsigned_dtype = np.dtype(f"u{bits}") |
| 127 | signed_dtype = np.dtype(f"i{bits}") |
| 128 | original_values = np.array([np.iinfo(unsigned_dtype).max], dtype=unsigned_dtype) |
| 129 | encoded = xr.Variable( |
| 130 | ("x",), original_values.astype(signed_dtype), attrs={"_Unsigned": "true"} |
| 131 | ) |
| 132 | coder = variables.CFMaskCoder() |
| 133 | decoded = coder.decode(encoded) |
| 134 | assert decoded.dtype == unsigned_dtype |
| 135 | assert decoded.values == original_values |
| 136 | |
| 137 | |
| 138 | @pytest.mark.parametrize("bits", [1, 2, 4, 8]) |