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