mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Use template to convert arrow::ChunkedArray
This commit is contained in:
@@ -2,7 +2,10 @@
|
||||
|
||||
#include "RiaTestDataDirectory.h"
|
||||
|
||||
#include "RifArrowTools.h"
|
||||
|
||||
#undef signals
|
||||
#include <arrow/array/builder_primitive.h>
|
||||
#include <arrow/csv/api.h>
|
||||
#include <arrow/io/api.h>
|
||||
#include <arrow/scalar.h>
|
||||
@@ -51,3 +54,59 @@ TEST( RifParquetReaderTest, ReadValidFile )
|
||||
EXPECT_TRUE( scalar->Equals( arrow::Int64Scalar( i ) ) );
|
||||
}
|
||||
}
|
||||
|
||||
TEST( RifParquetReaderTest, ConvertIntChunkedArrays )
|
||||
{
|
||||
arrow::Status status;
|
||||
|
||||
arrow::Int32Builder int_builder;
|
||||
status = int_builder.Append( 1 );
|
||||
status = int_builder.Append( 2 );
|
||||
status = int_builder.Append( 3 );
|
||||
|
||||
std::shared_ptr<arrow::Array> int_array;
|
||||
status = int_builder.Finish( &int_array );
|
||||
|
||||
auto int_chunked_array = std::make_shared<arrow::ChunkedArray>( int_array );
|
||||
|
||||
{
|
||||
auto columnVector = RifArrowTools::chunkedArrayToVector<arrow::FloatArray, double>( int_chunked_array );
|
||||
EXPECT_EQ( columnVector.size(), 3 );
|
||||
}
|
||||
{
|
||||
auto columnVector = RifArrowTools::chunkedArrayToVector<arrow::Int32Array, int>( int_chunked_array );
|
||||
EXPECT_EQ( columnVector.size(), 3 );
|
||||
}
|
||||
}
|
||||
|
||||
TEST( RifParquetReaderTest, ConvertFloatChunkedArrays )
|
||||
{
|
||||
arrow::Status status;
|
||||
|
||||
// Create an Arrow double array
|
||||
std::vector<double> values = { 1.0, 2.0, 3.0, 4.0 };
|
||||
std::shared_ptr<arrow::Array> array;
|
||||
arrow::DoubleBuilder builder;
|
||||
status = builder.AppendValues( values );
|
||||
status = builder.Finish( &array );
|
||||
|
||||
// Create a chunked array from the Arrow array
|
||||
std::shared_ptr<arrow::ChunkedArray> chunkedArray = std::make_shared<arrow::ChunkedArray>( array );
|
||||
|
||||
// Call the function under test
|
||||
auto resultVector = RifArrowTools::chunkedArrayToVector<arrow::DoubleArray, double>( chunkedArray );
|
||||
|
||||
// Assert that the returned vector contains the expected values
|
||||
ASSERT_EQ( resultVector.size(), values.size() );
|
||||
for ( size_t i = 0; i < values.size(); ++i )
|
||||
{
|
||||
EXPECT_DOUBLE_EQ( resultVector[i], values[i] );
|
||||
}
|
||||
|
||||
auto floatVector = RifArrowTools::chunkedArrayToVector<arrow::DoubleArray, float>( chunkedArray );
|
||||
ASSERT_EQ( floatVector.size(), values.size() );
|
||||
for ( size_t i = 0; i < values.size(); ++i )
|
||||
{
|
||||
EXPECT_DOUBLE_EQ( floatVector[i], values[i] );
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user