COMPMID-556: When an EnumListOption contains some invalid values: still keep the valid ones
Change-Id: I4f5acc9af09587f0ec46482f6aea737fa42f35fc
Reviewed-on: http://mpd-gerrit.cambridge.arm.com/95186
Tested-by: Kaizen <jeremy.johnson+kaizengerrit@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
diff --git a/tests/framework/command_line/EnumListOption.h b/tests/framework/command_line/EnumListOption.h
index d19bfbd..6155a5d 100644
--- a/tests/framework/command_line/EnumListOption.h
+++ b/tests/framework/command_line/EnumListOption.h
@@ -87,12 +87,12 @@
_values.clear();
_is_set = true;
- try
- {
- std::stringstream stream{ value };
- std::string item;
+ std::stringstream stream{ value };
+ std::string item;
- while(!std::getline(stream, item, ',').fail())
+ while(!std::getline(stream, item, ',').fail())
+ {
+ try
{
std::stringstream item_stream(item);
T typed_value{};
@@ -103,8 +103,8 @@
{
if(_allowed_values.count(typed_value) == 0)
{
- _values.clear();
- return false;
+ _is_set = false;
+ continue;
}
_values.emplace_back(typed_value);
@@ -112,13 +112,13 @@
_is_set = _is_set && !item_stream.fail();
}
+ catch(const std::invalid_argument &)
+ {
+ _is_set = false;
+ }
+ }
- return _is_set;
- }
- catch(const std::invalid_argument &)
- {
- return false;
- }
+ return _is_set;
}
template <typename T>