this repo has no description
at trunk 49 lines 1.7 kB view raw
1// Copyright (c) Facebook, Inc. and its affiliates. (http://www.facebook.com) 2#include "extension-object.h" 3 4#include "gtest/gtest.h" 5 6#include "capi.h" 7#include "linked-list.h" 8#include "test-utils.h" 9 10namespace py { 11namespace testing { 12 13using ExtensionObjectTest = RuntimeFixture; 14 15TEST_F(ExtensionObjectTest, TrackExtensionObjectAndUntrackExtensionObject) { 16 ListEntry entry0{nullptr, nullptr}; 17 ListEntry entry1{nullptr, nullptr}; 18 19 EXPECT_EQ(numExtensionObjects(runtime_), 0); 20 EXPECT_TRUE(trackExtensionObject(runtime_, &entry0)); 21 EXPECT_EQ(numExtensionObjects(runtime_), 1); 22 EXPECT_TRUE(trackExtensionObject(runtime_, &entry1)); 23 EXPECT_EQ(numExtensionObjects(runtime_), 2); 24 // Trying to track an already tracked object returns false. 25 EXPECT_FALSE(trackExtensionObject(runtime_, &entry0)); 26 EXPECT_EQ(numExtensionObjects(runtime_), 2); 27 EXPECT_FALSE(trackExtensionObject(runtime_, &entry1)); 28 EXPECT_EQ(numExtensionObjects(runtime_), 2); 29 30 EXPECT_TRUE(untrackExtensionObject(runtime_, &entry0)); 31 EXPECT_EQ(numExtensionObjects(runtime_), 1); 32 EXPECT_TRUE(untrackExtensionObject(runtime_, &entry1)); 33 EXPECT_EQ(numExtensionObjects(runtime_), 0); 34 35 // Trying to untrack an already untracked object returns false. 36 EXPECT_FALSE(untrackExtensionObject(runtime_, &entry0)); 37 EXPECT_EQ(numExtensionObjects(runtime_), 0); 38 EXPECT_FALSE(untrackExtensionObject(runtime_, &entry1)); 39 EXPECT_EQ(numExtensionObjects(runtime_), 0); 40 41 // Verify untracked entires are reset to nullptr. 42 EXPECT_EQ(entry0.prev, nullptr); 43 EXPECT_EQ(entry0.next, nullptr); 44 EXPECT_EQ(entry1.prev, nullptr); 45 EXPECT_EQ(entry1.next, nullptr); 46} 47 48} // namespace testing 49} // namespace py