chromium/components/spellcheck/browser/spellcheck_host_metrics_unittest.cc

// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifdef UNSAFE_BUFFERS_BUILD
// TODO(crbug.com/40285824): Remove this and convert code to safer constructs.
#pragma allow_unsafe_buffers
#endif

#include "components/spellcheck/browser/spellcheck_host_metrics.h"

#include <stddef.h>

#include <memory>

#include "base/metrics/histogram_samples.h"
#include "base/strings/utf_string_conversions.h"
#include "base/test/metrics/histogram_tester.h"
#include "base/test/task_environment.h"
#include "build/build_config.h"
#include "testing/gtest/include/gtest/gtest.h"

class SpellcheckHostMetricsTest : public testing::Test {};

TEST_F(SpellcheckHostMetricsTest, RecordEnabledStats) {}

TEST_F(SpellcheckHostMetricsTest, RecordWordCountsDiscardsDuplicates) {}

TEST_F(SpellcheckHostMetricsTest, RecordSpellingServiceStats) {}

#if BUILDFLAG(IS_WIN)
TEST_F(SpellcheckHostMetricsTest, RecordAcceptLanguageStats) {
  const char* const histogram_names[] = {
      "Spellcheck.Windows.ChromeLocalesSupport2.Both",
      "Spellcheck.Windows.ChromeLocalesSupport2.HunspellOnly",
      "Spellcheck.Windows.ChromeLocalesSupport2.NativeOnly",
      "Spellcheck.Windows.ChromeLocalesSupport2.NoSupport"};
  const size_t expected_counts[] = {1, 2, 3, 4};
  base::HistogramTester histogram_tester;

  SpellCheckHostMetrics::RecordAcceptLanguageStats({
      expected_counts[0],
      expected_counts[1],
      expected_counts[2],
      expected_counts[3],
  });

  for (size_t i = 0; i < std::size(histogram_names); ++i) {
    histogram_tester.ExpectTotalCount(histogram_names[i], 1);
    histogram_tester.ExpectBucketCount(histogram_names[i],
                                       static_cast<int>(expected_counts[i]), 1);
  }
}

TEST_F(SpellcheckHostMetricsTest, RecordSpellcheckLanguageStats) {
  const char* const histogram_names[] = {
      "Spellcheck.Windows.SpellcheckLocalesSupport2.Both",
      "Spellcheck.Windows.SpellcheckLocalesSupport2.HunspellOnly",
      "Spellcheck.Windows.SpellcheckLocalesSupport2.NativeOnly"};
  const size_t expected_counts[] = {1, 2, 3};
  base::HistogramTester histogram_tester;

  SpellCheckHostMetrics::RecordSpellcheckLanguageStats({
      expected_counts[0],
      expected_counts[1],
      expected_counts[2],
      0,
  });

  for (size_t i = 0; i < std::size(histogram_names); ++i) {
    histogram_tester.ExpectTotalCount(histogram_names[i], 1);
    histogram_tester.ExpectBucketCount(histogram_names[i],
                                       static_cast<int>(expected_counts[i]), 1);
  }
}
#endif  // BUILDFLAG(IS_WIN)