Minor table-driven test refactor

Change-Id: Idf7bc5d97b1ec9c560c2b0f4db96fe7e10e8d642
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/20720
Commit-Queue: Richard Wang <richardwa@google.com>
Reviewed-by: Takuto Ikuta <tikuta@google.com>
diff --git a/src/gn/bundle_data_unittest.cc b/src/gn/bundle_data_unittest.cc
index 2c2ff40..e642ef4 100644
--- a/src/gn/bundle_data_unittest.cc
+++ b/src/gn/bundle_data_unittest.cc
@@ -1,16 +1,15 @@
 // Copyright 2021 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
 
 #include "gn/bundle_data.h"
 #include "util/test/test.h"
 
 TEST(BundleDataTest, GetAssetsCatalogDirectory) {
-  struct TestCase {
+  const struct TestCase {
     SourceFile source_file;
     SourceFile catalog_dir;
-  };
-
-  static TestCase kTestCases[] = {
+  } test_cases[] = {
       {
           .source_file = SourceFile("//my/bundle/foo.xcassets/my/file"),
           .catalog_dir = SourceFile("//my/bundle/foo.xcassets"),
@@ -26,7 +25,7 @@
       },
   };
 
-  for (const TestCase& test_case : kTestCases) {
+  for (const auto& test_case : test_cases) {
     const SourceFile assets_catalog_dir =
         BundleData::GetAssetsCatalogDirectory(test_case.source_file);
     EXPECT_EQ(assets_catalog_dir, test_case.catalog_dir);
diff --git a/src/gn/label_pattern_unittest.cc b/src/gn/label_pattern_unittest.cc
index 5d65853..7ae9f15 100644
--- a/src/gn/label_pattern_unittest.cc
+++ b/src/gn/label_pattern_unittest.cc
@@ -11,23 +11,17 @@
 #include "gn/value.h"
 #include "util/test/test.h"
 
-namespace {
-
-struct PatternCase {
-  const char* input;
-  bool success;
-
-  LabelPattern::Type type;
-  const char* dir;
-  const char* name;
-  const char* toolchain;
-};
-
-}  // namespace
-
 TEST(LabelPattern, PatternParse) {
   SourceDir current_dir("//foo/");
-  PatternCase cases[] = {
+  const struct TestCase {
+    const char* input;
+    bool success;
+
+    LabelPattern::Type type;
+    const char* dir;
+    const char* name;
+    const char* toolchain;
+  } test_cases[] = {
       // Missing stuff.
       {"", false, LabelPattern::MATCH, "", "", ""},
       {":", false, LabelPattern::MATCH, "", "", ""},
@@ -71,18 +65,17 @@
 #endif
   };
 
-  for (size_t i = 0; i < std::size(cases); i++) {
-    const PatternCase& cur = cases[i];
+  for (const auto& test_case : test_cases) {
     Err err;
     LabelPattern result = LabelPattern::GetPattern(
-        current_dir, std::string_view(), Value(nullptr, cur.input), &err);
+        current_dir, std::string_view(), Value(nullptr, test_case.input), &err);
 
-    EXPECT_EQ(cur.success, !err.has_error()) << i << " " << cur.input;
-    EXPECT_EQ(cur.type, result.type()) << i << " " << cur.input;
-    EXPECT_EQ(cur.dir, result.dir().value()) << i << " " << cur.input;
-    EXPECT_EQ(cur.name, result.name()) << i << " " << cur.input;
-    EXPECT_EQ(cur.toolchain, result.toolchain().GetUserVisibleName(false))
-        << i << " " << cur.input;
+    EXPECT_EQ(test_case.success, !err.has_error()) << test_case.input;
+    EXPECT_EQ(test_case.type, result.type()) << test_case.input;
+    EXPECT_EQ(test_case.dir, result.dir().value()) << test_case.input;
+    EXPECT_EQ(test_case.name, result.name()) << test_case.input;
+    EXPECT_EQ(test_case.toolchain, result.toolchain().GetUserVisibleName(false))
+        << test_case.input;
   }
 }
 
diff --git a/src/gn/label_unittest.cc b/src/gn/label_unittest.cc
index 00f881e..35ce390 100644
--- a/src/gn/label_unittest.cc
+++ b/src/gn/label_unittest.cc
@@ -12,22 +12,16 @@
 #include "util/build_config.h"
 #include "util/test/test.h"
 
-namespace {
-
-struct ParseDepStringCase {
-  const char* cur_dir;
-  const char* str;
-  bool success;
-  const char* expected_dir;
-  const char* expected_name;
-  const char* expected_toolchain_dir;
-  const char* expected_toolchain_name;
-};
-
-}  // namespace
-
 TEST(Label, Resolve) {
-  ParseDepStringCase cases[] = {
+  const struct TestCase {
+    const char* cur_dir;
+    const char* str;
+    bool success;
+    const char* expected_dir;
+    const char* expected_name;
+    const char* expected_toolchain_dir;
+    const char* expected_toolchain_name;
+  } test_cases[] = {
       {"//chrome/", "", false, "", "", "", ""},
       {"//chrome/", "/", false, "", "", "", ""},
       {"//chrome/", ":", false, "", "", "", ""},
@@ -78,23 +72,23 @@
 
   Label default_toolchain(SourceDir("//t/"), "d");
 
-  for (size_t i = 0; i < std::size(cases); i++) {
-    const ParseDepStringCase& cur = cases[i];
-
+  for (const auto& test_case : test_cases) {
     std::string location, name;
     Err err;
     Value v(nullptr, Value::STRING);
-    v.string_value() = cur.str;
-    Label result = Label::Resolve(SourceDir(cur.cur_dir), std::string_view(),
-                                  default_toolchain, v, &err);
-    EXPECT_EQ(cur.success, !err.has_error()) << i << " " << cur.str;
-    if (!err.has_error() && cur.success) {
-      EXPECT_EQ(cur.expected_dir, result.dir().value()) << i << " " << cur.str;
-      EXPECT_EQ(cur.expected_name, result.name()) << i << " " << cur.str;
-      EXPECT_EQ(cur.expected_toolchain_dir, result.toolchain_dir().value())
-          << i << " " << cur.str;
-      EXPECT_EQ(cur.expected_toolchain_name, result.toolchain_name())
-          << i << " " << cur.str;
+    v.string_value() = test_case.str;
+    Label result =
+        Label::Resolve(SourceDir(test_case.cur_dir), std::string_view(),
+                       default_toolchain, v, &err);
+    EXPECT_EQ(test_case.success, !err.has_error()) << test_case.str;
+    if (!err.has_error() && test_case.success) {
+      EXPECT_EQ(test_case.expected_dir, result.dir().value()) << test_case.str;
+      EXPECT_EQ(test_case.expected_name, result.name()) << test_case.str;
+      EXPECT_EQ(test_case.expected_toolchain_dir,
+                result.toolchain_dir().value())
+          << test_case.str;
+      EXPECT_EQ(test_case.expected_toolchain_name, result.toolchain_name())
+          << test_case.str;
     }
   }
 }