diff options
author | Anthony Barbier <anthony.barbier@arm.com> | 2017-11-09 19:40:42 +0000 |
---|---|---|
committer | Anthony Barbier <anthony.barbier@arm.com> | 2018-11-02 16:35:24 +0000 |
commit | 4a4a1649522ae837746d2bd195050621e176f451 (patch) | |
tree | 8b5cfda415364485c402a3b01a738d402646aad2 | |
parent | 6e4334962913a4b4d88d3d2b9d76ef2b7850a56c (diff) | |
download | ComputeLibrary-4a4a1649522ae837746d2bd195050621e176f451.tar.gz |
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>
-rw-r--r-- | tests/framework/command_line/EnumListOption.h | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/tests/framework/command_line/EnumListOption.h b/tests/framework/command_line/EnumListOption.h index d19bfbdc0f..6155a5da4c 100644 --- a/tests/framework/command_line/EnumListOption.h +++ b/tests/framework/command_line/EnumListOption.h @@ -87,12 +87,12 @@ bool EnumListOption<T>::parse(std::string value) _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 @@ bool EnumListOption<T>::parse(std::string value) { if(_allowed_values.count(typed_value) == 0) { - _values.clear(); - return false; + _is_set = false; + continue; } _values.emplace_back(typed_value); @@ -112,13 +112,13 @@ bool EnumListOption<T>::parse(std::string value) _is_set = _is_set && !item_stream.fail(); } - - return _is_set; - } - catch(const std::invalid_argument &) - { - return false; + catch(const std::invalid_argument &) + { + _is_set = false; + } } + + return _is_set; } template <typename T> |