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

Side by Side Diff: ios/chrome/browser/reading_list/reading_list_model_unittest.cc

Issue 2451843002: Add Store+Sync to reading list. (Closed)
Patch Set: jif' feedback + reading_list_store_unittests Created 4 years, 1 month 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
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/bind.h" 5 #include "base/bind.h"
6 #include "base/memory/ptr_util.h"
6 #include "ios/chrome/browser/reading_list/reading_list_model_impl.h" 7 #include "ios/chrome/browser/reading_list/reading_list_model_impl.h"
8 #include "ios/chrome/browser/reading_list/reading_list_model_storage.h"
7 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
8 10
9 namespace { 11 namespace {
10 12
11 const GURL callback_url("http://example.com"); 13 const GURL callback_url("http://example.com");
12 const std::string callback_title("test title"); 14 const std::string callback_title("test title");
13 15
16 class TestReadingListStorageObserver {
17 public:
18 virtual void ReadingListDidSaveEntry() = 0;
19 virtual void ReadingListDidRemoveEntry() = 0;
20 virtual void ReadingListDidSaveEntryFromSync() = 0;
21 virtual void ReadingListDidRemoveEntryFromSync() = 0;
22 };
23
24 class TestReadingListStorage : public ReadingListModelStorage {
25 public:
26 TestReadingListStorage(TestReadingListStorageObserver* observer)
27 : read_(new std::vector<ReadingListEntry>()),
28 unread_(new std::vector<ReadingListEntry>()),
29 observer_(observer) {}
30
31 void AddSampleEntries() {
32 ReadingListEntry read_a(GURL("http://read_a.com"), "read_a");
33 ReadingListEntry read_b(GURL("http://read_b.com"), "read_b");
34 ReadingListEntry read_c(GURL("http://read_c.com"), "read_c");
35 read_->push_back(std::move(read_c));
36 read_->push_back(std::move(read_a));
37 read_->push_back(std::move(read_b));
38 ReadingListEntry unread_a(GURL("http://unread_a.com"), "unread_a");
39 ReadingListEntry unread_b(GURL("http://unread_b.com"), "unread_b");
40 ReadingListEntry unread_c(GURL("http://unread_c.com"), "unread_c");
41 ReadingListEntry unread_d(GURL("http://unread_d.com"), "unread_d");
42 unread_->push_back(std::move(unread_a));
43 unread_->push_back(std::move(unread_d));
44 unread_->push_back(std::move(unread_c));
45 unread_->push_back(std::move(unread_b));
46 }
47
48 void SetReadingListModel(ReadingListModel* model,
49 ReadingListStoreDelegate* delegate_) override {
50 delegate_->StoreLoaded(std::move(unread_), std::move(read_));
51 }
52
53 syncer::ModelTypeService* GetModelTypeService() override { return nullptr; }
54
55 void BeginTransaction() override {}
56
57 void CommitTransaction() override {}
58
59 // Saves or updates an entry. If the entry is not yet in the database, it is
60 // created.
61 void SaveEntry(const ReadingListEntry& entry,
62 bool read,
63 bool from_sync) override {
64 if (from_sync) {
65 observer_->ReadingListDidSaveEntryFromSync();
66 } else {
67 observer_->ReadingListDidSaveEntry();
68 }
69 }
70
71 // Removed an entry from the storage.
72 void RemoveEntry(const ReadingListEntry& entry, bool from_sync) override {
73 if (from_sync) {
74 observer_->ReadingListDidRemoveEntryFromSync();
75 } else {
76 observer_->ReadingListDidRemoveEntry();
77 }
78 }
79
80 private:
81 std::unique_ptr<std::vector<ReadingListEntry>> read_;
82 std::unique_ptr<std::vector<ReadingListEntry>> unread_;
83 TestReadingListStorageObserver* observer_;
84 };
85
14 class ReadingListModelTest : public ReadingListModelObserver, 86 class ReadingListModelTest : public ReadingListModelObserver,
87 public TestReadingListStorageObserver,
15 public testing::Test { 88 public testing::Test {
16 public: 89 public:
17 ReadingListModelTest() 90 ReadingListModelTest()
18 : callback_called_(false), model_(new ReadingListModelImpl()) { 91 : callback_called_(false), model_(new ReadingListModelImpl()) {
19 ClearCounts(); 92 ClearCounts();
20 model_->AddObserver(this); 93 model_->AddObserver(this);
21 } 94 }
22 ~ReadingListModelTest() override {} 95 ~ReadingListModelTest() override {}
23 96
97 void SetStorage(std::unique_ptr<TestReadingListStorage> storage) {
98 model_ =
99 base::MakeUnique<ReadingListModelImpl>(std::move(storage), nullptr);
100 ClearCounts();
101 model_->AddObserver(this);
102 }
103
24 void ClearCounts() { 104 void ClearCounts() {
25 observer_loaded_ = observer_started_batch_update_ = 105 observer_loaded_ = observer_started_batch_update_ =
26 observer_completed_batch_update_ = observer_deleted_ = 106 observer_completed_batch_update_ = observer_deleted_ =
27 observer_remove_unread_ = observer_remove_read_ = observer_move_ = 107 observer_remove_unread_ = observer_remove_read_ = observer_move_ =
28 observer_add_unread_ = observer_add_read_ = 108 observer_add_unread_ = observer_add_read_ =
29 observer_update_unread_ = observer_update_read_ = 109 observer_update_unread_ = observer_update_read_ =
30 observer_did_apply_ = 0; 110 observer_did_apply_ = storage_saved_ =
111 storage_removed_ = storage_saved_from_sync_ =
112 storage_removed_from_sync_ = 0;
31 } 113 }
32 114
33 void AssertObserverCount(int observer_loaded, 115 void AssertObserverCount(int observer_loaded,
34 int observer_started_batch_update, 116 int observer_started_batch_update,
35 int observer_completed_batch_update, 117 int observer_completed_batch_update,
36 int observer_deleted, 118 int observer_deleted,
37 int observer_remove_unread, 119 int observer_remove_unread,
38 int observer_remove_read, 120 int observer_remove_read,
39 int observer_move, 121 int observer_move,
40 int observer_add_unread, 122 int observer_add_unread,
41 int observer_add_read, 123 int observer_add_read,
42 int observer_update_unread, 124 int observer_update_unread,
43 int observer_update_read, 125 int observer_update_read,
44 int observer_did_apply) { 126 int observer_did_apply) {
45 ASSERT_EQ(observer_loaded, observer_loaded_); 127 ASSERT_EQ(observer_loaded, observer_loaded_);
46 ASSERT_EQ(observer_started_batch_update, observer_started_batch_update_); 128 ASSERT_EQ(observer_started_batch_update, observer_started_batch_update_);
47 ASSERT_EQ(observer_completed_batch_update, 129 ASSERT_EQ(observer_completed_batch_update,
48 observer_completed_batch_update_); 130 observer_completed_batch_update_);
49 ASSERT_EQ(observer_deleted, observer_deleted_); 131 ASSERT_EQ(observer_deleted, observer_deleted_);
50 ASSERT_EQ(observer_remove_unread, observer_remove_unread_); 132 ASSERT_EQ(observer_remove_unread, observer_remove_unread_);
51 ASSERT_EQ(observer_remove_read, observer_remove_read_); 133 ASSERT_EQ(observer_remove_read, observer_remove_read_);
52 ASSERT_EQ(observer_move, observer_move_); 134 ASSERT_EQ(observer_move, observer_move_);
53 ASSERT_EQ(observer_add_unread, observer_add_unread_); 135 ASSERT_EQ(observer_add_unread, observer_add_unread_);
54 ASSERT_EQ(observer_add_read, observer_add_read_); 136 ASSERT_EQ(observer_add_read, observer_add_read_);
55 ASSERT_EQ(observer_update_unread, observer_update_unread_); 137 ASSERT_EQ(observer_update_unread, observer_update_unread_);
56 ASSERT_EQ(observer_update_read, observer_update_read_); 138 ASSERT_EQ(observer_update_read, observer_update_read_);
57 ASSERT_EQ(observer_did_apply, observer_did_apply_); 139 ASSERT_EQ(observer_did_apply, observer_did_apply_);
58 } 140 }
59 141
142 void AssertStorageCount(int storage_saved,
143 int storage_removed,
144 int storage_saved_from_sync,
145 int storage_removed_from_sync) {
146 ASSERT_EQ(storage_saved, storage_saved_);
147 ASSERT_EQ(storage_removed, storage_removed_);
148 ASSERT_EQ(storage_saved_from_sync, storage_saved_from_sync_);
149 ASSERT_EQ(storage_removed_from_sync, storage_removed_from_sync_);
150 }
151
60 // ReadingListModelObserver 152 // ReadingListModelObserver
61 void ReadingListModelLoaded(const ReadingListModel* model) override { 153 void ReadingListModelLoaded(const ReadingListModel* model) override {
62 observer_loaded_ += 1; 154 observer_loaded_ += 1;
63 } 155 }
64 void ReadingListModelBeganBatchUpdates( 156 void ReadingListModelBeganBatchUpdates(
65 const ReadingListModel* model) override { 157 const ReadingListModel* model) override {
66 observer_started_batch_update_ += 1; 158 observer_started_batch_update_ += 1;
67 } 159 }
68 void ReadingListModelCompletedBatchUpdates( 160 void ReadingListModelCompletedBatchUpdates(
69 const ReadingListModel* model) override { 161 const ReadingListModel* model) override {
70 observer_completed_batch_update_ += 1; 162 observer_completed_batch_update_ += 1;
71 } 163 }
72 void ReadingListModelBeingDeleted(const ReadingListModel* model) override { 164 void ReadingListModelBeingDeleted(const ReadingListModel* model) override {
73 observer_deleted_ += 1; 165 observer_deleted_ += 1;
74 } 166 }
75 void ReadingListWillRemoveUnreadEntry(const ReadingListModel* model, 167 void ReadingListWillRemoveUnreadEntry(const ReadingListModel* model,
76 size_t index) override { 168 size_t index) override {
77 observer_remove_unread_ += 1; 169 observer_remove_unread_ += 1;
78 } 170 }
79 void ReadingListWillMoveEntry(const ReadingListModel* model, 171 void ReadingListWillMoveEntry(const ReadingListModel* model,
80 size_t index) override { 172 size_t index,
173 bool read) override {
81 observer_move_ += 1; 174 observer_move_ += 1;
82 } 175 }
83 void ReadingListWillRemoveReadEntry(const ReadingListModel* model, 176 void ReadingListWillRemoveReadEntry(const ReadingListModel* model,
84 size_t index) override { 177 size_t index) override {
85 observer_remove_read_ += 1; 178 observer_remove_read_ += 1;
86 } 179 }
87 void ReadingListWillAddUnreadEntry(const ReadingListModel* model, 180 void ReadingListWillAddUnreadEntry(const ReadingListModel* model,
88 const ReadingListEntry& entry) override { 181 const ReadingListEntry& entry) override {
89 observer_add_unread_ += 1; 182 observer_add_unread_ += 1;
90 } 183 }
91 void ReadingListWillAddReadEntry(const ReadingListModel* model, 184 void ReadingListWillAddReadEntry(const ReadingListModel* model,
92 const ReadingListEntry& entry) override { 185 const ReadingListEntry& entry) override {
93 observer_add_read_ += 1; 186 observer_add_read_ += 1;
94 } 187 }
95 void ReadingListWillUpdateUnreadEntry(const ReadingListModel* model, 188 void ReadingListWillUpdateUnreadEntry(const ReadingListModel* model,
96 size_t index) override { 189 size_t index) override {
97 observer_update_unread_ += 1; 190 observer_update_unread_ += 1;
98 } 191 }
99 void ReadingListWillUpdateReadEntry(const ReadingListModel* model, 192 void ReadingListWillUpdateReadEntry(const ReadingListModel* model,
100 size_t index) override { 193 size_t index) override {
101 observer_update_read_ += 1; 194 observer_update_read_ += 1;
102 } 195 }
103 void ReadingListDidApplyChanges(ReadingListModel* model) override { 196 void ReadingListDidApplyChanges(ReadingListModel* model) override {
104 observer_did_apply_ += 1; 197 observer_did_apply_ += 1;
105 } 198 }
199
200 void ReadingListDidSaveEntry() override { storage_saved_ += 1; }
201 void ReadingListDidRemoveEntry() override { storage_removed_ += 1; }
202 void ReadingListDidSaveEntryFromSync() override {
203 storage_saved_from_sync_ += 1;
204 }
205 void ReadingListDidRemoveEntryFromSync() override {
206 storage_removed_from_sync_ += 1;
207 }
208
106 void Callback(const ReadingListEntry& entry) { 209 void Callback(const ReadingListEntry& entry) {
107 EXPECT_EQ(callback_url, entry.URL()); 210 EXPECT_EQ(callback_url, entry.URL());
108 EXPECT_EQ(callback_title, entry.Title()); 211 EXPECT_EQ(callback_title, entry.Title());
109 callback_called_ = true; 212 callback_called_ = true;
110 } 213 }
111 214
112 bool CallbackCalled() { return callback_called_; } 215 bool CallbackCalled() { return callback_called_; }
113 216
114 protected: 217 protected:
115 int observer_loaded_; 218 int observer_loaded_;
116 int observer_started_batch_update_; 219 int observer_started_batch_update_;
117 int observer_completed_batch_update_; 220 int observer_completed_batch_update_;
118 int observer_deleted_; 221 int observer_deleted_;
119 int observer_remove_unread_; 222 int observer_remove_unread_;
120 int observer_remove_read_; 223 int observer_remove_read_;
121 int observer_move_; 224 int observer_move_;
122 int observer_add_unread_; 225 int observer_add_unread_;
123 int observer_add_read_; 226 int observer_add_read_;
124 int observer_update_unread_; 227 int observer_update_unread_;
125 int observer_update_read_; 228 int observer_update_read_;
126 int observer_did_apply_; 229 int observer_did_apply_;
230 int storage_saved_;
231 int storage_removed_;
232 int storage_saved_from_sync_;
233 int storage_removed_from_sync_;
127 bool callback_called_; 234 bool callback_called_;
128 235
129 std::unique_ptr<ReadingListModelImpl> model_; 236 std::unique_ptr<ReadingListModelImpl> model_;
130 }; 237 };
131 238
132 TEST_F(ReadingListModelTest, EmptyLoaded) { 239 TEST_F(ReadingListModelTest, EmptyLoaded) {
133 EXPECT_TRUE(model_->loaded()); 240 EXPECT_TRUE(model_->loaded());
134 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); 241 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
135 EXPECT_EQ(0ul, model_->unread_size()); 242 EXPECT_EQ(0ul, model_->unread_size());
136 EXPECT_EQ(0ul, model_->read_size()); 243 EXPECT_EQ(0ul, model_->read_size());
137 model_->Shutdown(); 244 model_->Shutdown();
138 EXPECT_FALSE(model_->loaded()); 245 EXPECT_FALSE(model_->loaded());
139 AssertObserverCount(1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0); 246 AssertObserverCount(1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
140 } 247 }
141 248
249 TEST_F(ReadingListModelTest, ModelLoaded) {
250 ClearCounts();
251 auto storage = base::MakeUnique<TestReadingListStorage>(this);
252 storage->AddSampleEntries();
253 SetStorage(std::move(storage));
254
255 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
256 EXPECT_EQ(model_->read_size(), 3u);
257 EXPECT_EQ(model_->GetReadEntryAtIndex(0).Title(), "read_c");
258 EXPECT_EQ(model_->GetReadEntryAtIndex(1).Title(), "read_b");
259 EXPECT_EQ(model_->GetReadEntryAtIndex(2).Title(), "read_a");
260
261 EXPECT_EQ(model_->unread_size(), 4u);
262 EXPECT_EQ(model_->GetUnreadEntryAtIndex(0).Title(), "unread_d");
263 EXPECT_EQ(model_->GetUnreadEntryAtIndex(1).Title(), "unread_c");
264 EXPECT_EQ(model_->GetUnreadEntryAtIndex(2).Title(), "unread_b");
265 EXPECT_EQ(model_->GetUnreadEntryAtIndex(3).Title(), "unread_a");
266 }
267
142 TEST_F(ReadingListModelTest, AddEntry) { 268 TEST_F(ReadingListModelTest, AddEntry) {
269 auto storage = base::MakeUnique<TestReadingListStorage>(this);
270 SetStorage(std::move(storage));
143 ClearCounts(); 271 ClearCounts();
272
144 const ReadingListEntry& entry = 273 const ReadingListEntry& entry =
145 model_->AddEntry(GURL("http://example.com"), "sample"); 274 model_->AddEntry(GURL("http://example.com"), "sample");
146 EXPECT_EQ(GURL("http://example.com"), entry.URL()); 275 EXPECT_EQ(GURL("http://example.com"), entry.URL());
147 EXPECT_EQ("sample", entry.Title()); 276 EXPECT_EQ("sample", entry.Title());
148 277
149 AssertObserverCount(0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1); 278 AssertObserverCount(0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1);
279 AssertStorageCount(1, 0, 0, 0);
150 EXPECT_EQ(1ul, model_->unread_size()); 280 EXPECT_EQ(1ul, model_->unread_size());
151 EXPECT_EQ(0ul, model_->read_size()); 281 EXPECT_EQ(0ul, model_->read_size());
152 EXPECT_TRUE(model_->HasUnseenEntries()); 282 EXPECT_TRUE(model_->HasUnseenEntries());
153 283
154 const ReadingListEntry& other_entry = model_->GetUnreadEntryAtIndex(0); 284 const ReadingListEntry& other_entry = model_->GetUnreadEntryAtIndex(0);
155 EXPECT_EQ(GURL("http://example.com"), other_entry.URL()); 285 EXPECT_EQ(GURL("http://example.com"), other_entry.URL());
156 EXPECT_EQ("sample", other_entry.Title()); 286 EXPECT_EQ("sample", other_entry.Title());
157 } 287 }
158 288
289 TEST_F(ReadingListModelTest, SyncAddEntry) {
290 auto storage = base::MakeUnique<TestReadingListStorage>(this);
291 SetStorage(std::move(storage));
292 auto entry =
293 base::MakeUnique<ReadingListEntry>(GURL("http://example.com"), "sample");
294 ClearCounts();
295 model_->AddEntry(GURL("http://example.com"), "sample");
296 model_->MarkReadByURL(GURL("http://example.com"));
297
298 AssertObserverCount(0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 2);
299 AssertStorageCount(2, 0, 0, 0);
300 ASSERT_EQ(model_->unread_size(), 0u);
301 ASSERT_EQ(model_->read_size(), 1u);
302 ClearCounts();
303
304 // This entry is older, it should not replace the old one.
305 model_->SyncAddEntry(std::move(entry), false);
306 AssertObserverCount(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
307 AssertStorageCount(0, 0, 0, 0);
308 ASSERT_EQ(model_->unread_size(), 0u);
309 ASSERT_EQ(model_->read_size(), 1u);
310 ClearCounts();
311
312 entry =
313 base::MakeUnique<ReadingListEntry>(GURL("http://example.com"), "sample");
314 // This entry is newer, it should replace the old one and mark it unread.
315 model_->SyncAddEntry(std::move(entry), false);
316 AssertObserverCount(0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
317 AssertStorageCount(0, 0, 1, 0);
318 ASSERT_EQ(model_->unread_size(), 1u);
319 ASSERT_EQ(model_->read_size(), 0u);
320 ClearCounts();
321
322 entry =
323 base::MakeUnique<ReadingListEntry>(GURL("http://example.com"), "sample");
324 // This entry is newer, it should replace the old one and mark it read.
325 model_->SyncAddEntry(std::move(entry), true);
326 AssertObserverCount(0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
327 AssertStorageCount(0, 0, 1, 0);
328 ASSERT_EQ(model_->unread_size(), 0u);
329 ASSERT_EQ(model_->read_size(), 1u);
330 }
331
332 TEST_F(ReadingListModelTest, RemoveEntryByUrl) {
333 auto storage = base::MakeUnique<TestReadingListStorage>(this);
334 SetStorage(std::move(storage));
335 model_->AddEntry(GURL("http://example.com"), "sample");
336 ClearCounts();
337 EXPECT_NE(model_->GetEntryFromURL(GURL("http://example.com")), nullptr);
338 EXPECT_EQ(model_->unread_size(), 1u);
339 model_->RemoveEntryByURL(GURL("http://example.com"));
340 AssertObserverCount(0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1);
341 AssertStorageCount(0, 1, 0, 0);
342 EXPECT_EQ(model_->unread_size(), 0u);
343 EXPECT_EQ(model_->GetEntryFromURL(GURL("http://example.com")), nullptr);
344
345 model_->AddEntry(GURL("http://example.com"), "sample");
346 model_->MarkReadByURL(GURL("http://example.com"));
347 ClearCounts();
348 EXPECT_NE(model_->GetEntryFromURL(GURL("http://example.com")), nullptr);
349 EXPECT_EQ(model_->read_size(), 1u);
350 model_->RemoveEntryByURL(GURL("http://example.com"));
351 AssertObserverCount(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1);
352 AssertStorageCount(0, 1, 0, 0);
353 EXPECT_EQ(model_->read_size(), 0u);
354 EXPECT_EQ(model_->GetEntryFromURL(GURL("http://example.com")), nullptr);
355 }
356
357 TEST_F(ReadingListModelTest, RemoveSyncEntryByUrl) {
358 auto storage = base::MakeUnique<TestReadingListStorage>(this);
359 SetStorage(std::move(storage));
360 model_->AddEntry(GURL("http://example.com"), "sample");
361 ClearCounts();
362 EXPECT_NE(model_->GetEntryFromURL(GURL("http://example.com")), nullptr);
363 EXPECT_EQ(model_->unread_size(), 1u);
364 model_->SyncRemoveEntry(GURL("http://example.com"));
365 AssertObserverCount(0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1);
366 AssertStorageCount(0, 0, 0, 1);
367 EXPECT_EQ(model_->unread_size(), 0u);
368 EXPECT_EQ(model_->GetEntryFromURL(GURL("http://example.com")), nullptr);
369
370 model_->AddEntry(GURL("http://example.com"), "sample");
371 model_->MarkReadByURL(GURL("http://example.com"));
372 ClearCounts();
373 EXPECT_NE(model_->GetEntryFromURL(GURL("http://example.com")), nullptr);
374 EXPECT_EQ(model_->read_size(), 1u);
375 model_->SyncRemoveEntry(GURL("http://example.com"));
376 AssertObserverCount(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1);
377 AssertStorageCount(0, 0, 0, 1);
378 EXPECT_EQ(model_->read_size(), 0u);
379 EXPECT_EQ(model_->GetEntryFromURL(GURL("http://example.com")), nullptr);
380 }
381
159 TEST_F(ReadingListModelTest, ReadEntry) { 382 TEST_F(ReadingListModelTest, ReadEntry) {
160 model_->AddEntry(GURL("http://example.com"), "sample"); 383 model_->AddEntry(GURL("http://example.com"), "sample");
161 384
162 ClearCounts(); 385 ClearCounts();
163 model_->MarkReadByURL(GURL("http://example.com")); 386 model_->MarkReadByURL(GURL("http://example.com"));
164 AssertObserverCount(0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); 387 AssertObserverCount(0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
165 EXPECT_EQ(0ul, model_->unread_size()); 388 EXPECT_EQ(0ul, model_->unread_size());
166 EXPECT_EQ(1ul, model_->read_size()); 389 EXPECT_EQ(1ul, model_->read_size());
167 EXPECT_FALSE(model_->HasUnseenEntries()); 390 EXPECT_FALSE(model_->HasUnseenEntries());
168 391
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 } 598 }
376 599
377 // Tests that ReadingListModel calls CallbackModelBeingDeleted when destroyed. 600 // Tests that ReadingListModel calls CallbackModelBeingDeleted when destroyed.
378 TEST_F(ReadingListModelTest, CallbackModelBeingDeleted) { 601 TEST_F(ReadingListModelTest, CallbackModelBeingDeleted) {
379 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); 602 AssertObserverCount(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
380 model_.reset(); 603 model_.reset();
381 AssertObserverCount(1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0); 604 AssertObserverCount(1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
382 } 605 }
383 606
384 } // namespace 607 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698