xref: /aosp_15_r20/external/cronet/base/task/task_traits_unittest.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2017 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #include "base/task/task_traits.h"
6*6777b538SAndroid Build Coastguard Worker 
7*6777b538SAndroid Build Coastguard Worker #include "testing/gtest/include/gtest/gtest.h"
8*6777b538SAndroid Build Coastguard Worker 
9*6777b538SAndroid Build Coastguard Worker namespace base {
10*6777b538SAndroid Build Coastguard Worker 
TEST(TaskTraitsTest,Default)11*6777b538SAndroid Build Coastguard Worker TEST(TaskTraitsTest, Default) {
12*6777b538SAndroid Build Coastguard Worker   constexpr TaskTraits traits = {};
13*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(TaskPriority::USER_BLOCKING, traits.priority());
14*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.shutdown_behavior_set_explicitly());
15*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN, traits.shutdown_behavior());
16*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.thread_policy_set_explicitly());
17*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(ThreadPolicy::PREFER_BACKGROUND, traits.thread_policy());
18*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.may_block());
19*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.with_base_sync_primitives());
20*6777b538SAndroid Build Coastguard Worker }
21*6777b538SAndroid Build Coastguard Worker 
TEST(TaskTraitsTest,TaskPriority)22*6777b538SAndroid Build Coastguard Worker TEST(TaskTraitsTest, TaskPriority) {
23*6777b538SAndroid Build Coastguard Worker   constexpr TaskTraits traits = {TaskPriority::BEST_EFFORT};
24*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(TaskPriority::BEST_EFFORT, traits.priority());
25*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.shutdown_behavior_set_explicitly());
26*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN, traits.shutdown_behavior());
27*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.thread_policy_set_explicitly());
28*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(ThreadPolicy::PREFER_BACKGROUND, traits.thread_policy());
29*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.may_block());
30*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.with_base_sync_primitives());
31*6777b538SAndroid Build Coastguard Worker }
32*6777b538SAndroid Build Coastguard Worker 
TEST(TaskTraitsTest,TaskShutdownBehavior)33*6777b538SAndroid Build Coastguard Worker TEST(TaskTraitsTest, TaskShutdownBehavior) {
34*6777b538SAndroid Build Coastguard Worker   constexpr TaskTraits traits = {TaskShutdownBehavior::BLOCK_SHUTDOWN};
35*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(TaskPriority::USER_BLOCKING, traits.priority());
36*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(traits.shutdown_behavior_set_explicitly());
37*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(TaskShutdownBehavior::BLOCK_SHUTDOWN, traits.shutdown_behavior());
38*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.thread_policy_set_explicitly());
39*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(ThreadPolicy::PREFER_BACKGROUND, traits.thread_policy());
40*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.may_block());
41*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.with_base_sync_primitives());
42*6777b538SAndroid Build Coastguard Worker }
43*6777b538SAndroid Build Coastguard Worker 
TEST(TaskTraitsTest,ThreadPolicy)44*6777b538SAndroid Build Coastguard Worker TEST(TaskTraitsTest, ThreadPolicy) {
45*6777b538SAndroid Build Coastguard Worker   constexpr TaskTraits traits = {ThreadPolicy::MUST_USE_FOREGROUND};
46*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(TaskPriority::USER_BLOCKING, traits.priority());
47*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.shutdown_behavior_set_explicitly());
48*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN, traits.shutdown_behavior());
49*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(traits.thread_policy_set_explicitly());
50*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(ThreadPolicy::MUST_USE_FOREGROUND, traits.thread_policy());
51*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.may_block());
52*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.with_base_sync_primitives());
53*6777b538SAndroid Build Coastguard Worker }
54*6777b538SAndroid Build Coastguard Worker 
TEST(TaskTraitsTest,MayBlock)55*6777b538SAndroid Build Coastguard Worker TEST(TaskTraitsTest, MayBlock) {
56*6777b538SAndroid Build Coastguard Worker   constexpr TaskTraits traits = {MayBlock()};
57*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(TaskPriority::USER_BLOCKING, traits.priority());
58*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.shutdown_behavior_set_explicitly());
59*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN, traits.shutdown_behavior());
60*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.thread_policy_set_explicitly());
61*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(ThreadPolicy::PREFER_BACKGROUND, traits.thread_policy());
62*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(traits.may_block());
63*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.with_base_sync_primitives());
64*6777b538SAndroid Build Coastguard Worker }
65*6777b538SAndroid Build Coastguard Worker 
TEST(TaskTraitsTest,WithBaseSyncPrimitives)66*6777b538SAndroid Build Coastguard Worker TEST(TaskTraitsTest, WithBaseSyncPrimitives) {
67*6777b538SAndroid Build Coastguard Worker   constexpr TaskTraits traits = {WithBaseSyncPrimitives()};
68*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(TaskPriority::USER_BLOCKING, traits.priority());
69*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.shutdown_behavior_set_explicitly());
70*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(TaskShutdownBehavior::SKIP_ON_SHUTDOWN, traits.shutdown_behavior());
71*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.thread_policy_set_explicitly());
72*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(ThreadPolicy::PREFER_BACKGROUND, traits.thread_policy());
73*6777b538SAndroid Build Coastguard Worker   EXPECT_FALSE(traits.may_block());
74*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(traits.with_base_sync_primitives());
75*6777b538SAndroid Build Coastguard Worker }
76*6777b538SAndroid Build Coastguard Worker 
TEST(TaskTraitsTest,UpdatePriority)77*6777b538SAndroid Build Coastguard Worker TEST(TaskTraitsTest, UpdatePriority) {
78*6777b538SAndroid Build Coastguard Worker   {
79*6777b538SAndroid Build Coastguard Worker     TaskTraits traits = {};
80*6777b538SAndroid Build Coastguard Worker     traits.UpdatePriority(TaskPriority::BEST_EFFORT);
81*6777b538SAndroid Build Coastguard Worker     EXPECT_EQ(TaskPriority::BEST_EFFORT, traits.priority());
82*6777b538SAndroid Build Coastguard Worker   }
83*6777b538SAndroid Build Coastguard Worker 
84*6777b538SAndroid Build Coastguard Worker   {
85*6777b538SAndroid Build Coastguard Worker     TaskTraits traits = {TaskPriority::USER_VISIBLE};
86*6777b538SAndroid Build Coastguard Worker     traits.UpdatePriority(TaskPriority::BEST_EFFORT);
87*6777b538SAndroid Build Coastguard Worker     EXPECT_EQ(TaskPriority::BEST_EFFORT, traits.priority());
88*6777b538SAndroid Build Coastguard Worker   }
89*6777b538SAndroid Build Coastguard Worker }
90*6777b538SAndroid Build Coastguard Worker 
TEST(TaskTraitsTest,MultipleTraits)91*6777b538SAndroid Build Coastguard Worker TEST(TaskTraitsTest, MultipleTraits) {
92*6777b538SAndroid Build Coastguard Worker   constexpr TaskTraits traits = {
93*6777b538SAndroid Build Coastguard Worker       TaskPriority::BEST_EFFORT, TaskShutdownBehavior::BLOCK_SHUTDOWN,
94*6777b538SAndroid Build Coastguard Worker       ThreadPolicy::MUST_USE_FOREGROUND, MayBlock(), WithBaseSyncPrimitives()};
95*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(TaskPriority::BEST_EFFORT, traits.priority());
96*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(traits.shutdown_behavior_set_explicitly());
97*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(TaskShutdownBehavior::BLOCK_SHUTDOWN, traits.shutdown_behavior());
98*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(traits.thread_policy_set_explicitly());
99*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(ThreadPolicy::MUST_USE_FOREGROUND, traits.thread_policy());
100*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(traits.may_block());
101*6777b538SAndroid Build Coastguard Worker   EXPECT_TRUE(traits.with_base_sync_primitives());
102*6777b538SAndroid Build Coastguard Worker }
103*6777b538SAndroid Build Coastguard Worker 
TEST(TaskTraitsTest,Copy)104*6777b538SAndroid Build Coastguard Worker TEST(TaskTraitsTest, Copy) {
105*6777b538SAndroid Build Coastguard Worker   constexpr TaskTraits traits = {
106*6777b538SAndroid Build Coastguard Worker       TaskPriority::BEST_EFFORT, TaskShutdownBehavior::BLOCK_SHUTDOWN,
107*6777b538SAndroid Build Coastguard Worker       ThreadPolicy::MUST_USE_FOREGROUND, MayBlock(), WithBaseSyncPrimitives()};
108*6777b538SAndroid Build Coastguard Worker   constexpr TaskTraits traits_copy(traits);
109*6777b538SAndroid Build Coastguard Worker 
110*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(traits, traits_copy);
111*6777b538SAndroid Build Coastguard Worker 
112*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(traits.priority(), traits_copy.priority());
113*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(traits.shutdown_behavior_set_explicitly(),
114*6777b538SAndroid Build Coastguard Worker             traits_copy.shutdown_behavior_set_explicitly());
115*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(traits.shutdown_behavior(), traits_copy.shutdown_behavior());
116*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(traits.thread_policy_set_explicitly(),
117*6777b538SAndroid Build Coastguard Worker             traits_copy.thread_policy_set_explicitly());
118*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(traits.thread_policy(), traits_copy.thread_policy());
119*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(traits.may_block(), traits_copy.may_block());
120*6777b538SAndroid Build Coastguard Worker   EXPECT_EQ(traits.with_base_sync_primitives(),
121*6777b538SAndroid Build Coastguard Worker             traits_copy.with_base_sync_primitives());
122*6777b538SAndroid Build Coastguard Worker }
123*6777b538SAndroid Build Coastguard Worker 
124*6777b538SAndroid Build Coastguard Worker }  // namespace base
125