1*635a8641SAndroid Build Coastguard Worker// Copyright 2016 The Chromium Authors. All rights reserved. 2*635a8641SAndroid Build Coastguard Worker// Use of this source code is governed by a BSD-style license that can be 3*635a8641SAndroid Build Coastguard Worker// found in the LICENSE file. 4*635a8641SAndroid Build Coastguard Worker 5*635a8641SAndroid Build Coastguard Worker// This is a "No Compile Test" suite. 6*635a8641SAndroid Build Coastguard Worker// http://dev.chromium.org/developers/testing/no-compile-tests 7*635a8641SAndroid Build Coastguard Worker 8*635a8641SAndroid Build Coastguard Worker#include "base/metrics/histogram_functions.h" 9*635a8641SAndroid Build Coastguard Worker#include "base/metrics/histogram_macros.h" 10*635a8641SAndroid Build Coastguard Worker 11*635a8641SAndroid Build Coastguard Workernamespace base { 12*635a8641SAndroid Build Coastguard Worker 13*635a8641SAndroid Build Coastguard Worker#if defined(NCTEST_DIFFERENT_ENUM) // [r"\|sample\| and \|boundary\| shouldn't be of different enums"] 14*635a8641SAndroid Build Coastguard Worker 15*635a8641SAndroid Build Coastguard Workervoid WontCompile() { 16*635a8641SAndroid Build Coastguard Worker enum TypeA { A }; 17*635a8641SAndroid Build Coastguard Worker enum TypeB { B }; 18*635a8641SAndroid Build Coastguard Worker UMA_HISTOGRAM_ENUMERATION("", A, B); 19*635a8641SAndroid Build Coastguard Worker} 20*635a8641SAndroid Build Coastguard Worker 21*635a8641SAndroid Build Coastguard Worker#elif defined(NCTEST_DIFFERENT_ENUM_CLASS) // [r"\|sample\| and \|boundary\| shouldn't be of different enums"] 22*635a8641SAndroid Build Coastguard Worker 23*635a8641SAndroid Build Coastguard Workervoid WontCompile() { 24*635a8641SAndroid Build Coastguard Worker enum class TypeA { A }; 25*635a8641SAndroid Build Coastguard Worker enum class TypeB { B }; 26*635a8641SAndroid Build Coastguard Worker UMA_HISTOGRAM_ENUMERATION("", TypeA::A, TypeB::B); 27*635a8641SAndroid Build Coastguard Worker} 28*635a8641SAndroid Build Coastguard Worker 29*635a8641SAndroid Build Coastguard Worker#elif defined(NCTEST_DIFFERENT_ENUM_MIXED) // [r"\|sample\| and \|boundary\| shouldn't be of different enums"] 30*635a8641SAndroid Build Coastguard Worker 31*635a8641SAndroid Build Coastguard Workervoid WontCompile() { 32*635a8641SAndroid Build Coastguard Worker enum class TypeA { A }; 33*635a8641SAndroid Build Coastguard Worker enum TypeB { B }; 34*635a8641SAndroid Build Coastguard Worker UMA_HISTOGRAM_ENUMERATION("", TypeA::A, B); 35*635a8641SAndroid Build Coastguard Worker} 36*635a8641SAndroid Build Coastguard Worker 37*635a8641SAndroid Build Coastguard Worker#elif defined(NCTEST_NEGATIVE_ENUM_MAX) // [r'static_assert failed "\|boundary\| is out of range of HistogramBase::Sample"'] 38*635a8641SAndroid Build Coastguard Worker 39*635a8641SAndroid Build Coastguard Workervoid WontCompile() { 40*635a8641SAndroid Build Coastguard Worker // Buckets for enumeration start from 0, so a boundary < 0 is illegal. 41*635a8641SAndroid Build Coastguard Worker enum class TypeA { A = -1 }; 42*635a8641SAndroid Build Coastguard Worker UMA_HISTOGRAM_ENUMERATION("", TypeA::A, TypeA::A); 43*635a8641SAndroid Build Coastguard Worker} 44*635a8641SAndroid Build Coastguard Worker 45*635a8641SAndroid Build Coastguard Worker#elif defined(NCTEST_ENUM_MAX_OUT_OF_RANGE) // [r'static_assert failed "\|boundary\| is out of range of HistogramBase::Sample"'] 46*635a8641SAndroid Build Coastguard Worker 47*635a8641SAndroid Build Coastguard Workervoid WontCompile() { 48*635a8641SAndroid Build Coastguard Worker // HistogramBase::Sample is an int and can't hold larger values. 49*635a8641SAndroid Build Coastguard Worker enum class TypeA : uint32_t { A = 0xffffffff }; 50*635a8641SAndroid Build Coastguard Worker UMA_HISTOGRAM_ENUMERATION("", TypeA::A, TypeA::A); 51*635a8641SAndroid Build Coastguard Worker} 52*635a8641SAndroid Build Coastguard Worker 53*635a8641SAndroid Build Coastguard Worker#elif defined(NCTEST_SAMPLE_NOT_ENUM) // [r'static_assert failed "Unexpected: \|boundary\| is enum, but \|sample\| is not."'] 54*635a8641SAndroid Build Coastguard Worker 55*635a8641SAndroid Build Coastguard Workervoid WontCompile() { 56*635a8641SAndroid Build Coastguard Worker enum TypeA { A }; 57*635a8641SAndroid Build Coastguard Worker UMA_HISTOGRAM_ENUMERATION("", 0, TypeA::A); 58*635a8641SAndroid Build Coastguard Worker} 59*635a8641SAndroid Build Coastguard Worker 60*635a8641SAndroid Build Coastguard Worker#elif defined(NCTEST_FUNCTION_INT) // [r"Non enum passed to UmaHistogramEnumeration"] 61*635a8641SAndroid Build Coastguard Worker 62*635a8641SAndroid Build Coastguard Workervoid WontCompile() { 63*635a8641SAndroid Build Coastguard Worker UmaHistogramEnumeration("", 1, 2); 64*635a8641SAndroid Build Coastguard Worker} 65*635a8641SAndroid Build Coastguard Worker 66*635a8641SAndroid Build Coastguard Worker#elif defined(NCTEST_FUNCTION_DIFFERENT_ENUM) // [r"no matching function for call to 'UmaHistogramEnumeration'"] 67*635a8641SAndroid Build Coastguard Worker 68*635a8641SAndroid Build Coastguard Workervoid WontCompile() { 69*635a8641SAndroid Build Coastguard Worker enum TypeA { A }; 70*635a8641SAndroid Build Coastguard Worker enum TypeB { B }; 71*635a8641SAndroid Build Coastguard Worker UmaHistogramEnumeration("", A, B); 72*635a8641SAndroid Build Coastguard Worker} 73*635a8641SAndroid Build Coastguard Worker 74*635a8641SAndroid Build Coastguard Worker#elif defined(NCTEST_FUNCTION_FIRST_NOT_ENUM) // [r"no matching function for call to 'UmaHistogramEnumeration'"] 75*635a8641SAndroid Build Coastguard Worker 76*635a8641SAndroid Build Coastguard Workervoid WontCompile() { 77*635a8641SAndroid Build Coastguard Worker enum TypeB { B }; 78*635a8641SAndroid Build Coastguard Worker UmaHistogramEnumeration("", 1, B); 79*635a8641SAndroid Build Coastguard Worker} 80*635a8641SAndroid Build Coastguard Worker 81*635a8641SAndroid Build Coastguard Worker#elif defined(NCTEST_FUNCTION_SECOND_NOT_ENUM) // [r"no matching function for call to 'UmaHistogramEnumeration'"] 82*635a8641SAndroid Build Coastguard Worker 83*635a8641SAndroid Build Coastguard Workervoid WontCompile() { 84*635a8641SAndroid Build Coastguard Worker enum TypeA { A }; 85*635a8641SAndroid Build Coastguard Worker UmaHistogramEnumeration("", A, 2); 86*635a8641SAndroid Build Coastguard Worker} 87*635a8641SAndroid Build Coastguard Worker 88*635a8641SAndroid Build Coastguard Worker#endif 89*635a8641SAndroid Build Coastguard Worker 90*635a8641SAndroid Build Coastguard Worker} // namespace base 91