@@ -109,8 +109,8 @@ mod tests {
109109 use crate :: {
110110 array:: {
111111 self , new_null_array, Array , Date32Array , Date64Array ,
112- FixedSizeBinaryBuilder , PrimitiveBuilder , StringArray , StringBuilder ,
113- StringDictionaryBuilder , StructArray , Time32MillisecondArray ,
112+ FixedSizeBinaryBuilder , Float16Array , PrimitiveBuilder , StringArray ,
113+ StringBuilder , StringDictionaryBuilder , StructArray , Time32MillisecondArray ,
114114 Time32SecondArray , Time64MicrosecondArray , Time64NanosecondArray ,
115115 TimestampMicrosecondArray , TimestampMillisecondArray ,
116116 TimestampNanosecondArray , TimestampSecondArray ,
@@ -123,6 +123,8 @@ mod tests {
123123 use std:: fmt:: Write ;
124124 use std:: sync:: Arc ;
125125
126+ use half:: f16;
127+
126128 #[ test]
127129 fn test_pretty_format_batches ( ) -> Result < ( ) > {
128130 // define a schema.
@@ -692,4 +694,34 @@ mod tests {
692694
693695 Ok ( ( ) )
694696 }
697+
698+ #[ test]
699+ fn test_float16_display ( ) -> Result < ( ) > {
700+ let values = vec ! [
701+ Some ( f16:: from_f32( f32 :: NAN ) ) ,
702+ Some ( f16:: from_f32( 4.0 ) ) ,
703+ Some ( f16:: from_f32( f32 :: NEG_INFINITY ) ) ,
704+ ] ;
705+ let array = Arc :: new ( values. into_iter ( ) . collect :: < Float16Array > ( ) ) as ArrayRef ;
706+
707+ let schema = Arc :: new ( Schema :: new ( vec ! [ Field :: new(
708+ "f16" ,
709+ array. data_type( ) . clone( ) ,
710+ true ,
711+ ) ] ) ) ;
712+
713+ let batch = RecordBatch :: try_new ( schema, vec ! [ array] ) ?;
714+
715+ let table = pretty_format_batches ( & [ batch] ) ?. to_string ( ) ;
716+
717+ let expected = vec ! [
718+ "+------+" , "| f16 |" , "+------+" , "| NaN |" , "| 4 |" , "| -inf |" ,
719+ "+------+" ,
720+ ] ;
721+
722+ let actual: Vec < & str > = table. lines ( ) . collect ( ) ;
723+ assert_eq ! ( expected, actual, "Actual result:\n {}" , table) ;
724+
725+ Ok ( ( ) )
726+ }
695727}
0 commit comments