atomic_unique_ptr_test.cc 963 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // Copyright The OpenTelemetry Authors
  2. // SPDX-License-Identifier: Apache-2.0
  3. #include "opentelemetry/sdk/common/atomic_unique_ptr.h"
  4. #include <gtest/gtest.h>
  5. #include <string>
  6. using opentelemetry::sdk::common::AtomicUniquePtr;
  7. TEST(AtomicUniquePtrTest, SwapIfNullWithNull)
  8. {
  9. AtomicUniquePtr<int> ptr;
  10. EXPECT_TRUE(ptr.IsNull());
  11. std::unique_ptr<int> x{new int{33}};
  12. EXPECT_TRUE(ptr.SwapIfNull(x));
  13. EXPECT_EQ(x, nullptr);
  14. }
  15. TEST(AtomicUniquePtrTest, SwapIfNullWithNonNull)
  16. {
  17. AtomicUniquePtr<int> ptr;
  18. ptr.Reset(new int{11});
  19. std::unique_ptr<int> x{new int{33}};
  20. EXPECT_TRUE(!ptr.SwapIfNull(x));
  21. EXPECT_NE(x, nullptr);
  22. EXPECT_EQ(*x, 33);
  23. EXPECT_EQ(*ptr, 11);
  24. }
  25. TEST(AtomicUniquePtrTest, Swap)
  26. {
  27. AtomicUniquePtr<int> ptr;
  28. EXPECT_TRUE(ptr.IsNull());
  29. ptr.Reset(new int{11});
  30. std::unique_ptr<int> x{new int{33}};
  31. ptr.Swap(x);
  32. EXPECT_FALSE(ptr.IsNull());
  33. EXPECT_NE(x, nullptr);
  34. EXPECT_EQ(*x, 11);
  35. EXPECT_EQ(*ptr, 33);
  36. }