1*84e33947SAndroid Build Coastguard Worker /* 2*84e33947SAndroid Build Coastguard Worker * Copyright (C) 2017 The Android Open Source Project 3*84e33947SAndroid Build Coastguard Worker * 4*84e33947SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*84e33947SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*84e33947SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*84e33947SAndroid Build Coastguard Worker * 8*84e33947SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*84e33947SAndroid Build Coastguard Worker * 10*84e33947SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*84e33947SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*84e33947SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*84e33947SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*84e33947SAndroid Build Coastguard Worker * limitations under the License. 15*84e33947SAndroid Build Coastguard Worker */ 16*84e33947SAndroid Build Coastguard Worker 17*84e33947SAndroid Build Coastguard Worker #include "chre/platform/assert.h" 18*84e33947SAndroid Build Coastguard Worker 19*84e33947SAndroid Build Coastguard Worker #include <cassert> 20*84e33947SAndroid Build Coastguard Worker 21*84e33947SAndroid Build Coastguard Worker #include "chre/platform/linux/expect_assert.h" 22*84e33947SAndroid Build Coastguard Worker 23*84e33947SAndroid Build Coastguard Worker #ifdef GTEST 24*84e33947SAndroid Build Coastguard Worker MockAssert *gMockAssert; 25*84e33947SAndroid Build Coastguard Worker #endif // GTEST 26*84e33947SAndroid Build Coastguard Worker chreDoAssert(const char * filename,size_t line)27*84e33947SAndroid Build Coastguard Workervoid chreDoAssert(const char *filename, size_t line) { 28*84e33947SAndroid Build Coastguard Worker LOGE("Assertion failure at %s:%zu", filename, line); 29*84e33947SAndroid Build Coastguard Worker #ifdef GTEST 30*84e33947SAndroid Build Coastguard Worker if (gMockAssert != nullptr) { 31*84e33947SAndroid Build Coastguard Worker gMockAssert->doAssert(); 32*84e33947SAndroid Build Coastguard Worker } else 33*84e33947SAndroid Build Coastguard Worker #endif // GTEST 34*84e33947SAndroid Build Coastguard Worker { 35*84e33947SAndroid Build Coastguard Worker #ifdef NDEBUG 36*84e33947SAndroid Build Coastguard Worker // Directly abort the program if assert is a no-op so that gtests can 37*84e33947SAndroid Build Coastguard Worker // work properly. 38*84e33947SAndroid Build Coastguard Worker abort(); 39*84e33947SAndroid Build Coastguard Worker #else 40*84e33947SAndroid Build Coastguard Worker assert(false); 41*84e33947SAndroid Build Coastguard Worker #endif // NDEBUG 42*84e33947SAndroid Build Coastguard Worker } 43*84e33947SAndroid Build Coastguard Worker } 44