histogram_macros_unittest.cc 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // Copyright 2015 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "base/metrics/histogram_macros.h"
  5. #include "base/time/time.h"
  6. #include "testing/gtest/include/gtest/gtest.h"
  7. namespace base {
  8. TEST(ScopedHistogramTimer, ThreeTimersOneScope) {
  9. SCOPED_UMA_HISTOGRAM_TIMER_MICROS("TestShortTimer0");
  10. SCOPED_UMA_HISTOGRAM_TIMER_MICROS("TestShortTimer1");
  11. SCOPED_UMA_HISTOGRAM_TIMER("TestTimer0");
  12. SCOPED_UMA_HISTOGRAM_TIMER("TestTimer1");
  13. SCOPED_UMA_HISTOGRAM_LONG_TIMER("TestLongTimer0");
  14. SCOPED_UMA_HISTOGRAM_LONG_TIMER("TestLongTimer1");
  15. }
  16. // Compile tests for UMA_HISTOGRAM_ENUMERATION with the three different types it
  17. // accepts:
  18. // - integral types
  19. // - unscoped enums
  20. // - scoped enums
  21. TEST(HistogramMacro, IntegralPseudoEnumeration) {
  22. UMA_HISTOGRAM_ENUMERATION("Test.FauxEnumeration", 1, 1000);
  23. }
  24. TEST(HistogramMacro, UnscopedEnumeration) {
  25. enum TestEnum : char {
  26. FIRST_VALUE,
  27. SECOND_VALUE,
  28. THIRD_VALUE,
  29. MAX_ENTRIES,
  30. };
  31. UMA_HISTOGRAM_ENUMERATION("Test.UnscopedEnumeration", SECOND_VALUE,
  32. MAX_ENTRIES);
  33. }
  34. TEST(HistogramMacro, ScopedEnumeration) {
  35. enum class TestEnum {
  36. FIRST_VALUE,
  37. SECOND_VALUE,
  38. THIRD_VALUE,
  39. kMaxValue = THIRD_VALUE,
  40. };
  41. UMA_HISTOGRAM_ENUMERATION("Test.ScopedEnumeration", TestEnum::FIRST_VALUE);
  42. enum class TestEnum2 {
  43. FIRST_VALUE,
  44. SECOND_VALUE,
  45. THIRD_VALUE,
  46. MAX_ENTRIES,
  47. };
  48. UMA_HISTOGRAM_ENUMERATION("Test.ScopedEnumeration2", TestEnum2::SECOND_VALUE,
  49. TestEnum2::MAX_ENTRIES);
  50. }
  51. // Compile tests for UMA_HISTOGRAM_ENUMERATION when the value type is:
  52. // - a const reference to an enum
  53. // - a non-const reference to an enum
  54. TEST(HistogramMacro, EnumerationConstRef) {
  55. enum class TestEnum { kValue, kMaxValue = kValue };
  56. const TestEnum& value_ref = TestEnum::kValue;
  57. UMA_HISTOGRAM_ENUMERATION("Test.ScopedEnumeration3", value_ref);
  58. }
  59. TEST(HistogramMacro, EnumerationNonConstRef) {
  60. enum class TestEnum { kValue, kMaxValue = kValue };
  61. TestEnum value = TestEnum::kValue;
  62. TestEnum& value_ref = value;
  63. UMA_HISTOGRAM_ENUMERATION("Test.ScopedEnumeration4", value_ref);
  64. }
  65. } // namespace base