@@ -43,7 +43,8 @@ mod tests {
43
43
use crate :: types:: { LogicalPrimitiveType , WrapperType } ;
44
44
use crate :: vectors:: operations:: VectorOp ;
45
45
use crate :: vectors:: {
46
- BooleanVector , ConstantVector , Int32Vector , PrimitiveVector , StringVector , UInt32Vector ,
46
+ BooleanVector , ConstantVector , Int32Vector , NullVector , PrimitiveVector , StringVector ,
47
+ UInt32Vector ,
47
48
} ;
48
49
49
50
fn check_take_primitive < T > (
@@ -132,6 +133,32 @@ mod tests {
132
133
fn test_take_constant ( ) {
133
134
check_take_constant ( 2 , 5 , & [ 3 , 4 ] ) ;
134
135
check_take_constant ( 3 , 10 , & [ 1 , 2 , 3 ] ) ;
136
+ check_take_constant ( 4 , 10 , & [ 1 , 5 , 3 , 6 ] ) ;
137
+ check_take_constant ( 5 , 10 , & [ 1 , 9 , 8 , 7 , 3 ] ) ;
138
+ }
139
+
140
+ #[ test]
141
+ #[ should_panic]
142
+ fn test_take_constant_out_of_index ( ) {
143
+ check_take_constant ( 2 , 5 , & [ 3 , 5 ] ) ;
144
+ }
145
+
146
+ #[ test]
147
+ #[ should_panic]
148
+ fn test_take_out_of_index ( ) {
149
+ let v = Int32Vector :: from_slice ( & [ 1 , 2 , 3 , 4 , 5 ] ) ;
150
+ let indies = UInt32Vector :: from_slice ( & [ 1 , 5 , 6 ] ) ;
151
+ v. take ( & indies) . unwrap ( ) ;
152
+ }
153
+
154
+ #[ test]
155
+ fn test_take_null ( ) {
156
+ let v = NullVector :: new ( 5 ) ;
157
+ let indices = UInt32Vector :: from_slice ( [ 1 , 3 , 2 ] ) ;
158
+ let out = v. take ( & indices) . unwrap ( ) ;
159
+
160
+ let expect: VectorRef = Arc :: new ( NullVector :: new ( 3 ) ) ;
161
+ assert_eq ! ( expect, out) ;
135
162
}
136
163
137
164
#[ test]
0 commit comments