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

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

Powered by Google App Engine
This is Rietveld 408576698