()
| 2984 | |
| 2985 | #[test] |
| 2986 | fn test_unaligned() { |
| 2987 | let batch = RecordBatch::try_from_iter(vec![( |
| 2988 | "i32", |
| 2989 | Arc::new(Int32Array::from(vec![1, 2, 3, 4])) as _, |
| 2990 | )]) |
| 2991 | .unwrap(); |
| 2992 | |
| 2993 | let r#gen = IpcDataGenerator {}; |
| 2994 | let mut dict_tracker = DictionaryTracker::new(false); |
| 2995 | let (_, encoded) = r#gen |
| 2996 | .encode( |
| 2997 | &batch, |
| 2998 | &mut dict_tracker, |
| 2999 | &Default::default(), |
| 3000 | &mut Default::default(), |
| 3001 | ) |
| 3002 | .unwrap(); |
| 3003 | |
| 3004 | let message = root_as_message(&encoded.ipc_message).unwrap(); |
| 3005 | |
| 3006 | // Construct an unaligned buffer |
| 3007 | let mut buffer = MutableBuffer::with_capacity(encoded.arrow_data.len() + 1); |
| 3008 | buffer.push(0_u8); |
| 3009 | buffer.extend_from_slice(&encoded.arrow_data); |
| 3010 | let b = Buffer::from(buffer).slice(1); |
| 3011 | assert_ne!(b.as_ptr().align_offset(8), 0); |
| 3012 | |
| 3013 | let ipc_batch = message.header_as_record_batch().unwrap(); |
| 3014 | let roundtrip = RecordBatchDecoder::try_new( |
| 3015 | &b, |
| 3016 | ipc_batch, |
| 3017 | batch.schema(), |
| 3018 | &Default::default(), |
| 3019 | &message.version(), |
| 3020 | ) |
| 3021 | .unwrap() |
| 3022 | .with_require_alignment(false) |
| 3023 | .read_record_batch() |
| 3024 | .unwrap(); |
| 3025 | assert_eq!(batch, roundtrip); |
| 3026 | } |
| 3027 | |
| 3028 | #[test] |
| 3029 | fn test_unaligned_throws_error_with_require_alignment() { |
nothing calls this directly
no test coverage detected