diff --git a/googletest/include/gtest/gtest-typed-test.h b/googletest/include/gtest/gtest-typed-test.h
index 29b0859..65be699 100644
--- a/googletest/include/gtest/gtest-typed-test.h
+++ b/googletest/include/gtest/gtest-typed-test.h
@@ -96,7 +96,7 @@
 //     static std::string GetName(int) {
 //       if (std::is_same<T, char>()) return "char";
 //       if (std::is_same<T, int>()) return "int";
-//       if (std::is_same<T, unsigned int>()) return "unsigned_int";
+//       if (std::is_same<T, unsigned int>()) return "unsignedInt";
 //     }
 //   };
 //   TYPED_TEST_CASE(FooTest, MyTypes, MyTypeNames);
diff --git a/googletest/test/googletest-output-test_.cc b/googletest/test/googletest-output-test_.cc
index d6f7e0b..df82517 100644
--- a/googletest/test/googletest-output-test_.cc
+++ b/googletest/test/googletest-output-test_.cc
@@ -811,9 +811,9 @@
   template <typename T>
   static std::string GetName(int i) {
     if (testing::internal::IsSame<T, char>::value)
-      return std::string("char_") + ::testing::PrintToString(i);
+      return std::string("char") + ::testing::PrintToString(i);
     if (testing::internal::IsSame<T, int>::value)
-      return std::string("int_") + ::testing::PrintToString(i);
+      return std::string("int") + ::testing::PrintToString(i);
   }
 };
 
@@ -852,10 +852,10 @@
   template <typename T>
   static std::string GetName(int i) {
     if (testing::internal::IsSame<T, unsigned char>::value) {
-      return std::string("unsigned_char_") + ::testing::PrintToString(i);
+      return std::string("unsignedChar") + ::testing::PrintToString(i);
     }
     if (testing::internal::IsSame<T, unsigned int>::value) {
-      return std::string("unsigned_int_") + ::testing::PrintToString(i);
+      return std::string("unsignedInt") + ::testing::PrintToString(i);
     }
   }
 };
diff --git a/googletest/test/gtest-typed-test_test.cc b/googletest/test/gtest-typed-test_test.cc
index e9eed63..b245730 100644
--- a/googletest/test/gtest-typed-test_test.cc
+++ b/googletest/test/gtest-typed-test_test.cc
@@ -174,10 +174,10 @@
   template <typename T>
   static std::string GetName(int i) {
     if (testing::internal::IsSame<T, char>::value) {
-      return std::string("char_") + ::testing::PrintToString(i);
+      return std::string("char") + ::testing::PrintToString(i);
     }
     if (testing::internal::IsSame<T, int>::value) {
-      return std::string("int_") + ::testing::PrintToString(i);
+      return std::string("int") + ::testing::PrintToString(i);
     }
   }
 };
@@ -189,13 +189,13 @@
     EXPECT_STREQ(::testing::UnitTest::GetInstance()
                      ->current_test_info()
                      ->test_case_name(),
-                 "TypedTestWithNames/char_0");
+                 "TypedTestWithNames/char0");
   }
   if (testing::internal::IsSame<TypeParam, int>::value) {
     EXPECT_STREQ(::testing::UnitTest::GetInstance()
                      ->current_test_info()
                      ->test_case_name(),
-                 "TypedTestWithNames/int_1");
+                 "TypedTestWithNames/int1");
   }
 }
 
@@ -311,13 +311,13 @@
     EXPECT_STREQ(::testing::UnitTest::GetInstance()
                      ->current_test_info()
                      ->test_case_name(),
-                 "CustomName/TypeParametrizedTestWithNames/p_char_0");
+                 "CustomName/TypeParametrizedTestWithNames/parChar0");
   }
   if (testing::internal::IsSame<TypeParam, int>::value) {
     EXPECT_STREQ(::testing::UnitTest::GetInstance()
                      ->current_test_info()
                      ->test_case_name(),
-                 "CustomName/TypeParametrizedTestWithNames/p_int_1");
+                 "CustomName/TypeParametrizedTestWithNames/parInt1");
   }
 }
 
@@ -328,10 +328,10 @@
   template <typename T>
   static std::string GetName(int i) {
     if (testing::internal::IsSame<T, char>::value) {
-      return std::string("p_char_") + ::testing::PrintToString(i);
+      return std::string("parChar") + ::testing::PrintToString(i);
     }
     if (testing::internal::IsSame<T, int>::value) {
-      return std::string("p_int_") + ::testing::PrintToString(i);
+      return std::string("parInt") + ::testing::PrintToString(i);
     }
   }
 };
