#Centipede Enable a unit test for `--use_counter_features`.

PiperOrigin-RevId: 588870162
diff --git a/centipede/coverage_test.cc b/centipede/coverage_test.cc
index adc7ada..1984359 100644
--- a/centipede/coverage_test.cc
+++ b/centipede/coverage_test.cc
@@ -322,6 +322,43 @@
   }
 }
 
+// Tests feature collection for counters (--use_counter_features).
+TEST(Coverage, CounterFeatures) {
+  Environment env;
+  env.binary = GetTargetPath();
+
+  // Inputs that generate the same PC coverage but different counters.
+  std::vector<std::string> inputs = {"cnt\x01", "cnt\x02", "cnt\x04", "cnt\x08",
+                                     "cnt\x10"};
+  const size_t n = inputs.size();
+
+  // Run with use_counter_features = true.
+  env.use_counter_features = true;
+  auto features = RunInputsAndCollectCoverage(env, inputs);
+  EXPECT_EQ(features.size(), n);
+  // Counter features should be different.
+  for (size_t i = 0; i < n; ++i) {
+    for (size_t j = i + 1; j < n; ++j) {
+      EXPECT_NE(
+          ExtractDomainFeatures(features[i], feature_domains::k8bitCounters),
+          ExtractDomainFeatures(features[j], feature_domains::k8bitCounters));
+    }
+  }
+
+  // Run with use_counter_features = false.
+  env.use_counter_features = false;
+  features = RunInputsAndCollectCoverage(env, inputs);
+  EXPECT_EQ(features.size(), n);
+  // Counter features should be the same now.
+  for (size_t i = 0; i < n; ++i) {
+    for (size_t j = i + 1; j < n; ++j) {
+      EXPECT_EQ(
+          ExtractDomainFeatures(features[i], feature_domains::k8bitCounters),
+          ExtractDomainFeatures(features[j], feature_domains::k8bitCounters));
+    }
+  }
+}
+
 // For each of {ABToCmpModDiff, ABToCmpHamming, ABToCmpDiffLog} verify that
 // a) they create all possible values in [0,64)
 // b) they don't create any other values.