| 16 | # under the License. |
| 17 | |
| 18 | class ArrayBuilderTest < Test::Unit::TestCase |
| 19 | sub_test_case(".build") do |
| 20 | def assert_build(builder_class, raw_array) |
| 21 | array = builder_class.build(raw_array) |
| 22 | assert_equal(raw_array, array.to_a) |
| 23 | end |
| 24 | |
| 25 | sub_test_case("generic builder") do |
| 26 | test("strings") do |
| 27 | assert_build(Arrow::ArrayBuilder, |
| 28 | ["Hello", nil, "World"]) |
| 29 | end |
| 30 | |
| 31 | test("symbols") do |
| 32 | array = Arrow::ArrayBuilder.build([:hello, nil, :world]) |
| 33 | expected_builder = Arrow::StringDictionaryArrayBuilder.new |
| 34 | assert_equal(expected_builder.build(["hello", nil, "world"]), |
| 35 | array) |
| 36 | end |
| 37 | |
| 38 | test("boolean") do |
| 39 | assert_build(Arrow::ArrayBuilder, |
| 40 | [true, nil, false]) |
| 41 | end |
| 42 | |
| 43 | test("positive integers") do |
| 44 | assert_build(Arrow::ArrayBuilder, |
| 45 | [1, nil, 2, nil, 3]) |
| 46 | end |
| 47 | |
| 48 | test("negative integers") do |
| 49 | assert_build(Arrow::ArrayBuilder, |
| 50 | [nil, -1, nil, -2, nil, -3]) |
| 51 | end |
| 52 | |
| 53 | test("times") do |
| 54 | assert_build(Arrow::ArrayBuilder, |
| 55 | [Time.at(0), Time.at(1), Time.at(2)]) |
| 56 | end |
| 57 | |
| 58 | test("dates") do |
| 59 | assert_build(Arrow::ArrayBuilder, |
| 60 | [Date.new(2018, 1, 4), Date.new(2018, 1, 5)]) |
| 61 | end |
| 62 | |
| 63 | test("datetimes") do |
| 64 | assert_build(Arrow::ArrayBuilder, |
| 65 | [ |
| 66 | DateTime.new(2018, 1, 4, 23, 18, 23), |
| 67 | DateTime.new(2018, 1, 5, 0, 23, 21), |
| 68 | ]) |
| 69 | end |
| 70 | |
| 71 | test("decimal + string") do |
| 72 | raw_array = [BigDecimal("10.1"), "10.1"] |
| 73 | array = Arrow::ArrayBuilder.build(raw_array) |
| 74 | assert_equal(raw_array.collect(&:to_s), array.to_a) |
| 75 | end |
nothing calls this directly
no test coverage detected