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