This is an automated email from the ASF dual-hosted git repository.

alamb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git


The following commit(s) were added to refs/heads/master by this push:
     new 51a9d0f9c Add Sliced ListArray test (#3748) (#4186)
51a9d0f9c is described below

commit 51a9d0f9c9f40bbe229b1f85c131ac659b065e43
Author: Raphael Taylor-Davies <[email protected]>
AuthorDate: Tue May 9 17:40:19 2023 +0100

    Add Sliced ListArray test (#3748) (#4186)
---
 arrow-ipc/src/writer.rs | 37 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 36 insertions(+), 1 deletion(-)

diff --git a/arrow-ipc/src/writer.rs b/arrow-ipc/src/writer.rs
index 8f36f8c04..b2fcec08d 100644
--- a/arrow-ipc/src/writer.rs
+++ b/arrow-ipc/src/writer.rs
@@ -1374,8 +1374,8 @@ mod tests {
     use std::io::Seek;
     use std::sync::Arc;
 
-    use arrow_array::builder::PrimitiveRunBuilder;
     use arrow_array::builder::UnionBuilder;
+    use arrow_array::builder::{ListBuilder, PrimitiveRunBuilder, 
UInt32Builder};
     use arrow_array::types::*;
     use arrow_schema::DataType;
 
@@ -2106,4 +2106,39 @@ mod tests {
             assert_eq!(expected, actual);
         }
     }
+
+    #[test]
+    fn encode_lists() {
+        let val_inner = Field::new("item", DataType::UInt32, true);
+        let val_list_field = Field::new_list("val", val_inner, false);
+
+        let schema = Arc::new(Schema::new(vec![val_list_field]));
+
+        let values = {
+            let u32 = UInt32Builder::new();
+            let mut ls = ListBuilder::new(u32);
+
+            for list in vec![vec![1u32, 2, 3], vec![4, 5, 6], vec![7, 8, 9, 
10]] {
+                for value in list {
+                    ls.values().append_value(value);
+                }
+                ls.append(true)
+            }
+
+            ls.finish()
+        };
+
+        let batch =
+            RecordBatch::try_new(Arc::clone(&schema), 
vec![Arc::new(values)]).unwrap();
+        let batch = batch.slice(1, 1);
+
+        let mut writer = FileWriter::try_new(Vec::<u8>::new(), 
&schema).unwrap();
+        writer.write(&batch).unwrap();
+        writer.finish().unwrap();
+        let data = writer.into_inner().unwrap();
+
+        let mut reader = FileReader::try_new(Cursor::new(data), None).unwrap();
+        let batch2 = reader.next().unwrap().unwrap();
+        assert_eq!(batch, batch2);
+    }
 }

Reply via email to