|
62 | 62 | (12, BinaryType), |
63 | 63 | ] |
64 | 64 |
|
| 65 | +primitive_types = { |
| 66 | + "boolean": BooleanType, |
| 67 | + "int": IntegerType, |
| 68 | + "long": LongType, |
| 69 | + "float": FloatType, |
| 70 | + "double": DoubleType, |
| 71 | + "date": DateType, |
| 72 | + "time": TimeType, |
| 73 | + "timestamp": TimestampType, |
| 74 | + "timestamptz": TimestamptzType, |
| 75 | + "string": StringType, |
| 76 | + "uuid": UUIDType, |
| 77 | + "binary": BinaryType, |
| 78 | +} |
| 79 | + |
65 | 80 |
|
66 | 81 | @pytest.mark.parametrize("input_index, input_type", non_parameterized_types) |
67 | 82 | def test_repr_primitive_types(input_index: int, input_type: Type[PrimitiveType]) -> None: |
@@ -232,19 +247,24 @@ def test_nested_field() -> None: |
232 | 247 |
|
233 | 248 |
|
234 | 249 | def test_nested_field_type_as_str_unsupported() -> None: |
235 | | - with pytest.raises(ValueError) as exc_info: |
236 | | - _ = (NestedField(1, "field", "list", required=True),) |
237 | | - assert "Unsupported field type: list" in str(exc_info.value) |
| 250 | + unsupported_types = ["list", "map", "struct"] |
| 251 | + for type_str in unsupported_types: |
| 252 | + with pytest.raises(ValueError) as exc_info: |
| 253 | + _ = NestedField(1, "field", type_str, required=True) |
| 254 | + assert f"Unsupported field type: '{type_str}'" in str(exc_info.value) |
238 | 255 |
|
239 | 256 |
|
240 | | -def test_nested_field_type_as_str_struct() -> None: |
| 257 | +@pytest.mark.parametrize("type_str, type_class", primitive_types.items()) |
| 258 | +def test_nested_field_type_as_str(type_str: str, type_class: type) -> None: |
241 | 259 | field_var = NestedField( |
242 | 260 | 1, |
243 | 261 | "field", |
244 | | - "string", |
| 262 | + type_str, |
245 | 263 | required=True, |
246 | 264 | ) |
247 | | - assert isinstance(field_var.field_type, StringType) |
| 265 | + assert isinstance( |
| 266 | + field_var.field_type, type_class |
| 267 | + ), f"Expected {type_class.__name__}, got {field_var.field_type.__class__.__name__}" |
248 | 268 |
|
249 | 269 |
|
250 | 270 | @pytest.mark.parametrize("input_index,input_type", non_parameterized_types) |
|
0 commit comments