Observed data parser: Avoid infinite loop on parsing of invalid file

This commit is contained in:
Rebecca Cox 2017-10-10 12:02:21 +02:00
parent 2799d86c01
commit 9aaf56b4ef
2 changed files with 36 additions and 4 deletions

View File

@ -308,12 +308,10 @@ std::vector<ColumnInfo> RifEclipseUserDataParserTools::columnInfoForTable(std::s
header = false;
break;
}
else if (words.size() > columnCount)
{
continue;
}
else
{
if (words.size() > columnCount) break;
size_t diff = columnCount - words.size();
if (diff == columnCount)

View File

@ -752,3 +752,37 @@ TEST(RifKeywordBasedRsmspecParserTest, TestTimeSteps)
EXPECT_EQ(day1, timeSteps[0]);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
TEST(RifColumnBasedRsmspecParserTest, TestTooManyColumnsInFile)
{
QString data;
QTextStream out(&data);
out << "1 \n";
out << "--------------------------------------- \n";
out << "SUMMARY OF RUN BHP_THP USER FILE DATA VECTORS \n";
out << "--------------------------------------- \n";
out << "TIME WTHPH WBHPH \n";
out << "DAYS BARSA BARSA \n";
out << " \n";
out << " K-6HWG K-6HWG \n";
out << " 1 0.0 0.0 0.0 \n";
out << " 2 0.0 0.0 0.0 \n";
out << " 3 0.0 0.0 0.0 \n";
out << " 4 0.0 0.0 0.0 \n";
out << " 5 0.0 0.0 0.0 \n";
out << " 6 0.0 0.0 0.0 \n";
out << " 7 0.0 0.0 0.0 \n";
out << " 8 0.0 0.0 0.0 \n";
out << " 9 0.0 0.0 0.0 \n";
out << " 10 0.0 0.0 0.0 \n";
out << " \n";
RifColumnBasedUserDataParser parser = RifColumnBasedUserDataParser(data);
std::vector< std::vector<ColumnInfo> > tables = parser.tables();
ASSERT_EQ(tables.size(), 1);
}