summaryrefslogtreecommitdiffstats
path: root/src/jaegertracing/opentelemetry-cpp/sdk/test/common/atomic_unique_ptr_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/jaegertracing/opentelemetry-cpp/sdk/test/common/atomic_unique_ptr_test.cc')
-rw-r--r--src/jaegertracing/opentelemetry-cpp/sdk/test/common/atomic_unique_ptr_test.cc42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/jaegertracing/opentelemetry-cpp/sdk/test/common/atomic_unique_ptr_test.cc b/src/jaegertracing/opentelemetry-cpp/sdk/test/common/atomic_unique_ptr_test.cc
new file mode 100644
index 000000000..aa6d88a00
--- /dev/null
+++ b/src/jaegertracing/opentelemetry-cpp/sdk/test/common/atomic_unique_ptr_test.cc
@@ -0,0 +1,42 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+#include "opentelemetry/sdk/common/atomic_unique_ptr.h"
+
+#include <gtest/gtest.h>
+using opentelemetry::sdk::common::AtomicUniquePtr;
+
+TEST(AtomicUniquePtrTest, SwapIfNullWithNull)
+{
+ AtomicUniquePtr<int> ptr;
+ EXPECT_TRUE(ptr.IsNull());
+
+ std::unique_ptr<int> x{new int{33}};
+ EXPECT_TRUE(ptr.SwapIfNull(x));
+ EXPECT_EQ(x, nullptr);
+}
+
+TEST(AtomicUniquePtrTest, SwapIfNullWithNonNull)
+{
+ AtomicUniquePtr<int> ptr;
+ ptr.Reset(new int{11});
+ std::unique_ptr<int> x{new int{33}};
+ EXPECT_TRUE(!ptr.SwapIfNull(x));
+ EXPECT_NE(x, nullptr);
+ EXPECT_EQ(*x, 33);
+ EXPECT_EQ(*ptr, 11);
+}
+
+TEST(AtomicUniquePtrTest, Swap)
+{
+ AtomicUniquePtr<int> ptr;
+ EXPECT_TRUE(ptr.IsNull());
+
+ ptr.Reset(new int{11});
+ std::unique_ptr<int> x{new int{33}};
+ ptr.Swap(x);
+ EXPECT_FALSE(ptr.IsNull());
+ EXPECT_NE(x, nullptr);
+ EXPECT_EQ(*x, 11);
+ EXPECT_EQ(*ptr, 33);
+}