Merge pull request #2299 from joakim-hove/fp-allow-invalid

FieldProps can return invalid data if allow_unsupported is true
This commit is contained in:
Joakim Hove
2021-02-16 09:08:32 +01:00
committed by GitHub
3 changed files with 8 additions and 4 deletions

View File

@@ -388,7 +388,7 @@ public:
field_data = std::addressof(this->init_get<T>(keyword,
std::is_same<T,double>::value && allow_unsupported));
if (field_data->valid())
if (field_data->valid() || allow_unsupported)
return FieldDataManager<T>(keyword, GetStatus::OK, field_data);
if (!has0) {

View File

@@ -67,9 +67,10 @@ FieldPropsManager::get_double_field_data(const std::string& keyword,
bool allow_unsupported) const
{
const auto& data = this->fp->try_get<double>(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 <typename T>

View File

@@ -2112,6 +2112,9 @@ EQUALS
const auto& keys = fpm.keys<double>();
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));
}