Files
ResInsight/ApplicationLibCode/UnitTests/RiaEnsembleImportTools-Test.cpp
T

73 lines
3.4 KiB
C++

#include "gtest/gtest.h"
#include "Tools/Ensemble/RiaEnsembleImportTools.h"
namespace internal
{
QString placeholderText()
{
return "$(INDEX)";
}
} // namespace internal
TEST( RimPathPatternFileSetTest, OneVaryingNumberRealizations )
{
QStringList filePaths = { "drogon-varying-grid-geometry/realization-0/iter-0/eclipse/model/DROGON-0.EGRID",
"drogon-varying-grid-geometry/realization-1/iter-0/eclipse/model/DROGON-1.EGRID",
"drogon-varying-grid-geometry/realization-2/iter-0/eclipse/model/DROGON-2.EGRID",
"drogon-varying-grid-geometry/realization-3/iter-0/eclipse/model/DROGON-3.EGRID",
"drogon-varying-grid-geometry/realization-13/iter-0/eclipse/model/DROGON-13.EGRID" };
const auto& [basePath, numberRange] = RiaEnsembleImportTools::findPathPattern( filePaths, internal::placeholderText() );
EXPECT_STREQ( basePath.toStdString().data(),
"drogon-varying-grid-geometry/realization-$(INDEX)/iter-0/eclipse/model/DROGON-$(INDEX).EGRID" );
EXPECT_STREQ( numberRange.toStdString().data(), "0-3, 13" );
const auto paths = RiaEnsembleImportTools::createPathsFromPattern( basePath, numberRange, internal::placeholderText() );
EXPECT_EQ( paths.size(), 5 );
if ( paths.size() != filePaths.size() ) return;
for ( auto i = 0; i < paths.size(); i++ )
{
EXPECT_STREQ( paths[i].toStdString().data(), filePaths[i].toStdString().data() );
}
}
TEST( RimPathPatternFileSetTest, OneVaryingNumberMultipleLocations )
{
QStringList filePaths = { "file_1/path-02/real-1.txt", "file_2/path-02/real-2.txt", "file_3/path-02/real-3.txt", "file_13/path-02/real-13.txt" };
const auto& [basePath, numberRange] = RiaEnsembleImportTools::findPathPattern( filePaths, internal::placeholderText() );
EXPECT_STREQ( basePath.toStdString().data(), "file_$(INDEX)/path-02/real-$(INDEX).txt" );
EXPECT_STREQ( numberRange.toStdString().data(), "1-3, 13" );
const auto paths = RiaEnsembleImportTools::createPathsFromPattern( basePath, numberRange, internal::placeholderText() );
EXPECT_EQ( paths.size(), 4 );
EXPECT_STREQ( paths[0].toStdString().data(), "file_1/path-02/real-1.txt" );
EXPECT_STREQ( paths[1].toStdString().data(), "file_2/path-02/real-2.txt" );
EXPECT_STREQ( paths[2].toStdString().data(), "file_3/path-02/real-3.txt" );
EXPECT_STREQ( paths[3].toStdString().data(), "file_13/path-02/real-13.txt" );
}
TEST( RimPathPatternFileSetTest, OneVaryingNumber )
{
QStringList filePaths = { "file_001.txt", "file_002.txt", "file_003.txt" };
auto result = RiaEnsembleImportTools::findPathPattern( filePaths, internal::placeholderText() );
EXPECT_STREQ( result.first.toStdString().data(), "file_$(INDEX).txt" );
EXPECT_STREQ( result.second.toStdString().data(), "1-3" );
}
TEST( RimPathPatternFileSetTest, EmptyInput )
{
QStringList filePaths;
auto result = RiaEnsembleImportTools::findPathPattern( filePaths, internal::placeholderText() );
EXPECT_TRUE( result.first.isEmpty() );
EXPECT_TRUE( result.second.isEmpty() );
}
TEST( RimPathPatternFileSetTest, NoVaryingNumbers )
{
QStringList filePaths = { "file_123.txt", "file_123.txt" };
auto result = RiaEnsembleImportTools::findPathPattern( filePaths, internal::placeholderText() );
EXPECT_TRUE( result.first.isEmpty() );
EXPECT_TRUE( result.second.isEmpty() );
}