xref: /aosp_15_r20/external/pdfium/core/fxcrt/autonuller_unittest.cpp (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1 // Copyright 2020 The PDFium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "core/fxcrt/autonuller.h"
6 #include "core/fxcrt/unowned_ptr.h"
7 #include "testing/gtest/include/gtest/gtest.h"
8 
TEST(fxcrt,AutoNuller)9 TEST(fxcrt, AutoNuller) {
10   int x = 5;
11   int* ptr;
12   {
13     AutoNuller<int*> nuller(&ptr);
14     ptr = &x;
15     EXPECT_EQ(&x, ptr);
16   }
17   EXPECT_FALSE(ptr);
18 }
19 
TEST(fxcrt,AutoNullerAbandon)20 TEST(fxcrt, AutoNullerAbandon) {
21   int x = 5;
22   int* ptr;
23   {
24     AutoNuller<int*> nuller(&ptr);
25     ptr = &x;
26     EXPECT_EQ(&x, ptr);
27     nuller.AbandonNullification();
28   }
29   EXPECT_EQ(&x, ptr);
30 }
31 
TEST(fxcrt,AutoNullerUnownedPtr)32 TEST(fxcrt, AutoNullerUnownedPtr) {
33   int x = 5;
34   UnownedPtr<int> ptr;
35   {
36     AutoNuller<UnownedPtr<int>> nuller(&ptr);
37     ptr = &x;
38     EXPECT_EQ(&x, ptr);
39   }
40   EXPECT_FALSE(ptr);
41 }
42 
TEST(fxcrt,AutoNullerUnownedPtrAbandon)43 TEST(fxcrt, AutoNullerUnownedPtrAbandon) {
44   int x = 5;
45   UnownedPtr<int> ptr;
46   {
47     AutoNuller<UnownedPtr<int>> nuller(&ptr);
48     ptr = &x;
49     EXPECT_EQ(&x, ptr);
50     nuller.AbandonNullification();
51   }
52   EXPECT_EQ(&x, ptr);
53 }
54