From e20be57d8b546c44ec15a45966723310b80a9a2b Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Tue, 16 Feb 2021 08:26:17 +0100 Subject: [PATCH] FieldProps can return invalid data if allow_unsupported is true --- src/opm/parser/eclipse/EclipseState/Grid/FieldProps.hpp | 2 +- .../parser/eclipse/EclipseState/Grid/FieldPropsManager.cpp | 7 ++++--- tests/parser/FieldPropsTests.cpp | 3 +++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/opm/parser/eclipse/EclipseState/Grid/FieldProps.hpp b/src/opm/parser/eclipse/EclipseState/Grid/FieldProps.hpp index 2f2aac904..79f502835 100644 --- a/src/opm/parser/eclipse/EclipseState/Grid/FieldProps.hpp +++ b/src/opm/parser/eclipse/EclipseState/Grid/FieldProps.hpp @@ -388,7 +388,7 @@ public: field_data = std::addressof(this->init_get(keyword, std::is_same::value && allow_unsupported)); - if (field_data->valid()) + if (field_data->valid() || allow_unsupported) return FieldDataManager(keyword, GetStatus::OK, field_data); if (!has0) { diff --git a/src/opm/parser/eclipse/EclipseState/Grid/FieldPropsManager.cpp b/src/opm/parser/eclipse/EclipseState/Grid/FieldPropsManager.cpp index 6c7061d56..a2cb4e792 100644 --- a/src/opm/parser/eclipse/EclipseState/Grid/FieldPropsManager.cpp +++ b/src/opm/parser/eclipse/EclipseState/Grid/FieldPropsManager.cpp @@ -67,9 +67,10 @@ FieldPropsManager::get_double_field_data(const std::string& keyword, bool allow_unsupported) const { const auto& data = this->fp->try_get(keyword, allow_unsupported); - if (!data.valid()) - throw std::out_of_range("Invalid field data requested."); - return data.field_data(); + if (allow_unsupported || data.valid()) + return data.field_data(); + + throw std::out_of_range("Invalid field data requested."); } template diff --git a/tests/parser/FieldPropsTests.cpp b/tests/parser/FieldPropsTests.cpp index 485832eb4..f867d54ea 100644 --- a/tests/parser/FieldPropsTests.cpp +++ b/tests/parser/FieldPropsTests.cpp @@ -2112,6 +2112,9 @@ EQUALS const auto& keys = fpm.keys(); BOOST_CHECK_EQUAL(keys.size(), 2); + + BOOST_CHECK_THROW( fpm.get_double_field_data("TRANX0"), std::exception ); + BOOST_CHECK_NO_THROW( fpm.get_double_field_data("TRANX0", true)); }