Merge "Fix the Mac build, and clean up some test-only code." into ics-mr1-plus-art
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