resource_container_test.cc 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // Tests the methods of ResourceContainer.
  2. //
  3. // NOTE(danielandor): For all tests: ResourceContainer is derived from
  4. // RefCounted, which requires the use of Unref to reduce the ref count
  5. // to zero and automatically delete the pointer.
  6. #include "dragnn/core/resource_container.h"
  7. #include <gmock/gmock.h>
  8. #include "tensorflow/core/platform/test.h"
  9. namespace syntaxnet {
  10. namespace dragnn {
  11. class MockDatatype {};
  12. TEST(ResourceContainerTest, Get) {
  13. std::unique_ptr<MockDatatype> data(new MockDatatype());
  14. MockDatatype *data_ptr = data.get();
  15. auto *container = new ResourceContainer<MockDatatype>(std::move(data));
  16. EXPECT_EQ(data_ptr, container->get());
  17. container->Unref();
  18. }
  19. TEST(ResourceContainerTest, Release) {
  20. std::unique_ptr<MockDatatype> data(new MockDatatype());
  21. MockDatatype *data_ptr = data.get();
  22. auto *container = new ResourceContainer<MockDatatype>(std::move(data));
  23. std::unique_ptr<MockDatatype> data_again = container->release();
  24. container->Unref();
  25. EXPECT_EQ(data_ptr, data_again.get());
  26. }
  27. TEST(ResourceContainerTest, NullptrOnGetAfterRelease) {
  28. std::unique_ptr<MockDatatype> data(new MockDatatype());
  29. auto *container = new ResourceContainer<MockDatatype>(std::move(data));
  30. container->release();
  31. EXPECT_EQ(nullptr, container->get());
  32. container->Unref();
  33. }
  34. TEST(ResourceContainerTest, DebugString) {
  35. std::unique_ptr<MockDatatype> data(new MockDatatype());
  36. auto *container = new ResourceContainer<MockDatatype>(std::move(data));
  37. EXPECT_EQ("ResourceContainer", container->DebugString());
  38. container->Unref();
  39. }
  40. } // namespace dragnn
  41. } // namespace syntaxnet