summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Vakulenko <avakulenko@chromium.org>2015-02-26 10:16:12 -0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-02-27 07:08:02 +0000
commit1485624e77ed53a3beba5ab6433b26f31f3607a2 (patch)
treeea9e46b58359abcf595021de8cac249941013de6
parentc4e01f1a41b5fce64a352f9a39f956c2586887af (diff)
downloaddbus-binding-generator-1485624e77ed53a3beba5ab6433b26f31f3607a2.tar.gz
chromeos-dbus-bindings: Handle all-uppercase identifiers gracefully
Properties such as 'UUID' were convered to 'u_u_i_d' while trying to convert 'CamelCase' identifier to 'google_style' variable name. Do not break up consecutive uppercase characters into separate 'words'. BUG=brillo:387 TEST=FEATURES=test emerge-link chromeos-dbus-bindings Change-Id: I541f12e33d1c36d9ae2cf9fdba5ca9e23096fc46 Reviewed-on: https://chromium-review.googlesource.com/254180 Reviewed-by: Christopher Wiley <wiley@chromium.org> Commit-Queue: Alex Vakulenko <avakulenko@chromium.org> Tested-by: Alex Vakulenko <avakulenko@chromium.org>
-rw-r--r--chromeos-dbus-bindings/name_parser.cc7
-rw-r--r--chromeos-dbus-bindings/name_parser_unittest.cc10
2 files changed, 15 insertions, 2 deletions
diff --git a/chromeos-dbus-bindings/name_parser.cc b/chromeos-dbus-bindings/name_parser.cc
index 33584d9..f920c04 100644
--- a/chromeos-dbus-bindings/name_parser.cc
+++ b/chromeos-dbus-bindings/name_parser.cc
@@ -46,12 +46,15 @@ std::string NameParser::MakeFullCppName() const {
std::string NameParser::MakeVariableName() const {
// Convert CamelCase name to google_style variable name.
std::string result;
+ bool last_upper = true;
for (char c : type_name) {
- if (isupper(c)) {
- if (!result.empty())
+ bool is_upper = isupper(c);
+ if (is_upper) {
+ if (!last_upper)
result += '_';
c = base::ToLowerASCII(c);
}
+ last_upper = is_upper;
result.push_back(c);
}
return result;
diff --git a/chromeos-dbus-bindings/name_parser_unittest.cc b/chromeos-dbus-bindings/name_parser_unittest.cc
index 62de4fe..25c6c92 100644
--- a/chromeos-dbus-bindings/name_parser_unittest.cc
+++ b/chromeos-dbus-bindings/name_parser_unittest.cc
@@ -50,6 +50,16 @@ TEST(NameParser, MakeVariableName_NoInitialCapital) {
EXPECT_EQ("foo_bar_baz", parser.MakeVariableName());
}
+TEST(NameParser, MakeVariableName_AllCapitals) {
+ NameParser parser{"UUID"};
+ EXPECT_EQ("uuid", parser.MakeVariableName());
+}
+
+TEST(NameParser, MakeVariableName_MixedCapital) {
+ NameParser parser{"FOObarBaz"};
+ EXPECT_EQ("foobar_baz", parser.MakeVariableName());
+}
+
TEST(NameParser, MakeInterfaceName) {
NameParser parser{"foo.bar.FooBar"};
EXPECT_EQ("FooBarInterface", parser.MakeInterfaceName(false));