Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/sequence_token.h" | 5 #include "base/sequence_and_task_token.h" |
| 6 | 6 |
| 7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
| 8 | 8 |
| 9 namespace base { | 9 namespace base { |
| 10 | 10 |
| 11 TEST(SequenceTokenTest, IsValid) { | 11 TEST(SequenceTokenTest, IsValid) { |
| 12 EXPECT_FALSE(SequenceToken().IsValid()); | 12 EXPECT_FALSE(SequenceToken().IsValid()); |
| 13 EXPECT_TRUE(SequenceToken::Create().IsValid()); | 13 EXPECT_TRUE(SequenceToken::Create().IsValid()); |
| 14 } | 14 } |
| 15 | 15 |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 46 EXPECT_FALSE(valid_a != valid_a); | 46 EXPECT_FALSE(valid_a != valid_a); |
| 47 EXPECT_NE(valid_a, valid_b); | 47 EXPECT_NE(valid_a, valid_b); |
| 48 } | 48 } |
| 49 | 49 |
| 50 TEST(SequenceTokenTest, GetForCurrentThread) { | 50 TEST(SequenceTokenTest, GetForCurrentThread) { |
| 51 const SequenceToken token = SequenceToken::Create(); | 51 const SequenceToken token = SequenceToken::Create(); |
| 52 | 52 |
| 53 EXPECT_FALSE(SequenceToken::GetForCurrentThread().IsValid()); | 53 EXPECT_FALSE(SequenceToken::GetForCurrentThread().IsValid()); |
| 54 | 54 |
| 55 { | 55 { |
| 56 ScopedSetSequenceTokenForCurrentThread | 56 ScopedSetSequenceAndTaskTokenForCurrentThread |
| 57 scoped_set_sequence_token_for_current_thread(token); | 57 scoped_set_sequence_and_task_token_for_current_thread(token); |
| 58 EXPECT_TRUE(SequenceToken::GetForCurrentThread().IsValid()); | 58 EXPECT_TRUE(SequenceToken::GetForCurrentThread().IsValid()); |
| 59 EXPECT_EQ(token, SequenceToken::GetForCurrentThread()); | 59 EXPECT_EQ(token, SequenceToken::GetForCurrentThread()); |
| 60 } | 60 } |
| 61 | 61 |
| 62 EXPECT_FALSE(SequenceToken::GetForCurrentThread().IsValid()); | 62 EXPECT_FALSE(SequenceToken::GetForCurrentThread().IsValid()); |
| 63 } | 63 } |
| 64 | 64 |
| 65 // Expect a default-constructed TaskToken to be invalid and not equal to | |
| 66 // another invalid TaskToken. | |
| 67 TEST(TaskTokenTest, InvalidDefaultConstructed) { | |
| 68 EXPECT_FALSE(TaskToken().IsValid()); | |
| 69 EXPECT_NE(TaskToken(), TaskToken()); | |
| 70 } | |
| 71 | |
| 72 // Expect a TaskToken returned by TaskToken::GetForCurrentThread() outside the | |
| 73 // scope of a ScopedSetSequenceAndTaskTokenForCurrentThread to be invalid. | |
| 74 TEST(TaskTokenTest, InvalidOutsideScope) { | |
| 75 EXPECT_FALSE(TaskToken::GetForCurrentThread().IsValid()); | |
| 76 } | |
| 77 | |
| 78 // Expect TaskTokens returned by TaskToken::GetForCurrentThread() in the scope | |
| 79 // of the same ScopedSetSequenceAndTaskTokenForCurrentThread instance to be | |
| 80 // valid and equal with each other, but not equal to an invalid TaskToken. | |
|
gab
2016/08/08 16:34:22
"but not equal to an invalid TaskToken" -- isn't t
fdoray
2016/08/08 17:45:18
Done.
| |
| 81 TEST(TaskTokenTest, EqualInSameScope) { | |
| 82 ScopedSetSequenceAndTaskTokenForCurrentThread | |
| 83 scoped_set_sequence_and_task_token_for_current_thread( | |
| 84 SequenceToken::Create()); | |
| 85 | |
| 86 const TaskToken token_a = TaskToken::GetForCurrentThread(); | |
| 87 const TaskToken token_b = TaskToken::GetForCurrentThread(); | |
| 88 | |
| 89 EXPECT_TRUE(token_a.IsValid()); | |
| 90 EXPECT_TRUE(token_b.IsValid()); | |
| 91 | |
| 92 EXPECT_EQ(token_a, token_b); | |
| 93 EXPECT_NE(token_a, TaskToken()); | |
| 94 EXPECT_NE(token_b, TaskToken()); | |
|
gab
2016/08/08 16:34:22
rm last two conditions IMO per above comment
fdoray
2016/08/08 17:45:18
Done.
| |
| 95 } | |
| 96 | |
| 97 // Expect TaskTokens returned by TaskToken::GetForCurrentThread() in the scope | |
| 98 // of different ScopedSetSequenceAndTaskTokenForCurrentThread instances to be | |
| 99 // valid but not equal to each other or to an invalid TaskToken. | |
| 100 TEST(TaskTokenTest, NotEqualInDifferentScopes) { | |
| 101 TaskToken token_a; | |
| 102 TaskToken token_b; | |
| 103 | |
| 104 { | |
| 105 ScopedSetSequenceAndTaskTokenForCurrentThread | |
| 106 scoped_set_sequence_and_task_token_for_current_thread( | |
| 107 SequenceToken::Create()); | |
| 108 token_a = TaskToken::GetForCurrentThread(); | |
| 109 } | |
| 110 { | |
| 111 ScopedSetSequenceAndTaskTokenForCurrentThread | |
| 112 scoped_set_sequence_and_task_token_for_current_thread( | |
| 113 SequenceToken::Create()); | |
| 114 token_b = TaskToken::GetForCurrentThread(); | |
| 115 } | |
| 116 | |
| 117 EXPECT_TRUE(token_a.IsValid()); | |
| 118 EXPECT_TRUE(token_b.IsValid()); | |
| 119 | |
| 120 EXPECT_NE(token_a, token_b); | |
| 121 EXPECT_NE(token_a, TaskToken()); | |
| 122 EXPECT_NE(token_b, TaskToken()); | |
|
gab
2016/08/08 16:34:22
ditto
fdoray
2016/08/08 17:45:18
Done.
| |
| 123 } | |
| 124 | |
| 65 } // namespace base | 125 } // namespace base |
| OLD | NEW |