Fix the Mac build, and clean up some test-only code.
Change-Id: Ie0acf7ac5e99153d153a0d5f40e9b69cecb4942b
diff --git a/src/mutex.h b/src/mutex.h
index 475c7dd..02d127f 100644
--- a/src/mutex.h
+++ b/src/mutex.h
@@ -23,6 +23,7 @@
#include <iosfwd>
#include <string>
+#include "gtest/gtest.h"
#include "logging.h"
#include "macros.h"
@@ -74,12 +75,6 @@
pid_t GetOwner();
- void AssertDepth(uint32_t depth) {
-#if !defined(__APPLE__)
- DCHECK_EQ(depth, GetDepth());
-#endif
- }
-
private:
static pid_t GetTid();
@@ -89,6 +84,7 @@
std::string name_;
MutexRank rank_;
+ friend class MutexTester;
DISALLOW_COPY_AND_ASSIGN(Mutex);
};
diff --git a/src/mutex_test.cc b/src/mutex_test.cc
index 2099951..b59b305 100644
--- a/src/mutex_test.cc
+++ b/src/mutex_test.cc
@@ -20,48 +20,56 @@
namespace art {
+#if !defined(__APPLE__)
+struct MutexTester {
+ static void AssertDepth(Mutex& mu, uint32_t expected_depth) {
+ ASSERT_EQ(expected_depth, mu.GetDepth());
+ }
+};
+
TEST(Mutex, LockUnlock) {
Mutex mu("test mutex");
- mu.AssertDepth(0U);
+ MutexTester::AssertDepth(mu, 0U);
mu.Lock();
- mu.AssertDepth(1U);
+ MutexTester::AssertDepth(mu, 1U);
mu.Unlock();
- mu.AssertDepth(0U);
+ MutexTester::AssertDepth(mu, 0U);
}
TEST(Mutex, TryLockUnlock) {
Mutex mu("test mutex");
- mu.AssertDepth(0U);
+ MutexTester::AssertDepth(mu, 0U);
mu.TryLock();
- mu.AssertDepth(1U);
+ MutexTester::AssertDepth(mu, 1U);
mu.Unlock();
- mu.AssertDepth(0U);
+ MutexTester::AssertDepth(mu, 0U);
}
TEST(Mutex, RecursiveLockUnlock) {
Mutex mu("test mutex");
- mu.AssertDepth(0U);
+ MutexTester::AssertDepth(mu, 0U);
mu.Lock();
- mu.AssertDepth(1U);
+ MutexTester::AssertDepth(mu, 1U);
mu.Lock();
- mu.AssertDepth(2U);
+ MutexTester::AssertDepth(mu, 2U);
mu.Unlock();
- mu.AssertDepth(1U);
+ MutexTester::AssertDepth(mu, 1U);
mu.Unlock();
- mu.AssertDepth(0U);
+ MutexTester::AssertDepth(mu, 0U);
}
TEST(Mutex, RecursiveTryLockUnlock) {
Mutex mu("test mutex");
- mu.AssertDepth(0U);
+ MutexTester::AssertDepth(mu, 0U);
mu.TryLock();
- mu.AssertDepth(1U);
+ MutexTester::AssertDepth(mu, 1U);
mu.TryLock();
- mu.AssertDepth(2U);
+ MutexTester::AssertDepth(mu, 2U);
mu.Unlock();
- mu.AssertDepth(1U);
+ MutexTester::AssertDepth(mu, 1U);
mu.Unlock();
- mu.AssertDepth(0U);
+ MutexTester::AssertDepth(mu, 0U);
}
+#endif
} // namespace art