|
3 | 3 | import numpy as np |
4 | 4 |
|
5 | 5 | from tests.test_dtype.test_wrapper import _TestZDType |
| 6 | +from zarr.core.dtype import FixedLengthASCII, FixedLengthUTF32 |
6 | 7 | from zarr.core.dtype.npy.string import _NUMPY_SUPPORTS_VLEN_STRING, VariableLengthString |
7 | 8 |
|
8 | 9 | if _NUMPY_SUPPORTS_VLEN_STRING: |
@@ -73,3 +74,84 @@ class TestVariableLengthString(_TestZDType): # type: ignore[no-redef] |
73 | 74 | ) |
74 | 75 |
|
75 | 76 | item_size_params = (VariableLengthString(),) |
| 77 | + |
| 78 | + |
| 79 | +class TestFixedLengthAscii(_TestZDType): |
| 80 | + test_cls = FixedLengthASCII |
| 81 | + valid_dtype = (np.dtype("|S10"), np.dtype("|S4")) |
| 82 | + invalid_dtype = ( |
| 83 | + np.dtype(np.int8), |
| 84 | + np.dtype(np.float64), |
| 85 | + np.dtype("|U10"), |
| 86 | + ) |
| 87 | + valid_json_v2 = ("|S0", "|S2", "|S4") |
| 88 | + valid_json_v3 = ({"name": "numpy.fixed_length_ascii", "configuration": {"length_bytes": 10}},) |
| 89 | + invalid_json_v2 = ( |
| 90 | + "|S", |
| 91 | + "|U10", |
| 92 | + "|f8", |
| 93 | + ) |
| 94 | + invalid_json_v3 = ( |
| 95 | + {"name": "numpy.fixed_length_ascii", "configuration": {"length_bits": 0}}, |
| 96 | + {"name": "numpy.fixed_length_ascii", "configuration": {"length_bits": "invalid"}}, |
| 97 | + ) |
| 98 | + |
| 99 | + scalar_v2_params = ( |
| 100 | + (FixedLengthASCII(length=0), ""), |
| 101 | + (FixedLengthASCII(length=2), "YWI="), |
| 102 | + (FixedLengthASCII(length=4), "YWJjZA=="), |
| 103 | + ) |
| 104 | + scalar_v3_params = ( |
| 105 | + (FixedLengthASCII(length=0), ""), |
| 106 | + (FixedLengthASCII(length=2), "YWI="), |
| 107 | + (FixedLengthASCII(length=4), "YWJjZA=="), |
| 108 | + ) |
| 109 | + cast_value_params = ( |
| 110 | + (FixedLengthASCII(length=0), "", np.bytes_("")), |
| 111 | + (FixedLengthASCII(length=2), "ab", np.bytes_("ab")), |
| 112 | + (FixedLengthASCII(length=4), "abcd", np.bytes_("abcd")), |
| 113 | + ) |
| 114 | + item_size_params = ( |
| 115 | + FixedLengthASCII(length=0), |
| 116 | + FixedLengthASCII(length=4), |
| 117 | + FixedLengthASCII(length=10), |
| 118 | + ) |
| 119 | + |
| 120 | + |
| 121 | +class TestFixedLengthUTF32(_TestZDType): |
| 122 | + test_cls = FixedLengthUTF32 |
| 123 | + valid_dtype = (np.dtype(">U10"), np.dtype("<U10")) |
| 124 | + invalid_dtype = ( |
| 125 | + np.dtype(np.int8), |
| 126 | + np.dtype(np.float64), |
| 127 | + np.dtype("|S10"), |
| 128 | + ) |
| 129 | + valid_json_v2 = (">U10", "<U10") |
| 130 | + valid_json_v3 = ({"name": "numpy.fixed_length_utf32", "configuration": {"length_bytes": 320}},) |
| 131 | + invalid_json_v2 = ( |
| 132 | + "|U", |
| 133 | + "|S10", |
| 134 | + "|f8", |
| 135 | + ) |
| 136 | + invalid_json_v3 = ( |
| 137 | + {"name": "numpy.fixed_length_utf32", "configuration": {"length_bits": 0}}, |
| 138 | + {"name": "numpy.fixed_length_utf32", "configuration": {"length_bits": "invalid"}}, |
| 139 | + ) |
| 140 | + |
| 141 | + scalar_v2_params = ((FixedLengthUTF32(length=0), ""), (FixedLengthUTF32(length=2), "hi")) |
| 142 | + scalar_v3_params = ( |
| 143 | + (FixedLengthUTF32(length=0), ""), |
| 144 | + (FixedLengthUTF32(length=2), "hi"), |
| 145 | + (FixedLengthUTF32(length=4), "hihi"), |
| 146 | + ) |
| 147 | + |
| 148 | + cast_value_params = ( |
| 149 | + (FixedLengthUTF32(length=0), "", np.str_("")), |
| 150 | + (FixedLengthUTF32(length=2), "hi", np.str_("hi")), |
| 151 | + (FixedLengthUTF32(length=4), "hihi", np.str_("hihi")), |
| 152 | + ) |
| 153 | + item_size_params = ( |
| 154 | + FixedLengthUTF32(length=0), |
| 155 | + FixedLengthUTF32(length=4), |
| 156 | + FixedLengthUTF32(length=10), |
| 157 | + ) |
0 commit comments