@@ -1044,18 +1044,39 @@ mod tests {
1044
1044
// - exist null, input null; values not equal
1045
1045
// - exist null, input null; values equal
1046
1046
// - exist not null, input null
1047
- // - exist not null, input not null; values not equal
1048
- // - exist not null, input not null; values equal
1047
+ // - exist not null, input not null; value lens not equal
1048
+ // - exist not null, input not null; value not equal(inlined case)
1049
+ // - exist not null, input not null; value equal(inlined case)
1050
+ //
1051
+ // - exist not null, input not null; value not equal
1052
+ // (non-inlined case + prefix not equal)
1053
+ //
1054
+ // - exist not null, input not null; value not equal
1055
+ // (non-inlined case + value in `completed`)
1056
+ //
1057
+ // - exist not null, input not null; value equal
1058
+ // (non-inlined case + value in `completed`)
1059
+ //
1060
+ // - exist not null, input not null; value not equal
1061
+ // (non-inlined case + value in `in_progress`)
1062
+ //
1063
+ // - exist not null, input not null; value equal
1064
+ // (non-inlined case + value in `in_progress`)
1049
1065
1050
- let mut builder = ByteViewGroupValueBuilder :: < StringViewType > :: new ( ) ;
1066
+ // Set the block size to 40 for ensuring some unlined values are in `in_progress`,
1067
+ // and some are in `completed`, so both two branches in `value` function can be covered.
1068
+ let mut builder =
1069
+ ByteViewGroupValueBuilder :: < StringViewType > :: new ( ) . with_max_block_size ( 60 ) ;
1051
1070
let builder_array = Arc :: new ( StringViewArray :: from ( vec ! [
1052
1071
None ,
1053
1072
None ,
1054
1073
None ,
1055
1074
Some ( "foo" ) ,
1075
+ Some ( "bazz" ) ,
1076
+ Some ( "foo" ) ,
1056
1077
Some ( "bar" ) ,
1057
- Some ( "this string is quite long " ) ,
1058
- Some ( "baz " ) ,
1078
+ Some ( "I am a long string for test eq in completed " ) ,
1079
+ Some ( "I am a long string for test eq in progress " ) ,
1059
1080
] ) ) as ArrayRef ;
1060
1081
builder. append_val ( & builder_array, 0 ) ;
1061
1082
builder. append_val ( & builder_array, 1 ) ;
@@ -1064,28 +1085,40 @@ mod tests {
1064
1085
builder. append_val ( & builder_array, 4 ) ;
1065
1086
builder. append_val ( & builder_array, 5 ) ;
1066
1087
builder. append_val ( & builder_array, 6 ) ;
1088
+ builder. append_val ( & builder_array, 7 ) ;
1089
+ builder. append_val ( & builder_array, 8 ) ;
1067
1090
1068
1091
// Define input array
1069
1092
let ( views, buffer, _nulls) = StringViewArray :: from ( vec ! [
1070
1093
Some ( "foo" ) ,
1071
- Some ( "bar" ) , // set to null
1072
- Some ( "this string is quite long" ) , // set to null
1094
+ Some ( "bar" ) , // set to null
1073
1095
None ,
1074
1096
None ,
1075
- Some ( "foo" ) ,
1076
1097
Some ( "baz" ) ,
1098
+ Some ( "oof" ) ,
1099
+ Some ( "bar" ) ,
1100
+ Some ( "i am a long string for test eq in completed" ) ,
1101
+ Some ( "I am a long string for test eq in COMPLETED" ) ,
1102
+ Some ( "I am a long string for test eq in completed" ) ,
1103
+ Some ( "I am a long string for test eq in PROGRESS" ) ,
1104
+ Some ( "I am a long string for test eq in progress" ) ,
1077
1105
] )
1078
1106
. into_parts ( ) ;
1079
1107
1080
1108
// explicitly build a boolean buffer where one of the null values also happens to match
1081
- let mut boolean_buffer_builder = BooleanBufferBuilder :: new ( 6 ) ;
1109
+ let mut boolean_buffer_builder = BooleanBufferBuilder :: new ( 9 ) ;
1082
1110
boolean_buffer_builder. append ( true ) ;
1083
1111
boolean_buffer_builder. append ( false ) ; // this sets Some("bar") to null above
1084
- boolean_buffer_builder. append ( false ) ; // this sets Some("thisstringisquitelong") to null above
1085
1112
boolean_buffer_builder. append ( false ) ;
1086
1113
boolean_buffer_builder. append ( false ) ;
1087
1114
boolean_buffer_builder. append ( true ) ;
1088
1115
boolean_buffer_builder. append ( true ) ;
1116
+ boolean_buffer_builder. append ( true ) ;
1117
+ boolean_buffer_builder. append ( true ) ;
1118
+ boolean_buffer_builder. append ( true ) ;
1119
+ boolean_buffer_builder. append ( true ) ;
1120
+ boolean_buffer_builder. append ( true ) ;
1121
+ boolean_buffer_builder. append ( true ) ;
1089
1122
let nulls = NullBuffer :: new ( boolean_buffer_builder. finish ( ) ) ;
1090
1123
let input_array =
1091
1124
Arc :: new ( StringViewArray :: new ( views, buffer, Some ( nulls) ) ) as ArrayRef ;
@@ -1098,6 +1131,11 @@ mod tests {
1098
1131
assert ! ( !builder. equal_to( 4 , & input_array, 4 ) ) ;
1099
1132
assert ! ( !builder. equal_to( 5 , & input_array, 5 ) ) ;
1100
1133
assert ! ( builder. equal_to( 6 , & input_array, 6 ) ) ;
1134
+ assert ! ( !builder. equal_to( 7 , & input_array, 7 ) ) ;
1135
+ assert ! ( !builder. equal_to( 7 , & input_array, 8 ) ) ;
1136
+ assert ! ( builder. equal_to( 7 , & input_array, 9 ) ) ;
1137
+ assert ! ( !builder. equal_to( 8 , & input_array, 10 ) ) ;
1138
+ assert ! ( builder. equal_to( 8 , & input_array, 11 ) ) ;
1101
1139
}
1102
1140
1103
1141
#[ test]
@@ -1149,7 +1187,7 @@ mod tests {
1149
1187
1150
1188
let input_array: ArrayRef = Arc :: new ( input_array) ;
1151
1189
let first_ones_to_append = 16 ; // For testing situation 1~5
1152
- let second_ones_to_append = 3 ; // For testing situation 6
1190
+ let second_ones_to_append = 4 ; // For testing situation 6
1153
1191
let final_ones_to_append = input_array. len ( ) ; // For testing situation 7
1154
1192
1155
1193
// ####### Test situation 1~5 #######
0 commit comments