Repository: arrow
Updated Branches:
  refs/heads/master 20228a2be -> c48f6493f


ARROW-963: [GLib] Add equal

Author: Kouhei Sutou <k...@clear-code.com>

Closes #654 from kou/glib-equal and squashes the following commits:

63f071d [Kouhei Sutou] [GLib] Add equal


Project: http://git-wip-us.apache.org/repos/asf/arrow/repo
Commit: http://git-wip-us.apache.org/repos/asf/arrow/commit/c48f6493
Tree: http://git-wip-us.apache.org/repos/asf/arrow/tree/c48f6493
Diff: http://git-wip-us.apache.org/repos/asf/arrow/diff/c48f6493

Branch: refs/heads/master
Commit: c48f6493fa7301260fce709eb16ce5382bc4673e
Parents: 20228a2
Author: Kouhei Sutou <k...@clear-code.com>
Authored: Sun May 7 10:34:41 2017 -0400
Committer: Wes McKinney <wes.mckin...@twosigma.com>
Committed: Sun May 7 10:34:41 2017 -0400

----------------------------------------------------------------------
 c_glib/arrow-glib/array.cpp         | 66 ++++++++++++++++++++++++++++++++
 c_glib/arrow-glib/array.h           | 10 +++++
 c_glib/arrow-glib/buffer.cpp        | 39 +++++++++++++++++++
 c_glib/arrow-glib/buffer.h          |  5 +++
 c_glib/arrow-glib/chunked-array.cpp | 20 ++++++++++
 c_glib/arrow-glib/chunked-array.h   |  3 ++
 c_glib/arrow-glib/column.cpp        | 18 +++++++++
 c_glib/arrow-glib/column.h          |  3 ++
 c_glib/arrow-glib/data-type.cpp     |  5 ++-
 c_glib/arrow-glib/field.cpp         |  5 ++-
 c_glib/arrow-glib/record-batch.cpp  | 20 ++++++++++
 c_glib/arrow-glib/record-batch.h    |  3 ++
 c_glib/arrow-glib/schema.cpp        | 18 +++++++++
 c_glib/arrow-glib/schema.h          |  2 +
 c_glib/arrow-glib/table.cpp         | 18 +++++++++
 c_glib/arrow-glib/table.h           |  3 ++
 c_glib/arrow-glib/tensor.cpp        | 18 +++++++++
 c_glib/arrow-glib/tensor.h          |  2 +
 c_glib/test/test-array.rb           | 23 +++++++++++
 c_glib/test/test-buffer.rb          | 13 +++++++
 c_glib/test/test-chunked-array.rb   | 13 +++++++
 c_glib/test/test-column.rb          | 13 +++++++
 c_glib/test/test-field.rb           |  5 +++
 c_glib/test/test-record-batch.rb    | 15 ++++++++
 c_glib/test/test-schema.rb          | 11 ++++++
 c_glib/test/test-table.rb           | 14 +++++++
 c_glib/test/test-tensor.rb          | 13 +++++++
 27 files changed, 374 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/arrow-glib/array.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/array.cpp b/c_glib/arrow-glib/array.cpp
