Removed Common

Change-Id: I01ea8f07220375c2ad9bc0092281d4f27c642303
diff --git a/aos/stl_mutex/stl_mutex_test.cc b/aos/stl_mutex/stl_mutex_test.cc
new file mode 100644
index 0000000..36d7067
--- /dev/null
+++ b/aos/stl_mutex/stl_mutex_test.cc
@@ -0,0 +1,74 @@
+#include "aos/stl_mutex/stl_mutex.h"
+
+#include "gtest/gtest.h"
+
+#include "aos/testing/test_logging.h"
+#include "aos/util/thread.h"
+#include "aos/die.h"
+
+namespace aos {
+namespace testing {
+
+class StlMutexDeathTest : public ::testing::Test {
+ protected:
+  void SetUp() override {
+    ::aos::testing::EnableTestLogging();
+    SetDieTestMode(true);
+  }
+};
+
+typedef StlMutexDeathTest StlRecursiveMutexDeathTest;
+
+// Tests that locking/unlocking without any blocking works.
+TEST(StlMutexTest, Basic) {
+  stl_mutex mutex;
+
+  mutex.lock();
+  mutex.unlock();
+
+  ASSERT_TRUE(mutex.try_lock());
+  ASSERT_FALSE(mutex.try_lock());
+  mutex.unlock();
+
+  mutex.lock();
+  ASSERT_FALSE(mutex.try_lock());
+  mutex.unlock();
+}
+
+// Tests that unlocking an unlocked mutex fails.
+TEST_F(StlMutexDeathTest, MultipleUnlock) {
+  stl_mutex mutex;
+  mutex.lock();
+  mutex.unlock();
+  EXPECT_DEATH(mutex.unlock(), ".*multiple unlock.*");
+}
+
+// Tests that locking/unlocking (including recursively) without any blocking
+// works.
+TEST(StlRecursiveMutexTest, Basic) {
+  stl_recursive_mutex mutex;
+
+  mutex.lock();
+  mutex.unlock();
+
+  ASSERT_TRUE(mutex.try_lock());
+  ASSERT_TRUE(mutex.try_lock());
+  mutex.unlock();
+  mutex.unlock();
+
+  mutex.lock();
+  ASSERT_TRUE(mutex.try_lock());
+  mutex.unlock();
+	mutex.unlock();
+}
+
+// Tests that unlocking an unlocked recursive mutex fails.
+TEST_F(StlRecursiveMutexDeathTest, MultipleUnlock) {
+  stl_recursive_mutex mutex;
+  mutex.lock();
+  mutex.unlock();
+  EXPECT_DEATH(mutex.unlock(), ".*multiple unlock.*");
+}
+
+}  // namespace testing
+}  // namespace aos