@@ -155,6 +155,42 @@ TEST_F(BaseObjectPtrTest, Moveable) {
155155 EXPECT_EQ (realm->base_object_created_after_bootstrap (), 0 );
156156}
157157
158+ TEST_F (BaseObjectPtrTest, Nullptr) {
159+ const HandleScope handle_scope (isolate_);
160+ const Argv argv;
161+ Env env_{handle_scope, argv};
162+ Environment* env = *env_;
163+ Realm* realm = env->principal_realm ();
164+
165+ BaseObjectPtr<DummyBaseObject> ptr = nullptr ;
166+ EXPECT_EQ (nullptr , ptr);
167+ EXPECT_EQ (ptr, nullptr );
168+ EXPECT_EQ (nullptr , ptr.get ());
169+
170+ // Implicit constructor.
171+ BaseObjectPtr<DummyBaseObject> ptr2 = []() -> BaseObjectPtr<DummyBaseObject> {
172+ return nullptr ;
173+ }();
174+ EXPECT_EQ (nullptr , ptr2);
175+ EXPECT_EQ (ptr2, nullptr );
176+ EXPECT_EQ (nullptr , ptr2.get ());
177+
178+ BaseObjectWeakPtr<DummyBaseObject> weak_ptr{ptr};
179+ EXPECT_EQ (nullptr , weak_ptr);
180+ EXPECT_EQ (weak_ptr, nullptr );
181+ EXPECT_EQ (nullptr , weak_ptr.get ());
182+ ptr.reset ();
183+ EXPECT_EQ (weak_ptr.get (), nullptr );
184+
185+ // No object creation with nullptr.
186+ EXPECT_EQ (realm->base_object_created_after_bootstrap (), 0 );
187+
188+ BaseObjectPtr<DummyBaseObject> ptr4 = DummyBaseObject::NewDetached (env);
189+ EXPECT_NE (nullptr , ptr4);
190+ EXPECT_NE (ptr4, nullptr );
191+ EXPECT_EQ (realm->base_object_created_after_bootstrap (), 1 );
192+ }
193+
158194TEST_F (BaseObjectPtrTest, NestedClasses) {
159195 class ObjectWithPtr : public BaseObject {
160196 public:
0 commit comments