@@ -304,10 +304,10 @@ mod tests {
304304 use std:: sync:: Arc ;
305305
306306 use crate :: array:: {
307- array:: Array , ArrayDataBuilder , ArrayRef , BinaryOffsetSizeTrait , BooleanArray ,
308- DecimalBuilder , FixedSizeBinaryBuilder , FixedSizeListBuilder , GenericBinaryArray ,
309- Int32Builder , ListBuilder , NullArray , PrimitiveBuilder , StringArray ,
310- StringDictionaryBuilder , StringOffsetSizeTrait , StructArray ,
307+ array:: Array , ArrayData , ArrayDataBuilder , ArrayRef , BinaryOffsetSizeTrait ,
308+ BooleanArray , DecimalBuilder , FixedSizeBinaryBuilder , FixedSizeListBuilder ,
309+ GenericBinaryArray , Int32Builder , ListBuilder , NullArray , PrimitiveBuilder ,
310+ StringArray , StringDictionaryBuilder , StringOffsetSizeTrait , StructArray ,
311311 } ;
312312 use crate :: array:: { GenericStringArray , Int32Array } ;
313313 use crate :: buffer:: Buffer ;
@@ -1297,4 +1297,38 @@ mod tests {
12971297 ) ;
12981298 test_equal ( & a, & b, false ) ;
12991299 }
1300+
1301+ #[ test]
1302+ fn test_non_null_empty_strings ( ) {
1303+ let s = StringArray :: from ( vec ! [ Some ( "" ) , Some ( "" ) , Some ( "" ) ] ) ;
1304+
1305+ let string1 = s. data ( ) ;
1306+
1307+ let string2 = ArrayData :: builder ( DataType :: Utf8 )
1308+ . len ( string1. len ( ) )
1309+ . buffers ( string1. buffers ( ) . to_vec ( ) )
1310+ . build ( )
1311+ . unwrap ( ) ;
1312+
1313+ // string2 is identical to string1 except that it has no validity buffer but since there
1314+ // are no nulls, string1 and string2 are equal
1315+ test_equal ( string1, & string2, true ) ;
1316+ }
1317+
1318+ #[ test]
1319+ fn test_null_empty_strings ( ) {
1320+ let s = StringArray :: from ( vec ! [ Some ( "" ) , None , Some ( "" ) ] ) ;
1321+
1322+ let string1 = s. data ( ) ;
1323+
1324+ let string2 = ArrayData :: builder ( DataType :: Utf8 )
1325+ . len ( string1. len ( ) )
1326+ . buffers ( string1. buffers ( ) . to_vec ( ) )
1327+ . build ( )
1328+ . unwrap ( ) ;
1329+
1330+ // string2 is identical to string1 except that it has no validity buffer since string1 has
1331+ // nulls in it, string1 and string2 are not equal
1332+ test_equal ( string1, & string2, false ) ;
1333+ }
13001334}
0 commit comments