54 lines
1.0 KiB
C++
54 lines
1.0 KiB
C++
|
|
// 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<int*> nuller(&ptr);
|
||
|
|
ptr = &x;
|
||
|
|
EXPECT_EQ(&x, ptr);
|
||
|
|
}
|
||
|
|
EXPECT_FALSE(ptr);
|
||
|
|
}
|
||
|
|
|
||
|
|
TEST(fxcrt, AutoNullerAbandon) {
|
||
|
|
int x = 5;
|
||
|
|
int* ptr;
|
||
|
|
{
|
||
|
|
AutoNuller<int*> nuller(&ptr);
|
||
|
|
ptr = &x;
|
||
|
|
EXPECT_EQ(&x, ptr);
|
||
|
|
nuller.AbandonNullification();
|
||
|
|
}
|
||
|
|
EXPECT_EQ(&x, ptr);
|
||
|
|
}
|
||
|
|
|
||
|
|
TEST(fxcrt, AutoNullerUnownedPtr) {
|
||
|
|
int x = 5;
|
||
|
|
UnownedPtr<int> ptr;
|
||
|
|
{
|
||
|
|
AutoNuller<UnownedPtr<int>> nuller(&ptr);
|
||
|
|
ptr = &x;
|
||
|
|
EXPECT_EQ(&x, ptr);
|
||
|
|
}
|
||
|
|
EXPECT_FALSE(ptr);
|
||
|
|
}
|
||
|
|
|
||
|
|
TEST(fxcrt, AutoNullerUnownedPtrAbandon) {
|
||
|
|
int x = 5;
|
||
|
|
UnownedPtr<int> ptr;
|
||
|
|
{
|
||
|
|
AutoNuller<UnownedPtr<int>> nuller(&ptr);
|
||
|
|
ptr = &x;
|
||
|
|
EXPECT_EQ(&x, ptr);
|
||
|
|
nuller.AbandonNullification();
|
||
|
|
}
|
||
|
|
EXPECT_EQ(&x, ptr);
|
||
|
|
}
|