blob: 4670350a09dbcf8a44fc6d7c25f1b02aea737de9 [file]
# 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 ORCTest < Test::Unit::TestCase
include Helper::Fixture
def setup
omit("Require Apache Arrow ORC") unless Arrow.const_defined?(:ORCFileReader)
@orc_path = fixture_path("TestOrcFile.test1.orc")
end
def pp_values(values)
"[\n " + values.collect(&:inspect).join(",\n ") + "\n]"
end
sub_test_case("load") do
test("default") do
table = Arrow::Table.load(@orc_path)
dump = table.columns.collect do |column|
[
column.field.to_s,
column.data.chunks.collect(&:to_s),
]
end
assert_equal([
["boolean1: bool", [pp_values([false, true])]],
["byte1: int8", [pp_values([1, 100])]],
["short1: int16", [pp_values([1024, 2048])]],
["int1: int32", [pp_values([65536, 65536])]],
[
"long1: int64",
[pp_values([9223372036854775807, 9223372036854775807])],
],
["float1: float", [pp_values([1, 2])]],
["double1: double", [pp_values([-15, -5])]],
["bytes1: binary", ["[\n 0001020304,\n \n]"]],
["string1: string", [pp_values(["hi", "bye"])]],
[
"middle: " +
"struct<list: " +
"list<item: struct<int1: int32, string1: string>>>",
[
<<-STRUCT.chomp
-- is_valid: all not null
-- child 0 type: list<item: struct<int1: int32, string1: string>>
[
-- is_valid: all not null
-- child 0 type: int32
[
1,
2
]
-- child 1 type: string
[
"bye",
"sigh"
],
-- is_valid: all not null
-- child 0 type: int32
[
1,
2
]
-- child 1 type: string
[
"bye",
"sigh"
]
]
STRUCT
]
],
[
"list: list<item: struct<int1: int32, string1: string>>",
[
<<-LIST.chomp
[
-- is_valid: all not null
-- child 0 type: int32
[
3,
4
]
-- child 1 type: string
[
"good",
"bad"
],
-- is_valid: all not null
-- child 0 type: int32
[
100000000,
-100000,
1234
]
-- child 1 type: string
[
"cat",
"in",
"hat"
]
]
LIST
]
],
[
"map: map<string, struct<int1: int32, string1: string>>",
[
<<-MAP.chomp
[
keys:
[]
values:
-- is_valid: all not null
-- child 0 type: int32
[]
-- child 1 type: string
[],
keys:
[
"chani",
"mauddib"
]
values:
-- is_valid: all not null
-- child 0 type: int32
[
5,
1
]
-- child 1 type: string
[
"chani",
"mauddib"
]
]
MAP
],
],
],
dump)
end
test(":field_indexes") do
table = Arrow::Table.load(@orc_path, field_indexes: [1, 3])
dump = table.columns.collect do |column|
[
column.field.to_s,
column.data.chunks.collect(&:to_s),
]
end
assert_equal([
["byte1: int8", [pp_values([1, 100])]],
["int1: int32", [pp_values([65536, 65536])]],
],
dump)
end
end
end