Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(52)

Side by Side Diff: components/sync/base/scoped_event_signal_unittest.cc

Issue 2782573002: [Sync] Refactor ModelSafeWorker::DoWorkAndWaitUntilDone() to avoid code duplication. (Closed)
Patch Set: self-review Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "components/sync/base/scoped_event_signal.h"
6
7 #include <memory>
8 #include <utility>
9
10 #include "base/synchronization/waitable_event.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace syncer {
14
15 TEST(ScopedEventSignalTest, SignalAtEndOfScope) {
16 base::WaitableEvent event(base::WaitableEvent::ResetPolicy::MANUAL,
17 base::WaitableEvent::InitialState::NOT_SIGNALED);
18
19 {
20 ScopedEventSignal scoped_event_signal(&event);
21 EXPECT_FALSE(event.IsSignaled());
22 }
23
24 EXPECT_TRUE(event.IsSignaled());
25 }
26
27 TEST(ScopedEventSignalTest, MoveConstructor) {
28 base::WaitableEvent event(base::WaitableEvent::ResetPolicy::MANUAL,
29 base::WaitableEvent::InitialState::NOT_SIGNALED);
30
31 {
32 ScopedEventSignal scoped_event_signal(&event);
33 EXPECT_FALSE(event.IsSignaled());
34
35 {
36 ScopedEventSignal other_scoped_event_signal(
37 std::move(scoped_event_signal));
38 EXPECT_FALSE(event.IsSignaled());
39 }
40
41 // |event| is signaled when |other_scoped_event_signal| is destroyed.
42 EXPECT_TRUE(event.IsSignaled());
43
44 event.Reset();
45 }
46
47 // |event| is not signaled when |scoped_signal_event| is destroyed.
48 EXPECT_FALSE(event.IsSignaled());
49 }
50
51 TEST(ScopedEventSignalTest, MoveAssignOperator) {
52 base::WaitableEvent event(base::WaitableEvent::ResetPolicy::MANUAL,
53 base::WaitableEvent::InitialState::NOT_SIGNALED);
54
55 {
56 ScopedEventSignal scoped_event_signal_a(&event);
57 EXPECT_FALSE(event.IsSignaled());
58
59 {
60 base::WaitableEvent other_event(
61 base::WaitableEvent::ResetPolicy::MANUAL,
62 base::WaitableEvent::InitialState::NOT_SIGNALED);
63 ScopedEventSignal scoped_event_signal_b(&other_event);
64
65 // Move |scoped_event_signal_b| to |scoped_event_signal_c| because the
66 // assignment operator cannot be used on a ScopedEventSignal which is
67 // already associated with an event.
68 ScopedEventSignal scoped_event_signal_c(std::move(scoped_event_signal_b));
69
70 scoped_event_signal_b = std::move(scoped_event_signal_a);
71 EXPECT_FALSE(event.IsSignaled());
72 }
73
74 // |event| is signaled when |scoped_event_signal_b| is destroyed.
75 EXPECT_TRUE(event.IsSignaled());
76
77 event.Reset();
78 }
79
80 // |event| is not signaled when |scoped_signal_event_a| is destroyed.
81 EXPECT_FALSE(event.IsSignaled());
82 }
83
84 } // namespace syncer
OLDNEW
« no previous file with comments | « components/sync/base/scoped_event_signal.cc ('k') | components/sync/engine/browser_thread_model_worker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698