1717using System ;
1818using System . Collections . Generic ;
1919using System . Linq ;
20+ using System . Numerics ;
2021using Xunit ;
2122
2223namespace Apache . Arrow . Tests
@@ -28,36 +29,49 @@ public class ArrayBuilderTests
2829 [ Fact ]
2930 public void PrimitiveArrayBuildersProduceExpectedArray ( )
3031 {
31- TestArrayBuilder < Int8Array , Int8Array . Builder > ( x => x . Append ( 10 ) . Append ( 20 ) . Append ( 30 ) ) ;
32- TestArrayBuilder < Int16Array , Int16Array . Builder > ( x => x . Append ( 10 ) . Append ( 20 ) . Append ( 30 ) ) ;
33- TestArrayBuilder < Int32Array , Int32Array . Builder > ( x => x . Append ( 10 ) . Append ( 20 ) . Append ( 30 ) ) ;
34- TestArrayBuilder < Int64Array , Int64Array . Builder > ( x => x . Append ( 10 ) . Append ( 20 ) . Append ( 30 ) ) ;
35- TestArrayBuilder < UInt8Array , UInt8Array . Builder > ( x => x . Append ( 10 ) . Append ( 20 ) . Append ( 30 ) ) ;
36- TestArrayBuilder < UInt16Array , UInt16Array . Builder > ( x => x . Append ( 10 ) . Append ( 20 ) . Append ( 30 ) ) ;
37- TestArrayBuilder < UInt32Array , UInt32Array . Builder > ( x => x . Append ( 10 ) . Append ( 20 ) . Append ( 30 ) ) ;
38- TestArrayBuilder < UInt64Array , UInt64Array . Builder > ( x => x . Append ( 10 ) . Append ( 20 ) . Append ( 30 ) ) ;
39- TestArrayBuilder < FloatArray , FloatArray . Builder > ( x => x . Append ( 10 ) . Append ( 20 ) . Append ( 30 ) ) ;
40- TestArrayBuilder < DoubleArray , DoubleArray . Builder > ( x => x . Append ( 10 ) . Append ( 20 ) . Append ( 30 ) ) ;
41- TestArrayBuilder < Time32Array , Time32Array . Builder > ( x => x . Append ( 10 ) . Append ( 20 ) . Append ( 30 ) ) ;
42- TestArrayBuilder < Time64Array , Time64Array . Builder > ( x => x . Append ( 10 ) . Append ( 20 ) . Append ( 30 ) ) ;
32+ Test < sbyte , Int8Array , Int8Array . Builder > ( ) ;
33+ Test < short , Int16Array , Int16Array . Builder > ( ) ;
34+ Test < int , Int32Array , Int32Array . Builder > ( ) ;
35+ Test < long , Int64Array , Int64Array . Builder > ( ) ;
36+ Test < byte , UInt8Array , UInt8Array . Builder > ( ) ;
37+ Test < ushort , UInt16Array , UInt16Array . Builder > ( ) ;
38+ Test < uint , UInt32Array , UInt32Array . Builder > ( ) ;
39+ Test < ulong , UInt64Array , UInt64Array . Builder > ( ) ;
40+ Test < Half , HalfFloatArray , HalfFloatArray . Builder > ( ) ;
41+ Test < float , FloatArray , FloatArray . Builder > ( ) ;
42+ Test < double , DoubleArray , DoubleArray . Builder > ( ) ;
43+ Test < int , Time32Array , Time32Array . Builder > ( ) ;
44+ Test < long , Time64Array , Time64Array . Builder > ( ) ;
45+
46+ static void Test < T , TArray , TBuilder > ( )
47+ where T : struct , INumber < T >
48+ where TArray : PrimitiveArray < T >
49+ where TBuilder : PrimitiveArrayBuilder < T , TArray , TBuilder > , new ( ) =>
50+ TestArrayBuilder < TArray , TBuilder > ( x => x . Append ( T . CreateChecked ( 10 ) ) . Append ( T . CreateChecked ( 20 ) ) . Append ( T . CreateChecked ( 30 ) ) ) ;
4351 }
4452
4553 [ Fact ]
4654 public void PrimitiveArrayBuildersProduceExpectedArrayWithNulls ( )
4755 {
48- TestArrayBuilder < Int8Array , Int8Array . Builder > ( x => x . Append ( 123 ) . AppendNull ( ) . AppendNull ( ) . Append ( 127 ) , 4 , 2 , 0x09 ) ;
49- TestArrayBuilder < Int16Array , Int16Array . Builder > ( x => x . Append ( 123 ) . AppendNull ( ) . AppendNull ( ) . Append ( 456 ) , 4 , 2 , 0x09 ) ;
50- TestArrayBuilder < Int32Array , Int32Array . Builder > ( x => x . Append ( 123 ) . AppendNull ( ) . AppendNull ( ) . Append ( 456 ) , 4 , 2 , 0x09 ) ;
51- TestArrayBuilder < Int64Array , Int64Array . Builder > ( x => x . Append ( 123 ) . AppendNull ( ) . AppendNull ( ) . Append ( 456 ) , 4 , 2 , 0x09 ) ;
52- TestArrayBuilder < UInt8Array , UInt8Array . Builder > ( x => x . Append ( 123 ) . AppendNull ( ) . AppendNull ( ) . Append ( 127 ) , 4 , 2 , 0x09 ) ;
53- TestArrayBuilder < UInt16Array , UInt16Array . Builder > ( x => x . Append ( 123 ) . AppendNull ( ) . AppendNull ( ) . Append ( 456 ) , 4 , 2 , 0x09 ) ;
54- TestArrayBuilder < UInt32Array , UInt32Array . Builder > ( x => x . Append ( 123 ) . AppendNull ( ) . AppendNull ( ) . Append ( 456 ) , 4 , 2 , 0x09 ) ;
55- TestArrayBuilder < UInt64Array , UInt64Array . Builder > ( x => x . Append ( 123 ) . AppendNull ( ) . AppendNull ( ) . Append ( 456 ) , 4 , 2 , 0x09 ) ;
56- TestArrayBuilder < UInt64Array , UInt64Array . Builder > ( x => x . Append ( 123 ) . AppendNull ( ) . AppendNull ( ) . Append ( 456 ) , 4 , 2 , 0x09 ) ;
57- TestArrayBuilder < FloatArray , FloatArray . Builder > ( x => x . Append ( 123 ) . AppendNull ( ) . AppendNull ( ) . Append ( 456 ) , 4 , 2 , 0x09 ) ;
58- TestArrayBuilder < DoubleArray , DoubleArray . Builder > ( x => x . Append ( 123 ) . AppendNull ( ) . AppendNull ( ) . Append ( 456 ) , 4 , 2 , 0x09 ) ;
59- TestArrayBuilder < Time32Array , Time32Array . Builder > ( x => x . Append ( 123 ) . AppendNull ( ) . AppendNull ( ) . Append ( 456 ) , 4 , 2 , 0x09 ) ;
60- TestArrayBuilder < Time64Array , Time64Array . Builder > ( x => x . Append ( 123 ) . AppendNull ( ) . AppendNull ( ) . Append ( 456 ) , 4 , 2 , 0x09 ) ;
56+ Test < sbyte , Int8Array , Int8Array . Builder > ( ) ;
57+ Test < short , Int16Array , Int16Array . Builder > ( ) ;
58+ Test < int , Int32Array , Int32Array . Builder > ( ) ;
59+ Test < long , Int64Array , Int64Array . Builder > ( ) ;
60+ Test < byte , UInt8Array , UInt8Array . Builder > ( ) ;
61+ Test < ushort , UInt16Array , UInt16Array . Builder > ( ) ;
62+ Test < uint , UInt32Array , UInt32Array . Builder > ( ) ;
63+ Test < ulong , UInt64Array , UInt64Array . Builder > ( ) ;
64+ Test < Half , HalfFloatArray , HalfFloatArray . Builder > ( ) ;
65+ Test < float , FloatArray , FloatArray . Builder > ( ) ;
66+ Test < double , DoubleArray , DoubleArray . Builder > ( ) ;
67+ Test < int , Time32Array , Time32Array . Builder > ( ) ;
68+ Test < long , Time64Array , Time64Array . Builder > ( ) ;
69+
70+ static void Test < T , TArray , TBuilder > ( )
71+ where T : struct , INumber < T >
72+ where TArray : PrimitiveArray < T >
73+ where TBuilder : PrimitiveArrayBuilder < T , TArray , TBuilder > , new ( ) =>
74+ TestArrayBuilder < TArray , TBuilder > ( x => x . Append ( T . CreateChecked ( 123 ) ) . AppendNull ( ) . AppendNull ( ) . Append ( T . CreateChecked ( 127 ) ) , 4 , 2 , 0x09 ) ;
6175 }
6276
6377 [ Fact ]
@@ -138,7 +152,7 @@ List<string> ConvertStringArrayToList(StringArray array)
138152 [ Fact ]
139153 public void ListArrayBuilderValidityBuffer ( )
140154 {
141- ListArray listArray = new ListArray . Builder ( Int64Type . Default ) . Append ( ) . AppendNull ( ) . Build ( ) ;
155+ ListArray listArray = new ListArray . Builder ( Int64Type . Default ) . Append ( ) . AppendNull ( ) . Build ( ) ;
142156 Assert . False ( listArray . IsValid ( 2 ) ) ;
143157 }
144158
0 commit comments