diff --git a/llvm/unittests/Support/JSONTest.cpp b/llvm/unittests/Support/JSONTest.cpp
index 14c11b1..93efcf2 100644
--- a/llvm/unittests/Support/JSONTest.cpp
+++ b/llvm/unittests/Support/JSONTest.cpp
@@ -71,7 +71,7 @@
 }
 
 TEST(JSONTest, Escaping) {
-  std::string test = {
+  std::string Test = {
       0,                    // Strings may contain nulls.
       '\b',   '\f',         // Have mnemonics, but we escape numerically.
       '\r',   '\n',   '\t', // Escaped with mnemonics.
@@ -80,17 +80,17 @@
       '\xce', '\x94',       // Non-ASCII UTF-8 is not escaped.
   };
 
-  std::string teststring = R"("\u0000\u0008\u000c\r\n\tS\"\\)"
+  std::string TestString = R"("\u0000\u0008\u000c\r\n\tS\"\\)"
                            "\x7f\xCE\x94\"";
 
-  EXPECT_EQ(teststring, s(test));
+  EXPECT_EQ(TestString, s(Test));
 
   EXPECT_EQ(R"({"object keys are\nescaped":true})",
             s(Object{{"object keys are\nescaped", true}}));
 }
 
 TEST(JSONTest, PrettyPrinting) {
-  const char str[] = R"({
+  const char Str[] = R"({
   "empty_array": [],
   "empty_object": {},
   "full_array": [
@@ -106,7 +106,7 @@
   }
 })";
 
-  EXPECT_EQ(str, sp(Object{
+  EXPECT_EQ(Str, sp(Object{
                      {"empty_object", Object{}},
                      {"empty_array", {}},
                      {"full_array", {1, nullptr}},
@@ -120,6 +120,33 @@
                  }));
 }
 
+TEST(JSONTest, Array) {
+  Array A{1, 2};
+  A.emplace_back(3);
+  A.emplace(++A.begin(), 0);
+  A.push_back(4);
+  A.insert(++++A.begin(), 99);
+
+  EXPECT_EQ(A.size(), 6u);
+  EXPECT_EQ(R"([1,0,99,2,3,4])", s(std::move(A)));
+}
+
+TEST(JSONTest, Object) {
+  Object O{{"a", 1}, {"b", 2}, {"c", 3}};
+  EXPECT_TRUE(O.try_emplace("d", 4).second);
+  EXPECT_FALSE(O.try_emplace("a", 4).second);
+
+  auto D = O.find("d");
+  EXPECT_FALSE(D == O.end());
+  auto E = O.find("e");
+  EXPECT_TRUE(E == O.end());
+
+  O.erase("b");
+  O.erase(D);
+  EXPECT_EQ(O.size(), 2u);
+  EXPECT_EQ(R"({"a":1,"c":3})", s(std::move(O)));
+}
+
 TEST(JSONTest, Parse) {
   auto Compare = [](llvm::StringRef S, Value Expected) {
     if (auto E = parse(S)) {
