aboutsummaryrefslogtreecommitdiffstats
path: root/native/dicttoolkit/src/utils/arguments_parser.cpp
diff options
context:
space:
mode:
authorKeisuke Kuroyanagi <ksk@google.com>2014-11-17 23:06:23 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-11-17 23:06:23 +0000
commit5783c581209bd7a3640316b617233fa1214a193f (patch)
tree6168cd01f3f7a9c1d1fc178f2dadf6226f86139f /native/dicttoolkit/src/utils/arguments_parser.cpp
parent110b37eeaf9bc8b13e077e066a5042af8ceafb54 (diff)
parentfdf92789c12ff0cba6130d3ca6848463417e3965 (diff)
downloadlatinime-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.cpp16
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;
}