blob: ce8efdffd98d82d093423c966e7db2b1fe9f372c [file] [log] [blame]
# 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.
class TestRecordBatchBuilder < Test::Unit::TestCase
include Helper::Buildable
include Helper::Omittable
def setup
@fields = [
Arrow::Field.new("visible", Arrow::BooleanDataType.new),
Arrow::Field.new("point", Arrow::Int32DataType.new),
]
@schema = Arrow::Schema.new(@fields)
@builder = Arrow::RecordBatchBuilder.new(@schema)
end
def test_initial_capacity
@builder.initial_capacity = 128
assert_equal(128, @builder.initial_capacity)
end
def test_schema
assert_equal(@schema, @builder.schema)
end
def test_n_columns
assert_equal(@fields.size, @builder.n_columns)
end
sub_test_case("#get_column_builder") do
def test_valid
assert_equal(Arrow::BooleanArrayBuilder,
@builder.get_column_builder(0).class)
end
def test_negative
assert_equal(Arrow::Int32ArrayBuilder,
@builder.get_column_builder(-1).class)
end
def test_too_negative
assert_nil(@builder.get_column_builder(-@fields.size - 1))
end
def test_too_large
assert_nil(@builder.get_column_builder(@fields.size))
end
end
def test_flush
require_gi_bindings(3, 3, 1)
arrays = {
"visible" => build_boolean_array([true, false, true]),
"point" => build_int32_array([1, -1, 0]),
}
arrays.each_with_index do |(_, array), i|
@builder.get_column_builder(i).append_values(array.values, [])
end
assert_equal(build_record_batch(arrays),
@builder.flush)
arrays = {
"visible" => build_boolean_array([false, true]),
"point" => build_int32_array([10, -10]),
}
arrays.each_with_index do |(_, array), i|
@builder.get_column_builder(i).append_values(array.values, [])
end
assert_equal(build_record_batch(arrays),
@builder.flush)
end
end