MCPcopy Create free account
hub / github.com/apache/datafusion / generate_boolean_cases

Function generate_boolean_cases

datafusion/physical-expr/benches/binary_op.rs:40–141  ·  view source on GitHub ↗

Generates BooleanArrays with different true/false distributions for benchmarking. Returns a vector of tuples containing scenario name and corresponding BooleanArray. # Arguments - `TEST_ALL_FALSE` - Used to generate what kind of test data - `len` - Length of the BooleanArray to generate

(
    len: usize,
)

Source from the content-addressed store, hash-verified

38/// - `TEST_ALL_FALSE` - Used to generate what kind of test data
39/// - `len` - Length of the BooleanArray to generate
40fn generate_boolean_cases<const TEST_ALL_FALSE: bool>(
41 len: usize,
42) -> Vec<(String, BooleanArray)> {
43 let mut cases = Vec::with_capacity(6);
44
45 // Scenario 1: All elements false or all elements true
46 if TEST_ALL_FALSE {
47 let all_false = BooleanArray::from(vec![false; len]);
48 cases.push(("all_false".to_string(), all_false));
49 } else {
50 let all_true = BooleanArray::from(vec![true; len]);
51 cases.push(("all_true".to_string(), all_true));
52 }
53
54 // Scenario 2: Single true at first position or single false at first position
55 if TEST_ALL_FALSE {
56 let mut first_true = vec![false; len];
57 first_true[0] = true;
58 cases.push(("one_true_first".to_string(), BooleanArray::from(first_true)));
59 } else {
60 let mut first_false = vec![true; len];
61 first_false[0] = false;
62 cases.push((
63 "one_false_first".to_string(),
64 BooleanArray::from(first_false),
65 ));
66 }
67
68 // Scenario 3: Single true at last position or single false at last position
69 if TEST_ALL_FALSE {
70 let mut last_true = vec![false; len];
71 last_true[len - 1] = true;
72 cases.push(("one_true_last".to_string(), BooleanArray::from(last_true)));
73 } else {
74 let mut last_false = vec![true; len];
75 last_false[len - 1] = false;
76 cases.push(("one_false_last".to_string(), BooleanArray::from(last_false)));
77 }
78
79 // Scenario 4: Single true at exact middle or single false at exact middle
80 let mid = len / 2;
81 if TEST_ALL_FALSE {
82 let mut mid_true = vec![false; len];
83 mid_true[mid] = true;
84 cases.push(("one_true_middle".to_string(), BooleanArray::from(mid_true)));
85 } else {
86 let mut mid_false = vec![true; len];
87 mid_false[mid] = false;
88 cases.push((
89 "one_false_middle".to_string(),
90 BooleanArray::from(mid_false),
91 ));
92 }
93
94 // Scenario 5: Single true at 25% position or single false at 25% position
95 let mid_left = len / 4;
96 if TEST_ALL_FALSE {
97 let mut mid_left_true = vec![false; len];

Callers

nothing calls this directly

Calls 2

pushMethod · 0.45
to_stringMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…