• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

vortex-data / vortex / 16935267080

13 Aug 2025 11:00AM UTC coverage: 24.312% (-63.3%) from 87.658%
16935267080

Pull #4226

github

web-flow
Merge 81b48c7fb into baa6ea202
Pull Request #4226: Support converting TimestampTZ to and from duckdb

0 of 2 new or added lines in 1 file covered. (0.0%)

20666 existing lines in 469 files now uncovered.

8726 of 35892 relevant lines covered (24.31%)

147.74 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/vortex-array/src/arrays/bool/ops.rs
1
// SPDX-License-Identifier: Apache-2.0
2
// SPDX-FileCopyrightText: Copyright the Vortex contributors
3

4
use vortex_error::VortexResult;
5
use vortex_scalar::Scalar;
6

7
use crate::arrays::{BoolArray, BoolVTable};
8
use crate::vtable::{OperationsVTable, ValidityHelper};
9
use crate::{ArrayRef, IntoArray};
10

11
impl OperationsVTable<BoolVTable> for BoolVTable {
UNCOV
12
    fn slice(array: &BoolArray, start: usize, stop: usize) -> VortexResult<ArrayRef> {
×
UNCOV
13
        Ok(BoolArray::new(
×
UNCOV
14
            array.boolean_buffer().slice(start, stop - start),
×
UNCOV
15
            array.validity().slice(start, stop)?,
×
16
        )
UNCOV
17
        .into_array())
×
UNCOV
18
    }
×
19

UNCOV
20
    fn scalar_at(array: &BoolArray, index: usize) -> VortexResult<Scalar> {
×
UNCOV
21
        Ok(Scalar::bool(
×
UNCOV
22
            array.boolean_buffer().value(index),
×
UNCOV
23
            array.dtype().nullability(),
×
UNCOV
24
        ))
×
UNCOV
25
    }
×
26
}
27

28
#[cfg(test)]
29
mod tests {
30
    use super::*;
31
    use crate::ToCanonical;
32

33
    #[test]
34
    fn test_slice_large() {
35
        let arr = BoolArray::from_iter(std::iter::repeat_n(Some(true), 100));
36
        let sliced_arr = arr.slice(8, 16).unwrap().to_bool().unwrap();
37
        assert_eq!(sliced_arr.len(), 8);
38
        assert_eq!(sliced_arr.boolean_buffer().len(), 8);
39
        assert_eq!(sliced_arr.boolean_buffer().offset(), 0);
40
    }
41

42
    #[test]
43
    fn test_slice() {
44
        let arr = BoolArray::from_iter([Some(true), Some(true), None, Some(false), None]);
45
        let sliced_arr = arr.slice(1, 4).unwrap().to_bool().unwrap();
46

47
        assert_eq!(sliced_arr.len(), 3);
48

49
        let s = sliced_arr.scalar_at(0).unwrap();
50
        assert_eq!(s.as_bool().value(), Some(true));
51

52
        let s = sliced_arr.scalar_at(1).unwrap();
53
        assert!(!sliced_arr.is_valid(1).unwrap());
54
        assert!(s.is_null());
55

56
        let s = sliced_arr.scalar_at(2).unwrap();
57
        assert_eq!(s.as_bool().value(), Some(false));
58
    }
59
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc