Index: webrtc/base/ptr_util_unittest.cc |
diff --git a/webrtc/base/ptr_util_unittest.cc b/webrtc/base/ptr_util_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..22669c52f5609782b532c5cb5f935f5709374273 |
--- /dev/null |
+++ b/webrtc/base/ptr_util_unittest.cc |
@@ -0,0 +1,69 @@ |
+/* |
+ * Copyright 2017 The WebRTC Project Authors. All rights reserved. |
+ * |
+ * Use of this source code is governed by a BSD-style license |
+ * that can be found in the LICENSE file in the root of the source |
+ * tree. An additional intellectual property rights grant can be found |
+ * in the file PATENTS. All contributing project authors may |
+ * be found in the AUTHORS file in the root of the source tree. |
+ */ |
+ |
+#include "webrtc/base/ptr_util.h" |
+ |
+#include <stddef.h> |
+#include <string> |
+ |
+#include "webrtc/base/gunit.h" |
+ |
+namespace rtc { |
+ |
+namespace { |
+ |
+class DeleteCounter { |
+ public: |
+ DeleteCounter() { ++count_; } |
+ ~DeleteCounter() { --count_; } |
+ |
+ static size_t count() { return count_; } |
+ |
+ private: |
+ static size_t count_; |
+}; |
+ |
+size_t DeleteCounter::count_ = 0; |
+ |
+} // namespace |
+ |
+TEST(PtrUtilTest, WrapUnique) { |
+ EXPECT_EQ(0u, DeleteCounter::count()); |
+ DeleteCounter* counter = new DeleteCounter; |
+ EXPECT_EQ(1u, DeleteCounter::count()); |
+ std::unique_ptr<DeleteCounter> owned_counter = WrapUnique(counter); |
+ EXPECT_EQ(1u, DeleteCounter::count()); |
+ owned_counter.reset(); |
+ EXPECT_EQ(0u, DeleteCounter::count()); |
+} |
+ |
+TEST(PtrUtilTest, MakeUniqueScalar) { |
+ auto s = MakeUnique<std::string>(); |
+ EXPECT_EQ("", *s); |
+ |
+ auto s2 = MakeUnique<std::string>("test"); |
+ EXPECT_EQ("test", *s2); |
+} |
+ |
+TEST(PtrUtilTest, MakeUniqueScalarWithMoveOnlyType) { |
+ using MoveOnly = std::unique_ptr<std::string>; |
+ auto p = MakeUnique<MoveOnly>(MakeUnique<std::string>("test")); |
+ EXPECT_EQ("test", **p); |
+} |
+ |
+TEST(PtrUtilTest, MakeUniqueArray) { |
+ EXPECT_EQ(0u, DeleteCounter::count()); |
+ auto a = MakeUnique<DeleteCounter[]>(5); |
+ EXPECT_EQ(5u, DeleteCounter::count()); |
+ a.reset(); |
+ EXPECT_EQ(0u, DeleteCounter::count()); |
+} |
+ |
+} // namespace rtc |