1*84e33947SAndroid Build Coastguard Worker /* 2*84e33947SAndroid Build Coastguard Worker * Copyright (C) 2016 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 "gtest/gtest.h" 18*84e33947SAndroid Build Coastguard Worker 19*84e33947SAndroid Build Coastguard Worker #include "chre/util/lock_guard.h" 20*84e33947SAndroid Build Coastguard Worker 21*84e33947SAndroid Build Coastguard Worker using chre::LockGuard; 22*84e33947SAndroid Build Coastguard Worker 23*84e33947SAndroid Build Coastguard Worker class MockMutex { 24*84e33947SAndroid Build Coastguard Worker public: MockMutex()25*84e33947SAndroid Build Coastguard Worker MockMutex() : mLockCount(0) {} 26*84e33947SAndroid Build Coastguard Worker lock()27*84e33947SAndroid Build Coastguard Worker void lock() { 28*84e33947SAndroid Build Coastguard Worker mLockCount++; 29*84e33947SAndroid Build Coastguard Worker } 30*84e33947SAndroid Build Coastguard Worker unlock()31*84e33947SAndroid Build Coastguard Worker void unlock() { 32*84e33947SAndroid Build Coastguard Worker mLockCount--; 33*84e33947SAndroid Build Coastguard Worker } 34*84e33947SAndroid Build Coastguard Worker getLockCount()35*84e33947SAndroid Build Coastguard Worker int getLockCount() { 36*84e33947SAndroid Build Coastguard Worker return mLockCount; 37*84e33947SAndroid Build Coastguard Worker } 38*84e33947SAndroid Build Coastguard Worker 39*84e33947SAndroid Build Coastguard Worker private: 40*84e33947SAndroid Build Coastguard Worker int mLockCount; 41*84e33947SAndroid Build Coastguard Worker }; 42*84e33947SAndroid Build Coastguard Worker TEST(LockGuard,LockUnlock)43*84e33947SAndroid Build Coastguard WorkerTEST(LockGuard, LockUnlock) { 44*84e33947SAndroid Build Coastguard Worker MockMutex mutex; 45*84e33947SAndroid Build Coastguard Worker EXPECT_EQ(mutex.getLockCount(), 0); 46*84e33947SAndroid Build Coastguard Worker 47*84e33947SAndroid Build Coastguard Worker { 48*84e33947SAndroid Build Coastguard Worker LockGuard<MockMutex> lock(mutex); 49*84e33947SAndroid Build Coastguard Worker EXPECT_EQ(mutex.getLockCount(), 1); 50*84e33947SAndroid Build Coastguard Worker } 51*84e33947SAndroid Build Coastguard Worker 52*84e33947SAndroid Build Coastguard Worker EXPECT_EQ(mutex.getLockCount(), 0); 53*84e33947SAndroid Build Coastguard Worker } 54