You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ko...@apache.org on 2021/01/02 22:38:25 UTC
[arrow] branch master updated: ARROW-11109: [GLib] Add
garrow_array_builder_append_empty_value() and values()
This is an automated email from the ASF dual-hosted git repository.
kou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new 848b173 ARROW-11109: [GLib] Add garrow_array_builder_append_empty_value() and values()
848b173 is described below
commit 848b1735aedfd201b6b7a58cd8509d94d6f8389a
Author: Sutou Kouhei <ko...@clear-code.com>
AuthorDate: Sun Jan 3 07:37:40 2021 +0900
ARROW-11109: [GLib] Add garrow_array_builder_append_empty_value() and values()
Closes #9078 from kou/glib-array-builder-empty-value
Authored-by: Sutou Kouhei <ko...@clear-code.com>
Signed-off-by: Sutou Kouhei <ko...@clear-code.com>
---
c_glib/arrow-glib/array-builder.cpp | 58 +++++
c_glib/arrow-glib/array-builder.h | 19 +-
c_glib/test/test-array-builder.rb | 334 +++++++++++++++++++++++++++
c_glib/test/test-dictionary-array-builder.rb | 64 +++++
c_glib/test/test-map-array-builder.rb | 20 ++
5 files changed, 483 insertions(+), 12 deletions(-)
diff --git a/c_glib/arrow-glib/array-builder.cpp b/c_glib/arrow-glib/array-builder.cpp
index d9f8d15..04b17c5 100644
--- a/c_glib/arrow-glib/array-builder.cpp
+++ b/c_glib/arrow-glib/array-builder.cpp
@@ -633,6 +633,64 @@ garrow_array_builder_append_nulls(GArrowArrayBuilder *builder,
return garrow_error_check(error, status, context);
}
+/**
+ * garrow_array_builder_append_empty_value:
+ * @builder: A #GArrowArrayBuilder.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Returns: %TRUE on success, %FALSE if there was an error.
+ *
+ * Since: 3.0.0
+ */
+gboolean
+garrow_array_builder_append_empty_value(GArrowArrayBuilder *builder,
+ GError **error)
+{
+ auto arrow_builder = garrow_array_builder_get_raw(builder);
+ auto status = arrow_builder->AppendEmptyValue();
+ return garrow_error_check(error,
+ status,
+ "[array-builder][append-empty-value]");
+}
+
+/**
+ * garrow_array_builder_append_empty_values:
+ * @builder: A #GArrowArrayBuilder.
+ * @n: The number of null values to be appended.
+ * @error: (nullable): Return location for a #GError or %NULL.
+ *
+ * Append multiple empty values at once. It's more efficient than multiple
+ * garrow_array_builder_append_empty_value() calls.
+ *
+ * Returns: %TRUE on success, %FALSE if there was an error.
+ *
+ * Since: 3.0.0
+ */
+gboolean
+garrow_array_builder_append_empty_values(GArrowArrayBuilder *builder,
+ gint64 n,
+ GError **error)
+{
+ const gchar *context = "[array-builder][append-empty-values]";
+ if (n < 0) {
+ g_set_error(error,
+ GARROW_ERROR,
+ GARROW_ERROR_INVALID,
+ "%s: the number of empty values must be 0 or larger: "
+ "<%" G_GINT64_FORMAT ">",
+ context,
+ n);
+ return FALSE;
+ }
+ if (n == 0) {
+ return TRUE;
+ }
+
+ auto arrow_builder = garrow_array_builder_get_raw(builder);
+ auto status = arrow_builder->AppendEmptyValues(n);
+ return garrow_error_check(error, status, context);
+}
+
G_DEFINE_TYPE(GArrowNullArrayBuilder,
garrow_null_array_builder,
diff --git a/c_glib/arrow-glib/array-builder.h b/c_glib/arrow-glib/array-builder.h
index f6e4830..3f6e7d7 100644
--- a/c_glib/arrow-glib/array-builder.h
+++ b/c_glib/arrow-glib/array-builder.h
@@ -70,6 +70,13 @@ GARROW_AVAILABLE_IN_3_0
gboolean garrow_array_builder_append_nulls(GArrowArrayBuilder *builder,
gint64 n,
GError **error);
+GARROW_AVAILABLE_IN_3_0
+gboolean garrow_array_builder_append_empty_value(GArrowArrayBuilder *builder,
+ GError **error);
+GARROW_AVAILABLE_IN_3_0
+gboolean garrow_array_builder_append_empty_values(GArrowArrayBuilder *builder,
+ gint64 n,
+ GError **error);
#define GARROW_TYPE_NULL_ARRAY_BUILDER (garrow_null_array_builder_get_type())
G_DECLARE_DERIVABLE_TYPE(GArrowNullArrayBuilder,
@@ -1017,12 +1024,6 @@ GARROW_AVAILABLE_IN_2_0
gboolean
garrow_binary_dictionary_array_builder_append_null(GArrowBinaryDictionaryArrayBuilder *builder,
GError **error);
-GARROW_DEPRECATED_IN_3_0_FOR(garrow_array_builder_append_nulls)
-GARROW_AVAILABLE_IN_2_0
-gboolean
-garrow_binary_dictionary_array_builder_append_nulls(GArrowBinaryDictionaryArrayBuilder *builder,
- gint64 n,
- GError **error);
#endif
GARROW_AVAILABLE_IN_2_0
gboolean
@@ -1087,12 +1088,6 @@ GARROW_AVAILABLE_IN_2_0
gboolean
garrow_string_dictionary_array_builder_append_null(GArrowStringDictionaryArrayBuilder *builder,
GError **error);
-GARROW_DEPRECATED_IN_3_0_FOR(garrow_array_builder_append_nulls)
-GARROW_AVAILABLE_IN_2_0
-gboolean
-garrow_string_dictionary_array_builder_append_nulls(GArrowStringDictionaryArrayBuilder *builder,
- gint64 n,
- GError **error);
#endif
GARROW_AVAILABLE_IN_2_0
gboolean
diff --git a/c_glib/test/test-array-builder.rb b/c_glib/test/test-array-builder.rb
index df78048..8cb7a93 100644
--- a/c_glib/test/test-array-builder.rb
+++ b/c_glib/test/test-array-builder.rb
@@ -144,6 +144,40 @@ module ArrayBuilderAppendNullsTests
end
end
+module ArrayBuilderAppendEmptyValueTests
+ def test_append
+ builder = create_builder
+ builder.append_empty_value
+ assert_equal(build_array([empty_value]),
+ builder.finish)
+ end
+end
+
+module ArrayBuilderAppendEmptyValuesTests
+ def test_zero
+ builder = create_builder
+ builder.append_empty_values(0)
+ assert_equal(build_array([]),
+ builder.finish)
+ end
+
+ def test_positive
+ builder = create_builder
+ builder.append_empty_values(3)
+ assert_equal(build_array([empty_value] * 3),
+ builder.finish)
+ end
+
+ def test_negative
+ builder = create_builder
+ message = "[array-builder][append-empty-values]: " +
+ "the number of empty values must be 0 or larger: <-1>"
+ assert_raise(Arrow::Error::Invalid.new(message)) do
+ builder.append_empty_values(-1)
+ end
+ end
+end
+
module ArrayBuilderValueTypeTests
def test_value_data_type
assert_equal(value_data_type,
@@ -249,6 +283,10 @@ class TestArrayBuilder < Test::Unit::TestCase
[nil, nil, nil]
end
+ def empty_value
+ nil
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -264,6 +302,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -304,6 +350,10 @@ class TestArrayBuilder < Test::Unit::TestCase
[true, false, true]
end
+ def empty_value
+ false
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -316,6 +366,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -346,6 +404,10 @@ class TestArrayBuilder < Test::Unit::TestCase
[1, -2, 3]
end
+ def empty_value
+ 0
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -358,6 +420,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -388,6 +458,10 @@ class TestArrayBuilder < Test::Unit::TestCase
[1, 2, 3]
end
+ def empty_value
+ 0
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -400,6 +474,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -430,6 +512,10 @@ class TestArrayBuilder < Test::Unit::TestCase
[1, -2, 3]
end
+ def empty_value
+ 0
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -442,6 +528,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -472,6 +566,10 @@ class TestArrayBuilder < Test::Unit::TestCase
[1, 2, 3]
end
+ def empty_value
+ 0
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -484,6 +582,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -514,6 +620,10 @@ class TestArrayBuilder < Test::Unit::TestCase
[1, -2, 3]
end
+ def empty_value
+ 0
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -526,6 +636,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -556,6 +674,10 @@ class TestArrayBuilder < Test::Unit::TestCase
[1, 2, 3]
end
+ def empty_value
+ 0
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -568,6 +690,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -598,6 +728,10 @@ class TestArrayBuilder < Test::Unit::TestCase
[1, -2, 3]
end
+ def empty_value
+ 0
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -610,6 +744,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -640,6 +782,10 @@ class TestArrayBuilder < Test::Unit::TestCase
[1, 2, 3]
end
+ def empty_value
+ 0
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -652,6 +798,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -682,6 +836,10 @@ class TestArrayBuilder < Test::Unit::TestCase
[1, -2, 3]
end
+ def empty_value
+ 0
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -694,6 +852,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -724,6 +890,10 @@ class TestArrayBuilder < Test::Unit::TestCase
[1, 2, 3]
end
+ def empty_value
+ 0
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -736,6 +906,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -766,6 +944,10 @@ class TestArrayBuilder < Test::Unit::TestCase
[1.1, -2.2, 3.3]
end
+ def empty_value
+ 0.0
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -778,6 +960,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -808,6 +998,10 @@ class TestArrayBuilder < Test::Unit::TestCase
[1.1, -2.2, 3.3]
end
+ def empty_value
+ 0.0
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -820,6 +1014,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -854,6 +1056,10 @@ class TestArrayBuilder < Test::Unit::TestCase
]
end
+ def empty_value
+ 0
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -866,6 +1072,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -900,6 +1114,10 @@ class TestArrayBuilder < Test::Unit::TestCase
]
end
+ def empty_value
+ 0
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -912,6 +1130,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -947,6 +1173,10 @@ class TestArrayBuilder < Test::Unit::TestCase
]
end
+ def empty_value
+ 0
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -959,6 +1189,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -994,6 +1232,10 @@ class TestArrayBuilder < Test::Unit::TestCase
]
end
+ def empty_value
+ 0
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -1006,6 +1248,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -1041,6 +1291,10 @@ class TestArrayBuilder < Test::Unit::TestCase
]
end
+ def empty_value
+ 0
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -1053,6 +1307,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -1087,6 +1349,10 @@ class TestArrayBuilder < Test::Unit::TestCase
]
end
+ def empty_value
+ ""
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -1107,6 +1373,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -1141,6 +1415,10 @@ class TestArrayBuilder < Test::Unit::TestCase
]
end
+ def empty_value
+ ""
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -1161,6 +1439,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -1195,6 +1481,10 @@ class TestArrayBuilder < Test::Unit::TestCase
]
end
+ def empty_value
+ ""
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -1219,6 +1509,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -1253,6 +1551,10 @@ class TestArrayBuilder < Test::Unit::TestCase
]
end
+ def empty_value
+ ""
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -1277,6 +1579,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -1311,6 +1621,10 @@ class TestArrayBuilder < Test::Unit::TestCase
]
end
+ def empty_value
+ Arrow::Decimal128.new("0")
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -1324,6 +1638,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
@@ -1358,6 +1680,10 @@ class TestArrayBuilder < Test::Unit::TestCase
]
end
+ def empty_value
+ Arrow::Decimal256.new("0")
+ end
+
sub_test_case("value type") do
include ArrayBuilderValueTypeTests
end
@@ -1371,6 +1697,14 @@ class TestArrayBuilder < Test::Unit::TestCase
include ArrayBuilderAppendNullsTests
end
+ sub_test_case("#append_empty_value") do
+ include ArrayBuilderAppendEmptyValueTests
+ end
+
+ sub_test_case("#append_empty_values") do
+ include ArrayBuilderAppendEmptyValuesTests
+ end
+
sub_test_case("capacity control") do
include ArrayBuilderCapacityControlTests
end
diff --git a/c_glib/test/test-dictionary-array-builder.rb b/c_glib/test/test-dictionary-array-builder.rb
index 2461e58..4531e44 100644
--- a/c_glib/test/test-dictionary-array-builder.rb
+++ b/c_glib/test/test-dictionary-array-builder.rb
@@ -98,6 +98,38 @@ class TestDictinaryArrayBuilder < Test::Unit::TestCase
assert_equal(expected_array, @builder.finish)
end
+ test("append_nulls") do
+ dictionary_array = build_binary_array([])
+ indices_array = build_int8_array([nil, nil, nil])
+ data_type = Arrow::DictionaryDataType.new(indices_array.value_data_type,
+ dictionary_array.value_data_type,
+ false)
+ expected_array = Arrow::DictionaryArray.new(data_type,
+ indices_array,
+ dictionary_array)
+ builder = Arrow::BinaryDictionaryArrayBuilder.new
+ builder.append_nulls(3)
+ assert_equal(expected_array,
+ builder.finish)
+ end
+
+ test("append_empty_values") do
+ dictionary_array = build_binary_array(["hello"])
+ indices_array = build_int8_array([0, 0, 0, 0])
+ data_type = Arrow::DictionaryDataType.new(indices_array.value_data_type,
+ dictionary_array.value_data_type,
+ false)
+ expected_array = Arrow::DictionaryArray.new(data_type,
+ indices_array,
+ dictionary_array)
+ builder = Arrow::BinaryDictionaryArrayBuilder.new
+ builder.append_value("hello")
+ builder.append_empty_value
+ builder.append_empty_values(2)
+ assert_equal(expected_array,
+ builder.finish)
+ end
+
test("dictionary_length") do
assert_equal(@dictionary.length, @builder.dictionary_length)
end
@@ -244,6 +276,38 @@ class TestDictinaryArrayBuilder < Test::Unit::TestCase
assert_equal(expected_array, @builder.finish)
end
+ test("append_nulls") do
+ dictionary_array = build_string_array([])
+ indices_array = build_int8_array([nil, nil, nil])
+ data_type = Arrow::DictionaryDataType.new(indices_array.value_data_type,
+ dictionary_array.value_data_type,
+ false)
+ expected_array = Arrow::DictionaryArray.new(data_type,
+ indices_array,
+ dictionary_array)
+ builder = Arrow::StringDictionaryArrayBuilder.new
+ builder.append_nulls(3)
+ assert_equal(expected_array,
+ builder.finish)
+ end
+
+ test("append_empty_values") do
+ dictionary_array = build_string_array(["hello"])
+ indices_array = build_int8_array([0, 0, 0, 0])
+ data_type = Arrow::DictionaryDataType.new(indices_array.value_data_type,
+ dictionary_array.value_data_type,
+ false)
+ expected_array = Arrow::DictionaryArray.new(data_type,
+ indices_array,
+ dictionary_array)
+ builder = Arrow::StringDictionaryArrayBuilder.new
+ builder.append_string("hello")
+ builder.append_empty_value
+ builder.append_empty_values(2)
+ assert_equal(expected_array,
+ builder.finish)
+ end
+
test("dictionary_length") do
assert_equal(@dictionary.length, @builder.dictionary_length)
end
diff --git a/c_glib/test/test-map-array-builder.rb b/c_glib/test/test-map-array-builder.rb
index 539694b..ce5023a 100644
--- a/c_glib/test/test-map-array-builder.rb
+++ b/c_glib/test/test-map-array-builder.rb
@@ -120,4 +120,24 @@ class TestMapArrayBuilder < Test::Unit::TestCase
array = @builder.finish
assert_equal(2, array.n_nulls)
end
+
+ def test_append_empty_value
+ offsets = build_int32_array([0, 0])
+ keys = build_string_array([])
+ items = build_int16_array([])
+ expected_array = Arrow::MapArray.new(offsets, keys, items)
+ @builder.append_empty_value
+ assert_equal(expected_array,
+ @builder.finish)
+ end
+
+ def test_append_empty_values
+ offsets = build_int32_array([0, 0, 0, 0])
+ keys = build_string_array([])
+ items = build_int16_array([])
+ expected_array = Arrow::MapArray.new(offsets, keys, items)
+ @builder.append_empty_values(3)
+ assert_equal(expected_array,
+ @builder.finish)
+ end
end