MCPcopy Create free account
hub / github.com/apache/arrow-rs / test_dense_mixed_with_str

Function test_dense_mixed_with_str

arrow-array/src/array/union_array.rs:1307–1388  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

1305
1306 #[test]
1307 fn test_dense_mixed_with_str() {
1308 let string_array = StringArray::from(vec!["foo", "bar", "baz"]);
1309 let int_array = Int32Array::from(vec![5, 6]);
1310 let float_array = Float64Array::from(vec![10.0]);
1311
1312 let type_ids = [1, 0, 0, 2, 0, 1].into_iter().collect::<ScalarBuffer<i8>>();
1313 let offsets = [0, 0, 1, 0, 2, 1]
1314 .into_iter()
1315 .collect::<ScalarBuffer<i32>>();
1316
1317 let fields = [
1318 (0, Arc::new(Field::new("A", DataType::Utf8, false))),
1319 (1, Arc::new(Field::new("B", DataType::Int32, false))),
1320 (2, Arc::new(Field::new("C", DataType::Float64, false))),
1321 ]
1322 .into_iter()
1323 .collect::<UnionFields>();
1324 let children = [
1325 Arc::new(string_array) as Arc<dyn Array>,
1326 Arc::new(int_array),
1327 Arc::new(float_array),
1328 ]
1329 .into_iter()
1330 .collect();
1331 let array =
1332 UnionArray::try_new(fields, type_ids.clone(), Some(offsets.clone()), children).unwrap();
1333
1334 // Check type ids
1335 assert_eq!(*array.type_ids(), type_ids);
1336 for (i, id) in type_ids.iter().enumerate() {
1337 assert_eq!(id, &array.type_id(i));
1338 }
1339
1340 // Check offsets
1341 assert_eq!(*array.offsets().unwrap(), offsets);
1342 for (i, id) in offsets.iter().enumerate() {
1343 assert_eq!(*id as usize, array.value_offset(i));
1344 }
1345
1346 // Check values
1347 assert_eq!(6, array.len());
1348
1349 let slot = array.value(0);
1350 let value = slot.as_any().downcast_ref::<Int32Array>().unwrap().value(0);
1351 assert_eq!(5, value);
1352
1353 let slot = array.value(1);
1354 let value = slot
1355 .as_any()
1356 .downcast_ref::<StringArray>()
1357 .unwrap()
1358 .value(0);
1359 assert_eq!("foo", value);
1360
1361 let slot = array.value(2);
1362 let value = slot
1363 .as_any()
1364 .downcast_ref::<StringArray>()

Callers

nothing calls this directly

Calls 7

try_newFunction · 0.85
collectMethod · 0.80
into_iterMethod · 0.45
cloneMethod · 0.45
iterMethod · 0.45
valueMethod · 0.45
as_anyMethod · 0.45

Tested by

no test coverage detected