| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| from nanoarrow.c_schema import c_schema_view |
| |
| import nanoarrow as na |
| |
| |
| def test_schema_view_accessors_basic(): |
| view = c_schema_view(na.Type.DATE32) |
| assert view.type == "date32" |
| assert view.type_id == na.Type.DATE32.value |
| assert view.storage_type == "int32" |
| assert view.storage_type_id == na.Type.INT32.value |
| assert view.nullable is True |
| assert view.map_keys_sorted is None |
| assert view.fixed_size is None |
| assert view.decimal_bitwidth is None |
| assert view.decimal_precision is None |
| assert view.decimal_scale is None |
| assert view.time_unit_id is None |
| assert view.time_unit is None |
| assert view.timezone is None |
| assert view.extension_name is None |
| assert view.extension_metadata is None |
| |
| assert "date32" in repr(view) |
| assert "fixed_size" not in repr(view) |
| |
| |
| def test_schema_view_accessors_fixed_size(): |
| view = c_schema_view(na.fixed_size_binary(123)) |
| assert view.fixed_size == 123 |
| |
| |
| def test_schema_view_accessors_datetime(): |
| view = c_schema_view(na.timestamp("s", "America/Halifax")) |
| assert view.timezone == "America/Halifax" |
| assert view.time_unit_id == na.TimeUnit.SECOND.value |
| assert view.time_unit == "s" |
| |
| |
| def test_schema_view_accessors_decimal(): |
| view = c_schema_view(na.decimal128(10, 3)) |
| assert view.decimal_bitwidth == 128 |
| assert view.decimal_precision == 10 |
| assert view.decimal_scale == 3 |
| |
| |
| def test_schema_view_accessors_non_nullable(): |
| view = c_schema_view(na.int32(nullable=False)) |
| assert view.nullable is False |
| |
| |
| def test_schema_view_layout_accessors(): |
| view = c_schema_view(na.Type.INT32) |
| assert view.layout.n_buffers == 2 |
| assert view.layout.buffer_data_type_id[0] == na.Type.BOOL.value |
| assert view.layout.element_size_bits[0] == 1 |
| assert view.layout.buffer_data_type_id[1] == na.Type.INT32.value |
| assert view.layout.element_size_bits[1] == 32 |
| assert view.layout.child_size_elements == 0 |