Movatterモバイル変換


[0]ホーム

URL:


Google Git
Sign in
chromium /chromium /src /refs/heads/main /. /base /at_exit_unittest.cc
blob: fdeea4396097b0c7f0dfbc2de7ea168c83560538 [file] [log] [blame]
Avi Drissmane4622aa2022-09-08 20:36:06[diff] [blame]1// Copyright 2011 The Chromium Authors
mmentovai@google.comb2e97292008-09-02 18:20:34[diff] [blame]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"base/at_exit.h"
6
Peter Kasting134ef9af2024-12-28 02:30:09[diff] [blame]7#include"base/functional/bind.h"
mmentovai@google.comb2e97292008-09-02 18:20:34[diff] [blame]8#include"testing/gtest/include/gtest/gtest.h"
9
10namespace{
11
mmentovai@google.comb2e97292008-09-02 18:20:34[diff] [blame]12int g_test_counter_1=0;
13int g_test_counter_2=0;
14
deanm@google.com9795ec12008-09-08 09:06:51[diff] [blame]15voidIncrementTestCounter1(void* unused){
mmentovai@google.comb2e97292008-09-02 18:20:34[diff] [blame]16++g_test_counter_1;
17}
18
deanm@google.com9795ec12008-09-08 09:06:51[diff] [blame]19voidIncrementTestCounter2(void* unused){
mmentovai@google.comb2e97292008-09-02 18:20:34[diff] [blame]20++g_test_counter_2;
21}
22
23voidZeroTestCounters(){
24 g_test_counter_1=0;
25 g_test_counter_2=0;
26}
27
deanm@google.com9795ec12008-09-08 09:06:51[diff] [blame]28voidExpectCounter1IsZero(void* unused){
mmentovai@google.comb2e97292008-09-02 18:20:34[diff] [blame]29 EXPECT_EQ(0, g_test_counter_1);
30}
31
deanm@google.com9795ec12008-09-08 09:06:51[diff] [blame]32voidExpectParamIsNull(void* param){
Ivan Kotenkova16212a52017-11-08 12:37:33[diff] [blame]33 EXPECT_EQ(nullptr, param);
deanm@google.com9795ec12008-09-08 09:06:51[diff] [blame]34}
35
36voidExpectParamIsCounter(void* param){
37 EXPECT_EQ(&g_test_counter_1, param);
38}
39
mmentovai@google.comb2e97292008-09-02 18:20:34[diff] [blame]40}// namespace
41
phajdan.jr@chromium.org4ea927b2009-11-19 09:11:39[diff] [blame]42classAtExitTest:public testing::Test{
43private:
44// Don't test the global AtExitManager, because asking it to process its
45// AtExit callbacks can ruin the global state that other tests may depend on.
46 base::ShadowingAtExitManager exit_manager_;
47};
mmentovai@google.comb2e97292008-09-02 18:20:34[diff] [blame]48
phajdan.jr@chromium.org4ea927b2009-11-19 09:11:39[diff] [blame]49TEST_F(AtExitTest,Basic){
mmentovai@google.comb2e97292008-09-02 18:20:34[diff] [blame]50ZeroTestCounters();
Ivan Kotenkova16212a52017-11-08 12:37:33[diff] [blame]51 base::AtExitManager::RegisterCallback(&IncrementTestCounter1,nullptr);
52 base::AtExitManager::RegisterCallback(&IncrementTestCounter2,nullptr);
53 base::AtExitManager::RegisterCallback(&IncrementTestCounter1,nullptr);
maruel@chromium.org52a261f2009-03-03 15:01:12[diff] [blame]54
mmentovai@google.comb2e97292008-09-02 18:20:34[diff] [blame]55 EXPECT_EQ(0, g_test_counter_1);
56 EXPECT_EQ(0, g_test_counter_2);
57 base::AtExitManager::ProcessCallbacksNow();
58 EXPECT_EQ(2, g_test_counter_1);
59 EXPECT_EQ(1, g_test_counter_2);
60}
61
phajdan.jr@chromium.org4ea927b2009-11-19 09:11:39[diff] [blame]62TEST_F(AtExitTest,LIFOOrder){
mmentovai@google.comb2e97292008-09-02 18:20:34[diff] [blame]63ZeroTestCounters();
Ivan Kotenkova16212a52017-11-08 12:37:33[diff] [blame]64 base::AtExitManager::RegisterCallback(&IncrementTestCounter1,nullptr);
65 base::AtExitManager::RegisterCallback(&ExpectCounter1IsZero,nullptr);
66 base::AtExitManager::RegisterCallback(&IncrementTestCounter2,nullptr);
maruel@chromium.org52a261f2009-03-03 15:01:12[diff] [blame]67
mmentovai@google.comb2e97292008-09-02 18:20:34[diff] [blame]68 EXPECT_EQ(0, g_test_counter_1);
69 EXPECT_EQ(0, g_test_counter_2);
70 base::AtExitManager::ProcessCallbacksNow();
71 EXPECT_EQ(1, g_test_counter_1);
72 EXPECT_EQ(1, g_test_counter_2);
73}
74
phajdan.jr@chromium.org4ea927b2009-11-19 09:11:39[diff] [blame]75TEST_F(AtExitTest,Param){
Ivan Kotenkova16212a52017-11-08 12:37:33[diff] [blame]76 base::AtExitManager::RegisterCallback(&ExpectParamIsNull,nullptr);
deanm@google.com9795ec12008-09-08 09:06:51[diff] [blame]77 base::AtExitManager::RegisterCallback(&ExpectParamIsCounter,
78&g_test_counter_1);
79 base::AtExitManager::ProcessCallbacksNow();
80}
apatrick@chromium.org762de912011-09-06 23:14:47[diff] [blame]81
82TEST_F(AtExitTest,Task){
83ZeroTestCounters();
kylecharb2695fc2019-04-24 14:51:20[diff] [blame]84 base::AtExitManager::RegisterTask(
85 base::BindOnce(&ExpectParamIsCounter,&g_test_counter_1));
apatrick@chromium.org762de912011-09-06 23:14:47[diff] [blame]86 base::AtExitManager::ProcessCallbacksNow();
87}

[8]ページ先頭

©2009-2025 Movatter.jp