// Copyright 2020 The PDFium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "core/fxcrt/autonuller.h" #include "core/fxcrt/unowned_ptr.h" #include "testing/gtest/include/gtest/gtest.h" TEST(fxcrt, AutoNuller) { int x = 5; int* ptr; { AutoNuller nuller(&ptr); ptr = &x; EXPECT_EQ(&x, ptr); } EXPECT_FALSE(ptr); } TEST(fxcrt, AutoNullerAbandon) { int x = 5; int* ptr; { AutoNuller nuller(&ptr); ptr = &x; EXPECT_EQ(&x, ptr); nuller.AbandonNullification(); } EXPECT_EQ(&x, ptr); } TEST(fxcrt, AutoNullerUnownedPtr) { int x = 5; UnownedPtr ptr; { AutoNuller> nuller(&ptr); ptr = &x; EXPECT_EQ(&x, ptr); } EXPECT_FALSE(ptr); } TEST(fxcrt, AutoNullerUnownedPtrAbandon) { int x = 5; UnownedPtr ptr; { AutoNuller> nuller(&ptr); ptr = &x; EXPECT_EQ(&x, ptr); nuller.AbandonNullification(); } EXPECT_EQ(&x, ptr); }