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

Side by Side Diff: components/offline_pages/core/task_unittest.cc

Issue 2359933007: [Offline pages] Introduces TaskQueue to serialize tasks that asynchronously access SQLStore (Closed)
Patch Set: Addressing gn problems, adding missing test file to build Created 4 years, 2 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/offline_pages/core/task.h"
6
7 #include <memory>
8
9 #include "base/bind.h"
10 #include "base/test/test_simple_task_runner.h"
11 #include "base/threading/thread_task_runner_handle.h"
12 #include "components/offline_pages/core/test_task.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14
15 namespace offline_pages {
16
17 using TaskState = TestTask::TaskState;
18
19 class OfflineTaskTest : public testing::Test {
20 public:
21 OfflineTaskTest();
22
23 void TaskCompleted(Task* task);
24 void PumpLoop();
25
26 Task* completed_task() const { return completed_task_; }
27
28 private:
29 Task* completed_task_;
30 scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
31 base::ThreadTaskRunnerHandle task_runner_handle_;
32 };
33
34 OfflineTaskTest::OfflineTaskTest()
35 : completed_task_(nullptr),
36 task_runner_(new base::TestSimpleTaskRunner),
37 task_runner_handle_(task_runner_) {}
38
39 void OfflineTaskTest::PumpLoop() {
40 task_runner_->RunUntilIdle();
41 }
42
43 void OfflineTaskTest::TaskCompleted(Task* task) {
44 completed_task_ = task;
45 }
46
47 TEST_F(OfflineTaskTest, RunTaskStepByStep) {
48 ConsumedResource resource;
49 TestTask task(&resource);
50 task.SetCompletionCallback(
51 base::ThreadTaskRunnerHandle::Get(),
52 base::Bind(&OfflineTaskTest::TaskCompleted, base::Unretained(this)));
53
54 EXPECT_EQ(TaskState::NOT_STARTED, task.state());
55 task.Run();
56 EXPECT_EQ(TaskState::STEP_1, task.state());
57 EXPECT_TRUE(resource.HasNextStep());
58 resource.CompleteStep();
59 EXPECT_EQ(TaskState::STEP_2, task.state());
60 EXPECT_TRUE(resource.HasNextStep());
61 resource.CompleteStep();
62 EXPECT_EQ(TaskState::COMPLETED, task.state());
63 PumpLoop();
64 EXPECT_EQ(completed_task(), &task);
65 }
66
67 TEST_F(OfflineTaskTest, LeaveEearly) {
Pete Williamson 2016/09/29 00:54:44 nit LeaveEearly -> LeaveEarly
fgorski 2016/09/29 17:37:37 Done.
68 ConsumedResource resource;
69 TestTask task(&resource, true);
70 EXPECT_EQ(TaskState::NOT_STARTED, task.state());
71 task.Run();
72 EXPECT_EQ(TaskState::STEP_1, task.state());
73 EXPECT_TRUE(resource.HasNextStep());
74 resource.CompleteStep();
75
76 EXPECT_EQ(TaskState::COMPLETED, task.state());
77 EXPECT_FALSE(resource.HasNextStep());
78 }
79
80 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698