You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by tu...@apache.org on 2023/06/03 22:00:49 UTC
[arrow-rs] branch master updated: refact: use as_primitive in cast.rs test (#4360)
This is an automated email from the ASF dual-hosted git repository.
tustvold 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 7c3faa5bf refact: use as_primitive in cast.rs test (#4360)
7c3faa5bf is described below
commit 7c3faa5bf65de7a7bcefb7970ff3692790083ed5
Author: Alex Huang <hu...@gmail.com>
AuthorDate: Sun Jun 4 00:00:43 2023 +0200
refact: use as_primitive in cast.rs test (#4360)
* refact: use as_primitive in cast.rs test
* fix doctest
---
arrow-cast/src/cast.rs | 95 +++++++++++++++++++++++++-------------------------
1 file changed, 48 insertions(+), 47 deletions(-)
diff --git a/arrow-cast/src/cast.rs b/arrow-cast/src/cast.rs
index 1e491d844..752915f34 100644
--- a/arrow-cast/src/cast.rs
+++ b/arrow-cast/src/cast.rs
@@ -25,11 +25,13 @@
//! use arrow_cast::cast;
//! use arrow_schema::DataType;
//! use std::sync::Arc;
+//! use arrow_array::types::Float64Type;
+//! use arrow_array::cast::AsArray;
//!
//! let a = Int32Array::from(vec![5, 6, 7]);
//! let array = Arc::new(a) as ArrayRef;
//! let b = cast(&array, &DataType::Float64).unwrap();
-//! let c = b.as_any().downcast_ref::<Float64Array>().unwrap();
+//! let c = b.as_primitive::<Float64Type>();
//! assert_eq!(5.0, c.value(0));
//! assert_eq!(6.0, c.value(1));
//! assert_eq!(7.0, c.value(2));
@@ -4979,7 +4981,7 @@ mod tests {
fn test_cast_i32_to_f64() {
let array = Int32Array::from(vec![5, 6, 7, 8, 9]);
let b = cast(&array, &DataType::Float64).unwrap();
- let c = b.as_any().downcast_ref::<Float64Array>().unwrap();
+ let c = b.as_primitive::<Float64Type>();
assert_eq!(5.0, c.value(0));
assert_eq!(6.0, c.value(1));
assert_eq!(7.0, c.value(2));
@@ -4991,7 +4993,7 @@ mod tests {
fn test_cast_i32_to_u8() {
let array = Int32Array::from(vec![-5, 6, -7, 8, 100000000]);
let b = cast(&array, &DataType::UInt8).unwrap();
- let c = b.as_any().downcast_ref::<UInt8Array>().unwrap();
+ let c = b.as_primitive::<UInt8Type>();
assert!(!c.is_valid(0));
assert_eq!(6, c.value(1));
assert!(!c.is_valid(2));
@@ -5021,7 +5023,7 @@ mod tests {
let array = array.slice(2, 3);
let b = cast(&array, &DataType::UInt8).unwrap();
assert_eq!(3, b.len());
- let c = b.as_any().downcast_ref::<UInt8Array>().unwrap();
+ let c = b.as_primitive::<UInt8Type>();
assert!(!c.is_valid(0));
assert_eq!(8, c.value(1));
// overflows return None
@@ -5032,7 +5034,7 @@ mod tests {
fn test_cast_i32_to_i32() {
let array = Int32Array::from(vec![5, 6, 7, 8, 9]);
let b = cast(&array, &DataType::Int32).unwrap();
- let c = b.as_any().downcast_ref::<Int32Array>().unwrap();
+ let c = b.as_primitive::<Int32Type>();
assert_eq!(5, c.value(0));
assert_eq!(6, c.value(1));
assert_eq!(7, c.value(2));
@@ -5121,7 +5123,7 @@ mod tests {
fn test_cast_utf8_to_i32() {
let array = StringArray::from(vec!["5", "6", "seven", "8", "9.1"]);
let b = cast(&array, &DataType::Int32).unwrap();
- let c = b.as_any().downcast_ref::<Int32Array>().unwrap();
+ let c = b.as_primitive::<Int32Type>();
assert_eq!(5, c.value(0));
assert_eq!(6, c.value(1));
assert!(!c.is_valid(2));
@@ -5187,7 +5189,7 @@ mod tests {
fn test_cast_bool_to_i32() {
let array = BooleanArray::from(vec![Some(true), Some(false), None]);
let b = cast(&array, &DataType::Int32).unwrap();
- let c = b.as_any().downcast_ref::<Int32Array>().unwrap();
+ let c = b.as_primitive::<Int32Type>();
assert_eq!(1, c.value(0));
assert_eq!(0, c.value(1));
assert!(!c.is_valid(2));
@@ -5197,7 +5199,7 @@ mod tests {
fn test_cast_bool_to_f64() {
let array = BooleanArray::from(vec![Some(true), Some(false), None]);
let b = cast(&array, &DataType::Float64).unwrap();
- let c = b.as_any().downcast_ref::<Float64Array>().unwrap();
+ let c = b.as_primitive::<Float64Type>();
assert_eq!(1.0, c.value(0));
assert_eq!(0.0, c.value(1));
assert!(!c.is_valid(2));
@@ -5303,7 +5305,7 @@ mod tests {
let a = Date32Array::from(vec![10000, 17890]);
let array = Arc::new(a) as ArrayRef;
let b = cast(&array, &DataType::Date64).unwrap();
- let c = b.as_any().downcast_ref::<Date64Array>().unwrap();
+ let c = b.as_primitive::<Date64Type>();
assert_eq!(864000000000, c.value(0));
assert_eq!(1545696000000, c.value(1));
}
@@ -5313,7 +5315,7 @@ mod tests {
let a = Date64Array::from(vec![Some(864000000005), Some(1545696000001), None]);
let array = Arc::new(a) as ArrayRef;
let b = cast(&array, &DataType::Date32).unwrap();
- let c = b.as_any().downcast_ref::<Date32Array>().unwrap();
+ let c = b.as_primitive::<Date32Type>();
assert_eq!(10000, c.value(0));
assert_eq!(17890, c.value(1));
assert!(c.is_null(2));
@@ -5343,8 +5345,7 @@ mod tests {
match time_unit {
TimeUnit::Second => {
- let c =
- b.as_any().downcast_ref::<TimestampSecondArray>().unwrap();
+ let c = b.as_primitive::<TimestampSecondType>();
assert_eq!(1599566400, c.value(0));
assert!(c.is_null(1));
assert!(c.is_null(2));
@@ -5414,7 +5415,7 @@ mod tests {
for array in &[a1, a2] {
let to_type = DataType::Date32;
let b = cast(array, &to_type).unwrap();
- let c = b.as_any().downcast_ref::<Date32Array>().unwrap();
+ let c = b.as_primitive::<Date32Type>();
assert_eq!(17890, c.value(0));
assert!(c.is_null(1));
assert!(c.is_null(2));
@@ -5447,7 +5448,7 @@ mod tests {
for array in &[a1, a2] {
let to_type = DataType::Time32(TimeUnit::Second);
let b = cast(array, &to_type).unwrap();
- let c = b.as_any().downcast_ref::<Time32SecondArray>().unwrap();
+ let c = b.as_primitive::<Time32SecondType>();
assert_eq!(29315, c.value(0));
assert_eq!(29340, c.value(1));
assert!(c.is_null(2));
@@ -5482,7 +5483,7 @@ mod tests {
for array in &[a1, a2] {
let to_type = DataType::Time32(TimeUnit::Millisecond);
let b = cast(array, &to_type).unwrap();
- let c = b.as_any().downcast_ref::<Time32MillisecondArray>().unwrap();
+ let c = b.as_primitive::<Time32MillisecondType>();
assert_eq!(29315091, c.value(0));
assert_eq!(29340091, c.value(1));
assert!(c.is_null(2));
@@ -5513,7 +5514,7 @@ mod tests {
for array in &[a1, a2] {
let to_type = DataType::Time64(TimeUnit::Microsecond);
let b = cast(array, &to_type).unwrap();
- let c = b.as_any().downcast_ref::<Time64MicrosecondArray>().unwrap();
+ let c = b.as_primitive::<Time64MicrosecondType>();
assert_eq!(29315091323, c.value(0));
assert!(c.is_null(1));
assert!(c.is_null(2));
@@ -5542,7 +5543,7 @@ mod tests {
for array in &[a1, a2] {
let to_type = DataType::Time64(TimeUnit::Nanosecond);
let b = cast(array, &to_type).unwrap();
- let c = b.as_any().downcast_ref::<Time64NanosecondArray>().unwrap();
+ let c = b.as_primitive::<Time64NanosecondType>();
assert_eq!(29315091323414, c.value(0));
assert!(c.is_null(1));
assert!(c.is_null(2));
@@ -5571,7 +5572,7 @@ mod tests {
for array in &[a1, a2] {
let to_type = DataType::Date64;
let b = cast(array, &to_type).unwrap();
- let c = b.as_any().downcast_ref::<Date64Array>().unwrap();
+ let c = b.as_primitive::<Date64Type>();
assert_eq!(1599566400000, c.value(0));
assert!(c.is_null(1));
assert!(c.is_null(2));
@@ -5863,7 +5864,7 @@ mod tests {
fn test_cast_date32_to_int32() {
let array = Date32Array::from(vec![10000, 17890]);
let b = cast(&array, &DataType::Int32).unwrap();
- let c = b.as_any().downcast_ref::<Int32Array>().unwrap();
+ let c = b.as_primitive::<Int32Type>();
assert_eq!(10000, c.value(0));
assert_eq!(17890, c.value(1));
}
@@ -5872,7 +5873,7 @@ mod tests {
fn test_cast_int32_to_date32() {
let array = Int32Array::from(vec![10000, 17890]);
let b = cast(&array, &DataType::Date32).unwrap();
- let c = b.as_any().downcast_ref::<Date32Array>().unwrap();
+ let c = b.as_primitive::<Date32Type>();
assert_eq!(10000, c.value(0));
assert_eq!(17890, c.value(1));
}
@@ -5886,7 +5887,7 @@ mod tests {
])
.with_timezone("UTC".to_string());
let b = cast(&array, &DataType::Date32).unwrap();
- let c = b.as_any().downcast_ref::<Date32Array>().unwrap();
+ let c = b.as_primitive::<Date32Type>();
assert_eq!(10000, c.value(0));
assert_eq!(17890, c.value(1));
assert!(c.is_null(2));
@@ -5900,7 +5901,7 @@ mod tests {
None,
]);
let b = cast(&array, &DataType::Date64).unwrap();
- let c = b.as_any().downcast_ref::<Date64Array>().unwrap();
+ let c = b.as_primitive::<Date64Type>();
assert_eq!(864000000005, c.value(0));
assert_eq!(1545696000001, c.value(1));
assert!(c.is_null(2));
@@ -5908,7 +5909,7 @@ mod tests {
let array =
TimestampSecondArray::from(vec![Some(864000000005), Some(1545696000001)]);
let b = cast(&array, &DataType::Date64).unwrap();
- let c = b.as_any().downcast_ref::<Date64Array>().unwrap();
+ let c = b.as_primitive::<Date64Type>();
assert_eq!(864000000005000, c.value(0));
assert_eq!(1545696000001000, c.value(1));
@@ -5932,12 +5933,12 @@ mod tests {
let array = TimestampSecondArray::from(vec![Some(86405), Some(1), None])
.with_timezone("+01:00".to_string());
let b = cast(&array, &DataType::Time64(TimeUnit::Microsecond)).unwrap();
- let c = b.as_any().downcast_ref::<Time64MicrosecondArray>().unwrap();
+ let c = b.as_primitive::<Time64MicrosecondType>();
assert_eq!(3605000000, c.value(0));
assert_eq!(3601000000, c.value(1));
assert!(c.is_null(2));
let b = cast(&array, &DataType::Time64(TimeUnit::Nanosecond)).unwrap();
- let c = b.as_any().downcast_ref::<Time64NanosecondArray>().unwrap();
+ let c = b.as_primitive::<Time64NanosecondType>();
assert_eq!(3605000000000, c.value(0));
assert_eq!(3601000000000, c.value(1));
assert!(c.is_null(2));
@@ -5947,12 +5948,12 @@ mod tests {
.with_timezone("+01:00".to_string());
let array = Arc::new(a) as ArrayRef;
let b = cast(&array, &DataType::Time64(TimeUnit::Microsecond)).unwrap();
- let c = b.as_any().downcast_ref::<Time64MicrosecondArray>().unwrap();
+ let c = b.as_primitive::<Time64MicrosecondType>();
assert_eq!(3605000000, c.value(0));
assert_eq!(3601000000, c.value(1));
assert!(c.is_null(2));
let b = cast(&array, &DataType::Time64(TimeUnit::Nanosecond)).unwrap();
- let c = b.as_any().downcast_ref::<Time64NanosecondArray>().unwrap();
+ let c = b.as_primitive::<Time64NanosecondType>();
assert_eq!(3605000000000, c.value(0));
assert_eq!(3601000000000, c.value(1));
assert!(c.is_null(2));
@@ -5963,12 +5964,12 @@ mod tests {
.with_timezone("+01:00".to_string());
let array = Arc::new(a) as ArrayRef;
let b = cast(&array, &DataType::Time64(TimeUnit::Microsecond)).unwrap();
- let c = b.as_any().downcast_ref::<Time64MicrosecondArray>().unwrap();
+ let c = b.as_primitive::<Time64MicrosecondType>();
assert_eq!(3605000000, c.value(0));
assert_eq!(3601000000, c.value(1));
assert!(c.is_null(2));
let b = cast(&array, &DataType::Time64(TimeUnit::Nanosecond)).unwrap();
- let c = b.as_any().downcast_ref::<Time64NanosecondArray>().unwrap();
+ let c = b.as_primitive::<Time64NanosecondType>();
assert_eq!(3605000000000, c.value(0));
assert_eq!(3601000000000, c.value(1));
assert!(c.is_null(2));
@@ -5982,12 +5983,12 @@ mod tests {
.with_timezone("+01:00".to_string());
let array = Arc::new(a) as ArrayRef;
let b = cast(&array, &DataType::Time64(TimeUnit::Microsecond)).unwrap();
- let c = b.as_any().downcast_ref::<Time64MicrosecondArray>().unwrap();
+ let c = b.as_primitive::<Time64MicrosecondType>();
assert_eq!(3605000000, c.value(0));
assert_eq!(3601000000, c.value(1));
assert!(c.is_null(2));
let b = cast(&array, &DataType::Time64(TimeUnit::Nanosecond)).unwrap();
- let c = b.as_any().downcast_ref::<Time64NanosecondArray>().unwrap();
+ let c = b.as_primitive::<Time64NanosecondType>();
assert_eq!(3605000000000, c.value(0));
assert_eq!(3601000000000, c.value(1));
assert!(c.is_null(2));
@@ -6011,12 +6012,12 @@ mod tests {
.with_timezone("+01:00".to_string());
let array = Arc::new(a) as ArrayRef;
let b = cast(&array, &DataType::Time32(TimeUnit::Second)).unwrap();
- let c = b.as_any().downcast_ref::<Time32SecondArray>().unwrap();
+ let c = b.as_primitive::<Time32SecondType>();
assert_eq!(3605, c.value(0));
assert_eq!(3601, c.value(1));
assert!(c.is_null(2));
let b = cast(&array, &DataType::Time32(TimeUnit::Millisecond)).unwrap();
- let c = b.as_any().downcast_ref::<Time32MillisecondArray>().unwrap();
+ let c = b.as_primitive::<Time32MillisecondType>();
assert_eq!(3605000, c.value(0));
assert_eq!(3601000, c.value(1));
assert!(c.is_null(2));
@@ -6026,12 +6027,12 @@ mod tests {
.with_timezone("+01:00".to_string());
let array = Arc::new(a) as ArrayRef;
let b = cast(&array, &DataType::Time32(TimeUnit::Second)).unwrap();
- let c = b.as_any().downcast_ref::<Time32SecondArray>().unwrap();
+ let c = b.as_primitive::<Time32SecondType>();
assert_eq!(3605, c.value(0));
assert_eq!(3601, c.value(1));
assert!(c.is_null(2));
let b = cast(&array, &DataType::Time32(TimeUnit::Millisecond)).unwrap();
- let c = b.as_any().downcast_ref::<Time32MillisecondArray>().unwrap();
+ let c = b.as_primitive::<Time32MillisecondType>();
assert_eq!(3605000, c.value(0));
assert_eq!(3601000, c.value(1));
assert!(c.is_null(2));
@@ -6042,12 +6043,12 @@ mod tests {
.with_timezone("+01:00".to_string());
let array = Arc::new(a) as ArrayRef;
let b = cast(&array, &DataType::Time32(TimeUnit::Second)).unwrap();
- let c = b.as_any().downcast_ref::<Time32SecondArray>().unwrap();
+ let c = b.as_primitive::<Time32SecondType>();
assert_eq!(3605, c.value(0));
assert_eq!(3601, c.value(1));
assert!(c.is_null(2));
let b = cast(&array, &DataType::Time32(TimeUnit::Millisecond)).unwrap();
- let c = b.as_any().downcast_ref::<Time32MillisecondArray>().unwrap();
+ let c = b.as_primitive::<Time32MillisecondType>();
assert_eq!(3605000, c.value(0));
assert_eq!(3601000, c.value(1));
assert!(c.is_null(2));
@@ -6061,12 +6062,12 @@ mod tests {
.with_timezone("+01:00".to_string());
let array = Arc::new(a) as ArrayRef;
let b = cast(&array, &DataType::Time32(TimeUnit::Second)).unwrap();
- let c = b.as_any().downcast_ref::<Time32SecondArray>().unwrap();
+ let c = b.as_primitive::<Time32SecondType>();
assert_eq!(3605, c.value(0));
assert_eq!(3601, c.value(1));
assert!(c.is_null(2));
let b = cast(&array, &DataType::Time32(TimeUnit::Millisecond)).unwrap();
- let c = b.as_any().downcast_ref::<Time32MillisecondArray>().unwrap();
+ let c = b.as_primitive::<Time32MillisecondType>();
assert_eq!(3605000, c.value(0));
assert_eq!(3601000, c.value(1));
assert!(c.is_null(2));
@@ -6163,7 +6164,7 @@ mod tests {
let array =
Date64Array::from(vec![Some(864000000005), Some(1545696000001), None]);
let b = cast(&array, &DataType::Timestamp(TimeUnit::Second, None)).unwrap();
- let c = b.as_any().downcast_ref::<TimestampSecondArray>().unwrap();
+ let c = b.as_primitive::<TimestampSecondType>();
assert_eq!(864000000, c.value(0));
assert_eq!(1545696000, c.value(1));
assert!(c.is_null(2));
@@ -6220,7 +6221,7 @@ mod tests {
])
.with_timezone("UTC".to_string());
let b = cast(&array, &DataType::Int64).unwrap();
- let c = b.as_any().downcast_ref::<Int64Array>().unwrap();
+ let c = b.as_primitive::<Int64Type>();
assert_eq!(&DataType::Int64, c.data_type());
assert_eq!(864000000005, c.value(0));
assert_eq!(1545696000001, c.value(1));
@@ -6385,7 +6386,7 @@ mod tests {
None,
]);
let b = cast(&array, &DataType::Timestamp(TimeUnit::Second, None)).unwrap();
- let c = b.as_any().downcast_ref::<TimestampSecondArray>().unwrap();
+ let c = b.as_primitive::<TimestampSecondType>();
assert_eq!(864000003, c.value(0));
assert_eq!(1545696002, c.value(1));
assert!(c.is_null(2));
@@ -6405,7 +6406,7 @@ mod tests {
for arr in duration_arrays {
assert!(can_cast_types(arr.data_type(), &DataType::Int64));
let result = cast(&arr, &DataType::Int64).unwrap();
- let result = result.as_any().downcast_ref::<Int64Array>().unwrap();
+ let result = result.as_primitive::<Int64Type>();
assert_eq!(base.as_slice(), result.values());
}
}
@@ -6424,7 +6425,7 @@ mod tests {
for arr in interval_arrays {
assert!(can_cast_types(arr.data_type(), &DataType::Int64));
let result = cast(&arr, &DataType::Int64).unwrap();
- let result = result.as_any().downcast_ref::<Int64Array>().unwrap();
+ let result = result.as_primitive::<Int64Type>();
assert_eq!(base.as_slice(), result.values());
}
}
@@ -7803,7 +7804,7 @@ mod tests {
]);
let array = Arc::new(a) as ArrayRef;
let b = cast(&array, &DataType::Date32).unwrap();
- let c = b.as_any().downcast_ref::<Date32Array>().unwrap();
+ let c = b.as_primitive::<Date32Type>();
// test valid inputs
let date_value = since(
@@ -7840,7 +7841,7 @@ mod tests {
]);
let array = Arc::new(a) as ArrayRef;
let b = cast(&array, &DataType::Date64).unwrap();
- let c = b.as_any().downcast_ref::<Date64Array>().unwrap();
+ let c = b.as_primitive::<Date64Type>();
// test valid inputs
assert!(c.is_valid(0)); // "2000-01-01T12:00:00"
@@ -8627,7 +8628,7 @@ mod tests {
let a = Date32Array::from(vec![Some(18628), Some(18993), None]); // 2021-1-1, 2022-1-1
let array = Arc::new(a) as ArrayRef;
let b = cast(&array, &DataType::Timestamp(TimeUnit::Second, None)).unwrap();
- let c = b.as_any().downcast_ref::<TimestampSecondArray>().unwrap();
+ let c = b.as_primitive::<TimestampSecondType>();
assert_eq!(1609459200, c.value(0));
assert_eq!(1640995200, c.value(1));
assert!(c.is_null(2));