diff options
author | 2014-11-17 23:06:23 +0000 | |
---|---|---|
committer | 2014-11-17 23:06:23 +0000 | |
commit | 5783c581209bd7a3640316b617233fa1214a193f (patch) | |
tree | 6168cd01f3f7a9c1d1fc178f2dadf6226f86139f /native/dicttoolkit/src/utils/arguments_parser.cpp | |
parent | 110b37eeaf9bc8b13e077e066a5042af8ceafb54 (diff) | |
parent | fdf92789c12ff0cba6130d3ca6848463417e3965 (diff) | |
download | latinime-5783c581209bd7a3640316b617233fa1214a193f.tar.gz latinime-5783c581209bd7a3640316b617233fa1214a193f.tar.xz latinime-5783c581209bd7a3640316b617233fa1214a193f.zip |
am fdf92789: Merge "Add unit tests for ArgumentsParser.validateSpecs()."
* commit 'fdf92789c12ff0cba6130d3ca6848463417e3965':
Add unit tests for ArgumentsParser.validateSpecs().
Diffstat (limited to 'native/dicttoolkit/src/utils/arguments_parser.cpp')
-rw-r--r-- | native/dicttoolkit/src/utils/arguments_parser.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/native/dicttoolkit/src/utils/arguments_parser.cpp b/native/dicttoolkit/src/utils/arguments_parser.cpp index 039dae35b..52cc7b21d 100644 --- a/native/dicttoolkit/src/utils/arguments_parser.cpp +++ b/native/dicttoolkit/src/utils/arguments_parser.cpp @@ -16,18 +16,32 @@ #include "utils/arguments_parser.h" +#include <unordered_set> + namespace latinime { namespace dicttoolkit { const int ArgumentSpec::UNLIMITED_COUNT = -1; bool ArgumentsParser::validateSpecs() const { + std::unordered_set<std::string> argumentNameSet; for (size_t i = 0; i < mArgumentSpecs.size() ; ++i) { + if (mArgumentSpecs[i].getMinCount() == 0 && mArgumentSpecs[i].getMaxCount() == 0) { + AKLOGE("minCount = maxCount = 0 for %s.", mArgumentSpecs[i].getName().c_str()); + return false; + } if (mArgumentSpecs[i].getMinCount() != mArgumentSpecs[i].getMaxCount() && i != mArgumentSpecs.size() - 1) { - AKLOGE("Variable length argument must be at the end."); + AKLOGE("Variable length argument must be at the end.", + mArgumentSpecs[i].getName().c_str()v ); + return false; + } + if (argumentNameSet.count(mArgumentSpecs[i].getName()) > 0) { + AKLOGE("Multiple arguments have the same name \"%s\".", + mArgumentSpecs[i].getName().c_str()); return false; } + argumentNameSet.insert(mArgumentSpecs[i].getName()); } return true; } |