index 3ca860d..8a78984 100644
--- a/c_glib/arrow-glib/array.cpp
+++ b/c_glib/arrow-glib/array.cpp
@@ -189,6 +189,72 @@ garrow_array_class_init(GArrowArrayClass *klass)
 }
 
 /**
+ * garrow_array_equal:
+ * @array: A #GArrowArray.
+ * @other_array: A #GArrowArray to be compared.
+ *
+ * Returns: %TRUE if both of them have the same data, %FALSE
+ *   otherwise.
+ *
+ * Since: 0.4.0
+ */
+gboolean
+garrow_array_equal(GArrowArray *array, GArrowArray *other_array)
+{
+  const auto arrow_array = garrow_array_get_raw(array);
+  const auto arrow_other_array = garrow_array_get_raw(other_array);
+  return arrow_array->Equals(arrow_other_array);
+}
+
+/**
+ * garrow_array_equal_approx:
+ * @array: A #GArrowArray.
+ * @other_array: A #GArrowArray to be compared.
+ *
+ * Returns: %TRUE if both of them have the approx same data, %FALSE
+ *   otherwise.
+ *
+ * Since: 0.4.0
+ */
+gboolean
+garrow_array_equal_approx(GArrowArray *array, GArrowArray *other_array)
+{
+  const auto arrow_array = garrow_array_get_raw(array);
+  const auto arrow_other_array = garrow_array_get_raw(other_array);
+  return arrow_array->ApproxEquals(arrow_other_array);
+}
+
+/**
+ * garrow_array_equal_range:
+ * @array: A #GArrowArray.
+ * @start_index: The start index of @array to be used.
+ * @other_array: A #GArrowArray to be compared.
+ * @other_start_index: The start index of @other_array to be used.
+ * @end_index: The end index of @array to be used. The end index of
+ *   @other_array is "@other_start_index + (@end_index -
+ *   @start_index)".
+ *
+ * Returns: %TRUE if both of them have the same data in the range,
+ *   %FALSE otherwise.
+ *
+ * Since: 0.4.0
+ */
+gboolean
+garrow_array_equal_range(GArrowArray *array,
+                         gint64 start_index,
+                         GArrowArray *other_array,
+                         gint64 other_start_index,
+                         gint64 end_index)
+{
+  const auto arrow_array = garrow_array_get_raw(array);
+  const auto arrow_other_array = garrow_array_get_raw(other_array);
+  return arrow_array->RangeEquals(*arrow_other_array,
+                                  start_index,
+                                  end_index,
+                                  other_start_index);
+}
+
+/**
  * garrow_array_is_null:
  * @array: A #GArrowArray.
  * @i: The index of the target value.

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/arrow-glib/array.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/array.h b/c_glib/arrow-glib/array.h
index 9bb502e..f750ee1 100644
--- a/c_glib/arrow-glib/array.h
+++ b/c_glib/arrow-glib/array.h
@@ -58,6 +58,16 @@ struct _GArrowArrayClass
 
 GType          garrow_array_get_type    (void) G_GNUC_CONST;
 
+gboolean       garrow_array_equal       (GArrowArray *array,
+                                         GArrowArray *other_array);
+gboolean       garrow_array_equal_approx(GArrowArray *array,
+                                         GArrowArray *other_array);
+gboolean       garrow_array_equal_range (GArrowArray *array,
+                                         gint64 start_index,
+                                         GArrowArray *other_array,
+                                         gint64 other_start_index,
+                                         gint64 end_index);
+
 gboolean       garrow_array_is_null     (GArrowArray *array,
                                          gint64 i);
 gint64         garrow_array_get_length  (GArrowArray *array);

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/arrow-glib/buffer.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/buffer.cpp b/c_glib/arrow-glib/buffer.cpp
index 4373ef1..0970128 100644
--- a/c_glib/arrow-glib/buffer.cpp
+++ b/c_glib/arrow-glib/buffer.cpp
@@ -145,6 +145,45 @@ garrow_buffer_new(const guint8 *data, gint64 size)
 }
 
 /**
+ * garrow_buffer_equal:
+ * @buffer: A #GArrowBuffer.
+ * @other_buffer: A #GArrowBuffer to be compared.
+ *
+ * Returns: %TRUE if both of them have the same data, %FALSE
+ *   otherwise.
+ *
+ * Since: 0.4.0
+ */
+gboolean
+garrow_buffer_equal(GArrowBuffer *buffer, GArrowBuffer *other_buffer)
+{
+  const auto arrow_buffer = garrow_buffer_get_raw(buffer);
+  const auto arrow_other_buffer = garrow_buffer_get_raw(other_buffer);
+  return arrow_buffer->Equals(*arrow_other_buffer);
+}
+
+/**
+ * garrow_buffer_equal_n_bytes:
+ * @buffer: A #GArrowBuffer.
+ * @other_buffer: A #GArrowBuffer to be compared.
+ * @n_bytes: The number of first bytes to be compared.
+ *
+ * Returns: %TRUE if both of them have the same data in the first
+ *   `n_bytes`, %FALSE otherwise.
+ *
+ * Since: 0.4.0
+ */
+gboolean
+garrow_buffer_equal_n_bytes(GArrowBuffer *buffer,
+                            GArrowBuffer *other_buffer,
+                            gint64 n_bytes)
+{
+  const auto arrow_buffer = garrow_buffer_get_raw(buffer);
+  const auto arrow_other_buffer = garrow_buffer_get_raw(other_buffer);
+  return arrow_buffer->Equals(*arrow_other_buffer, n_bytes);
+}
+
+/**
  * garrow_buffer_is_mutable:
  * @buffer: A #GArrowBuffer.
  *

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/arrow-glib/buffer.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/buffer.h b/c_glib/arrow-glib/buffer.h
index 22a5e9b..b3f3a2c 100644
--- a/c_glib/arrow-glib/buffer.h
+++ b/c_glib/arrow-glib/buffer.h
@@ -59,6 +59,11 @@ GType          garrow_buffer_get_type     (void) 
G_GNUC_CONST;
 
 GArrowBuffer  *garrow_buffer_new          (const guint8 *data,
                                            gint64 size);
+gboolean       garrow_buffer_equal        (GArrowBuffer *buffer,
+                                           GArrowBuffer *other_buffer);
+gboolean       garrow_buffer_equal_n_bytes(GArrowBuffer *buffer,
+                                           GArrowBuffer *other_buffer,
+                                           gint64 n_bytes);
 gboolean       garrow_buffer_is_mutable   (GArrowBuffer *buffer);
 gint64         garrow_buffer_get_capacity (GArrowBuffer *buffer);
 GBytes        *garrow_buffer_get_data     (GArrowBuffer *buffer);

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/arrow-glib/chunked-array.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/chunked-array.cpp 
b/c_glib/arrow-glib/chunked-array.cpp
index e732ece..62d666f 100644
--- a/c_glib/arrow-glib/chunked-array.cpp
+++ b/c_glib/arrow-glib/chunked-array.cpp
@@ -144,6 +144,26 @@ garrow_chunked_array_new(GList *chunks)
 }
 
 /**
+ * garrow_chunked_array_equal:
+ * @chunked_array: A #GArrowChunkedArray.
+ * @other_chunked_array: A #GArrowChunkedArray to be compared.
+ *
+ * Returns: %TRUE if both of them have the same data, %FALSE
+ *   otherwise.
+ *
+ * Since: 0.4.0
+ */
+gboolean
+garrow_chunked_array_equal(GArrowChunkedArray *chunked_array,
+                           GArrowChunkedArray *other_chunked_array)
+{
+  const auto arrow_chunked_array = garrow_chunked_array_get_raw(chunked_array);
+  const auto arrow_other_chunked_array =
+    garrow_chunked_array_get_raw(other_chunked_array);
+  return arrow_chunked_array->Equals(arrow_other_chunked_array);
+}
+
+/**
  * garrow_chunked_array_get_length:
  * @chunked_array: A #GArrowChunkedArray.
  *

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/arrow-glib/chunked-array.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/chunked-array.h 
b/c_glib/arrow-glib/chunked-array.h
index 338930b..c5f986a 100644
--- a/c_glib/arrow-glib/chunked-array.h
+++ b/c_glib/arrow-glib/chunked-array.h
@@ -67,6 +67,9 @@ GType garrow_chunked_array_get_type(void) G_GNUC_CONST;
 
 GArrowChunkedArray *garrow_chunked_array_new(GList *chunks);
 
+gboolean garrow_chunked_array_equal(GArrowChunkedArray *chunked_array,
+                                    GArrowChunkedArray *other_chunked_array);
+
 guint64 garrow_chunked_array_get_length (GArrowChunkedArray *chunked_array);
 guint64 garrow_chunked_array_get_n_nulls(GArrowChunkedArray *chunked_array);
 guint   garrow_chunked_array_get_n_chunks (GArrowChunkedArray *chunked_array);

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/arrow-glib/column.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/column.cpp b/c_glib/arrow-glib/column.cpp
index 94df640..a7222b1 100644
--- a/c_glib/arrow-glib/column.cpp
+++ b/c_glib/arrow-glib/column.cpp
@@ -161,6 +161,24 @@ garrow_column_new_chunked_array(GArrowField *field,
 }
 
 /**
+ * garrow_column_equal:
+ * @column: A #GArrowColumn.
+ * @other_column: A #GArrowColumn to be compared.
+ *
+ * Returns: %TRUE if both of them have the same data, %FALSE
+ *   otherwise.
+ *
+ * Since: 0.4.0
+ */
+gboolean
+garrow_column_equal(GArrowColumn *column, GArrowColumn *other_column)
+{
+  const auto arrow_column = garrow_column_get_raw(column);
+  const auto arrow_other_column = garrow_column_get_raw(other_column);
+  return arrow_column->Equals(arrow_other_column);
+}
+
+/**
  * garrow_column_get_length:
  * @column: A #GArrowColumn.
  *

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/arrow-glib/column.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/column.h b/c_glib/arrow-glib/column.h
index fba3c26..b649c5f 100644
--- a/c_glib/arrow-glib/column.h
+++ b/c_glib/arrow-glib/column.h
@@ -72,6 +72,9 @@ GArrowColumn *garrow_column_new_array(GArrowField *field,
 GArrowColumn *garrow_column_new_chunked_array(GArrowField *field,
                                               GArrowChunkedArray 
*chunked_array);
 
+gboolean            garrow_column_equal         (GArrowColumn *column,
+                                                 GArrowColumn *other_column);
+
 guint64             garrow_column_get_length    (GArrowColumn *column);
 guint64             garrow_column_get_n_nulls   (GArrowColumn *column);
 GArrowField        *garrow_column_get_field     (GArrowColumn *column);

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/arrow-glib/data-type.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/data-type.cpp b/c_glib/arrow-glib/data-type.cpp
index c3c7fdb..9ce8c16 100644
--- a/c_glib/arrow-glib/data-type.cpp
+++ b/c_glib/arrow-glib/data-type.cpp
@@ -164,9 +164,10 @@ garrow_data_type_class_init(GArrowDataTypeClass *klass)
 /**
  * garrow_data_type_equal:
  * @data_type: A #GArrowDataType.
- * @other_data_type: A #GArrowDataType.
+ * @other_data_type: A #GArrowDataType to be compared.
  *
- * Returns: Whether they are equal or not.
+ * Returns: %TRUE if both of them have the same data, %FALSE
+ *   otherwise.
  */
 gboolean
 garrow_data_type_equal(GArrowDataType *data_type,

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/arrow-glib/field.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/field.cpp b/c_glib/arrow-glib/field.cpp
index 5fd0c4d..09c7ca3 100644
--- a/c_glib/arrow-glib/field.cpp
+++ b/c_glib/arrow-glib/field.cpp
@@ -204,9 +204,10 @@ garrow_field_is_nullable(GArrowField *field)
 /**
  * garrow_field_equal:
  * @field: A #GArrowField.
- * @other_field: A #GArrowField.
+ * @other_field: A #GArrowField to be compared.
  *
- * Returns: Whether they are equal or not.
+ * Returns: %TRUE if both of them have the same data, %FALSE
+ *   otherwise.
  */
 gboolean
 garrow_field_equal(GArrowField *field,

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/arrow-glib/record-batch.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/record-batch.cpp 
b/c_glib/arrow-glib/record-batch.cpp
index 8ac1791..3eed1a0 100644
--- a/c_glib/arrow-glib/record-batch.cpp
+++ b/c_glib/arrow-glib/record-batch.cpp
@@ -154,6 +154,26 @@ garrow_record_batch_new(GArrowSchema *schema,
 }
 
 /**
+ * garrow_record_batch_equal:
+ * @record_batch: A #GArrowRecordBatch.
+ * @other_record_batch: A #GArrowRecordBatch to be compared.
+ *
+ * Returns: %TRUE if both of them have the same data, %FALSE
+ *   otherwise.
+ *
+ * Since: 0.4.0
+ */
+gboolean
+garrow_record_batch_equal(GArrowRecordBatch *record_batch,
+                          GArrowRecordBatch *other_record_batch)
+{
+  const auto arrow_record_batch = garrow_record_batch_get_raw(record_batch);
+  const auto arrow_other_record_batch =
+    garrow_record_batch_get_raw(other_record_batch);
+  return arrow_record_batch->Equals(*arrow_other_record_batch);
+}
+
+/**
  * garrow_record_batch_get_schema:
  * @record_batch: A #GArrowRecordBatch.
  *

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/arrow-glib/record-batch.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/record-batch.h b/c_glib/arrow-glib/record-batch.h
index 92eee4d..61e8f3d 100644
--- a/c_glib/arrow-glib/record-batch.h
+++ b/c_glib/arrow-glib/record-batch.h
@@ -70,6 +70,9 @@ GArrowRecordBatch *garrow_record_batch_new(GArrowSchema 
*schema,
                                            guint32 n_rows,
                                            GList *columns);
 
+gboolean garrow_record_batch_equal(GArrowRecordBatch *record_batch,
+                                   GArrowRecordBatch *other_record_batch);
+
 GArrowSchema *garrow_record_batch_get_schema     (GArrowRecordBatch 
*record_batch);
 GArrowArray  *garrow_record_batch_get_column     (GArrowRecordBatch 
*record_batch,
                                                   guint i);

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/arrow-glib/schema.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/schema.cpp b/c_glib/arrow-glib/schema.cpp
index 4d5ae5a..be3ea4b 100644
--- a/c_glib/arrow-glib/schema.cpp
+++ b/c_glib/arrow-glib/schema.cpp
@@ -143,6 +143,24 @@ garrow_schema_new(GList *fields)
 }
 
 /**
+ * garrow_schema_equal:
+ * @schema: A #GArrowSchema.
+ * @other_schema: A #GArrowSchema to be compared.
+ *
+ * Returns: %TRUE if both of them have the same data, %FALSE
+ *   otherwise.
+ *
+ * Since: 0.4.0
+ */
+gboolean
+garrow_schema_equal(GArrowSchema *schema, GArrowSchema *other_schema)
+{
+  const auto arrow_schema = garrow_schema_get_raw(schema);
+  const auto arrow_other_schema = garrow_schema_get_raw(other_schema);
+  return arrow_schema->Equals(*arrow_other_schema);
+}
+
+/**
  * garrow_schema_get_field:
  * @schema: A #GArrowSchema.
  * @i: The index of the target field.

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/arrow-glib/schema.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/schema.h b/c_glib/arrow-glib/schema.h
index 7615634..483d55e 100644
--- a/c_glib/arrow-glib/schema.h
+++ b/c_glib/arrow-glib/schema.h
@@ -67,6 +67,8 @@ GType            garrow_schema_get_type         (void) 
G_GNUC_CONST;
 
 GArrowSchema    *garrow_schema_new              (GList *fields);
 
+gboolean         garrow_schema_equal            (GArrowSchema *schema,
+                                                 GArrowSchema *other_schema);
 GArrowField     *garrow_schema_get_field        (GArrowSchema *schema,
                                                  guint i);
 GArrowField     *garrow_schema_get_field_by_name(GArrowSchema *schema,

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/arrow-glib/table.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/table.cpp b/c_glib/arrow-glib/table.cpp
index 2aba21b..779f2ef 100644
--- a/c_glib/arrow-glib/table.cpp
+++ b/c_glib/arrow-glib/table.cpp
@@ -149,6 +149,24 @@ garrow_table_new(GArrowSchema *schema,
 }
 
 /**
+ * garrow_table_equal:
+ * @table: A #GArrowTable.
+ * @other_table: A #GArrowTable to be compared.
+ *
+ * Returns: %TRUE if both of them have the same data, %FALSE
+ *   otherwise.
+ *
+ * Since: 0.4.0
+ */
+gboolean
+garrow_table_equal(GArrowTable *table, GArrowTable *other_table)
+{
+  const auto arrow_table = garrow_table_get_raw(table);
+  const auto arrow_other_table = garrow_table_get_raw(other_table);
+  return arrow_table->Equals(*arrow_other_table);
+}
+
+/**
  * garrow_table_get_schema:
  * @table: A #GArrowTable.
  *

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/arrow-glib/table.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/table.h b/c_glib/arrow-glib/table.h
index 9ae0cce..9e21669 100644
--- a/c_glib/arrow-glib/table.h
+++ b/c_glib/arrow-glib/table.h
@@ -69,6 +69,9 @@ GType           garrow_table_get_type      (void) 
G_GNUC_CONST;
 GArrowTable    *garrow_table_new           (GArrowSchema *schema,
                                             GList *columns);
 
+gboolean        garrow_table_equal         (GArrowTable *table,
+                                            GArrowTable *other_table);
+
 GArrowSchema   *garrow_table_get_schema    (GArrowTable *table);
 GArrowColumn   *garrow_table_get_column    (GArrowTable *table,
                                             guint i);

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/arrow-glib/tensor.cpp
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/tensor.cpp b/c_glib/arrow-glib/tensor.cpp
index 27af753..89e971c 100644
--- a/c_glib/arrow-glib/tensor.cpp
+++ b/c_glib/arrow-glib/tensor.cpp
@@ -171,6 +171,24 @@ garrow_tensor_new(GArrowDataType *data_type,
 }
 
 /**
+ * garrow_tensor_equal:
+ * @tensor: A #GArrowTensor.
+ * @other_tensor: A #GArrowTensor to be compared.
+ *
+ * Returns: %TRUE if both of them have the same data, %FALSE
+ *   otherwise.
+ *
+ * Since: 0.4.0
+ */
+gboolean
+garrow_tensor_equal(GArrowTensor *tensor, GArrowTensor *other_tensor)
+{
+  const auto arrow_tensor = garrow_tensor_get_raw(tensor);
+  const auto arrow_other_tensor = garrow_tensor_get_raw(other_tensor);
+  return arrow_tensor->Equals(*arrow_other_tensor);
+}
+
+/**
  * garrow_tensor_get_value_data_type:
  * @tensor: A #GArrowTensor.
  *

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/arrow-glib/tensor.h
----------------------------------------------------------------------
diff --git a/c_glib/arrow-glib/tensor.h b/c_glib/arrow-glib/tensor.h
index 71c6b4e..6529282 100644
--- a/c_glib/arrow-glib/tensor.h
+++ b/c_glib/arrow-glib/tensor.h
@@ -66,6 +66,8 @@ GArrowTensor   *garrow_tensor_new                
(GArrowDataType *data_type,
                                                   gsize n_strides,
                                                   gchar **dimention_names,
                                                   gsize n_dimention_names);
+gboolean        garrow_tensor_equal              (GArrowTensor *tensor,
+                                                  GArrowTensor *other_tensor);
 GArrowDataType *garrow_tensor_get_value_data_type(GArrowTensor *tensor);
 GArrowType      garrow_tensor_get_value_type     (GArrowTensor *tensor);
 GArrowBuffer   *garrow_tensor_get_buffer         (GArrowTensor *tensor);

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/test/test-array.rb
----------------------------------------------------------------------
diff --git a/c_glib/test/test-array.rb b/c_glib/test/test-array.rb
index a2a2a1e..ca02fa2 100644
--- a/c_glib/test/test-array.rb
+++ b/c_glib/test/test-array.rb
@@ -16,6 +16,29 @@
 # under the License.
 
 class TestArray < Test::Unit::TestCase
+  include Helper::Buildable
+
+  def test_equal
+    assert_equal(build_boolean_array([true, false]),
+                 build_boolean_array([true, false]))
+  end
+
+  def test_equal_approx
+    array1 = build_double_array([1.1, 2.2 + Float::EPSILON * 10])
+    array2 = build_double_array([1.1, 2.2])
+    assert do
+      array1.equal_approx(array2)
+    end
+  end
+
+  def test_equal_range
+    array1 = build_int32_array([1, 2, 3, 4, 5])
+    array2 = build_int32_array([-2, -1, 0, 1, 2, 3, 4, 999])
+    assert do
+      array1.equal_range(1, array2, 4, 3)
+    end
+  end
+
   def test_is_null
     builder = Arrow::BooleanArrayBuilder.new
     builder.append_null

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/test/test-buffer.rb
----------------------------------------------------------------------
diff --git a/c_glib/test/test-buffer.rb b/c_glib/test/test-buffer.rb
index 9f76a80..39ae631 100644
--- a/c_glib/test/test-buffer.rb
+++ b/c_glib/test/test-buffer.rb
@@ -23,6 +23,19 @@ class TestBuffer < Test::Unit::TestCase
     @buffer = Arrow::Buffer.new(@data)
   end
 
+  def test_equal
+    assert_equal(@buffer,
+                 Arrow::Buffer.new(@data.dup))
+  end
+
+  def test_equal_n_bytes
+    buffer1 = Arrow::Buffer.new("Hello!")
+    buffer2 = Arrow::Buffer.new("Hello World!")
+    assert do
+      buffer1.equal_n_bytes(buffer2, 5)
+    end
+  end
+
   def test_mutable?
     assert do
       not @buffer.mutable?

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/test/test-chunked-array.rb
----------------------------------------------------------------------
diff --git a/c_glib/test/test-chunked-array.rb 
b/c_glib/test/test-chunked-array.rb
index 167d5d1..cde7a8b 100644
--- a/c_glib/test/test-chunked-array.rb
+++ b/c_glib/test/test-chunked-array.rb
@@ -18,6 +18,19 @@
 class TestChunkedArray < Test::Unit::TestCase
   include Helper::Buildable
 
+  def test_equal
+    chunks1 = [
+      build_boolean_array([true, false]),
+      build_boolean_array([true]),
+    ]
+    chunks2 = [
+      build_boolean_array([true]),
+      build_boolean_array([false, true]),
+    ]
+    assert_equal(Arrow::ChunkedArray.new(chunks1),
+                 Arrow::ChunkedArray.new(chunks2))
+  end
+
   def test_length
     chunks = [
       build_boolean_array([true, false]),

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/test/test-column.rb
----------------------------------------------------------------------
diff --git a/c_glib/test/test-column.rb b/c_glib/test/test-column.rb
index ec75194..96e02b6 100644
--- a/c_glib/test/test-column.rb
+++ b/c_glib/test/test-column.rb
@@ -38,6 +38,19 @@ class TestColumn < Test::Unit::TestCase
     end
   end
 
+  def test_equal
+    field1 = Arrow::Field.new("enabled", Arrow::BooleanDataType.new)
+    array1 = build_boolean_array([true, false])
+    field2 = Arrow::Field.new("enabled", Arrow::BooleanDataType.new)
+    chunks = [
+      build_boolean_array([true]),
+      build_boolean_array([false]),
+    ]
+    array2 = Arrow::ChunkedArray.new(chunks)
+    assert_equal(Arrow::Column.new(field1, array1),
+                 Arrow::Column.new(field2, array2))
+  end
+
   def test_length
     field = Arrow::Field.new("enabled", Arrow::BooleanDataType.new)
     array = build_boolean_array([true, false])

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/test/test-field.rb
----------------------------------------------------------------------
diff --git a/c_glib/test/test-field.rb b/c_glib/test/test-field.rb
index a20802c..1b9c46e 100644
--- a/c_glib/test/test-field.rb
+++ b/c_glib/test/test-field.rb
@@ -16,6 +16,11 @@
 # under the License.
 
 class TestField < Test::Unit::TestCase
+  def test_equal
+    assert_equal(Arrow::Field.new("enabled", Arrow::BooleanDataType.new),
+                 Arrow::Field.new("enabled", Arrow::BooleanDataType.new))
+  end
+
   def test_name
     field = Arrow::Field.new("enabled", Arrow::BooleanDataType.new)
     assert_equal("enabled", field.name)

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/test/test-record-batch.rb
----------------------------------------------------------------------
diff --git a/c_glib/test/test-record-batch.rb b/c_glib/test/test-record-batch.rb
index 941ff35..048f6de 100644
--- a/c_glib/test/test-record-batch.rb
+++ b/c_glib/test/test-record-batch.rb
@@ -46,6 +46,21 @@ class TestTable < Test::Unit::TestCase
       @record_batch = Arrow::RecordBatch.new(schema, 5, columns)
     end
 
+    def test_equal
+      fields = [
+        Arrow::Field.new("visible", Arrow::BooleanDataType.new),
+        Arrow::Field.new("valid", Arrow::BooleanDataType.new),
+      ]
+      schema = Arrow::Schema.new(fields)
+      columns = [
+        build_boolean_array([true, false, true, false, true, false]),
+        build_boolean_array([false, true, false, true, false]),
+      ]
+      other_record_batch = Arrow::RecordBatch.new(schema, 5, columns)
+      assert_equal(@record_batch,
+                   other_record_batch)
+    end
+
     def test_schema
       assert_equal(["visible", "valid"],
                    @record_batch.schema.fields.collect(&:name))

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/test/test-schema.rb
----------------------------------------------------------------------
diff --git a/c_glib/test/test-schema.rb b/c_glib/test/test-schema.rb
index c9cbb75..4c09ecb 100644
--- a/c_glib/test/test-schema.rb
+++ b/c_glib/test/test-schema.rb
@@ -16,6 +16,17 @@
 # under the License.
 
 class TestSchema < Test::Unit::TestCase
+  def test_equal
+    fields1 = [
+      Arrow::Field.new("enabled", Arrow::BooleanDataType.new),
+    ]
+    fields2 = [
+      Arrow::Field.new("enabled", Arrow::BooleanDataType.new),
+    ]
+    assert_equal(Arrow::Schema.new(fields1),
+                 Arrow::Schema.new(fields2))
+  end
+
   def test_field
     field = Arrow::Field.new("enabled", Arrow::BooleanDataType.new)
     schema = Arrow::Schema.new([field])

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/test/test-table.rb
----------------------------------------------------------------------
diff --git a/c_glib/test/test-table.rb b/c_glib/test/test-table.rb
index da6871e..08dd348 100644
--- a/c_glib/test/test-table.rb
+++ b/c_glib/test/test-table.rb
@@ -66,6 +66,20 @@ class TestTable < Test::Unit::TestCase
       @table = Arrow::Table.new(schema, columns)
     end
 
+    def test_equal
+      fields = [
+        Arrow::Field.new("visible", Arrow::BooleanDataType.new),
+        Arrow::Field.new("valid", Arrow::BooleanDataType.new),
+      ]
+      schema = Arrow::Schema.new(fields)
+      columns = [
+        Arrow::Column.new(fields[0], build_boolean_array([true])),
+        Arrow::Column.new(fields[1], build_boolean_array([false])),
+      ]
+      other_table = Arrow::Table.new(schema, columns)
+      assert_equal(@table, other_table)
+    end
+
     def test_schema
       assert_equal(["visible", "valid"],
                    @table.schema.fields.collect(&:name))

http://git-wip-us.apache.org/repos/asf/arrow/blob/c48f6493/c_glib/test/test-tensor.rb
----------------------------------------------------------------------
diff --git a/c_glib/test/test-tensor.rb b/c_glib/test/test-tensor.rb
index 225857b..780c9f1 100644
--- a/c_glib/test/test-tensor.rb
+++ b/c_glib/test/test-tensor.rb
@@ -40,6 +40,19 @@ class TestTensor < Test::Unit::TestCase
                                 names)
   end
 
+  def test_equal
+    data = Arrow::Buffer.new(@raw_data.pack("c*"))
+    strides = []
+    names = ["a", "b", "c"]
+    other_tensor = Arrow::Tensor.new(Arrow::Int8DataType.new,
+                                     data,
+                                     @shape,
+                                     strides,
+                                     names)
+    assert_equal(@tensor,
+                 other_tensor)
+  end
+
   def test_value_data_type
     assert_equal(Arrow::Int8DataType, @tensor.value_data_type.class)
   end

Reply via email to