OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "components/dom_distiller/core/dom_distiller_test_util.h" | 5 #include "components/dom_distiller/core/dom_distiller_test_util.h" |
6 | 6 |
7 #include "components/dom_distiller/core/dom_distiller_store.h" | 7 #include "components/dom_distiller/core/dom_distiller_store.h" |
8 #include "components/dom_distiller/core/fake_distiller.h" | 8 #include "components/dom_distiller/core/fake_distiller.h" |
9 | 9 |
| 10 using leveldb_proto::test::FakeDB; |
| 11 |
10 namespace dom_distiller { | 12 namespace dom_distiller { |
11 namespace test { | 13 namespace test { |
12 namespace util { | 14 namespace util { |
13 | 15 |
14 namespace { | 16 namespace { |
15 | 17 |
16 std::vector<ArticleEntry> EntryMapToList(const FakeDB::EntryMap& entries) { | 18 std::vector<ArticleEntry> EntryMapToList( |
| 19 const FakeDB<ArticleEntry>::EntryMap& entries) { |
17 std::vector<ArticleEntry> entry_list; | 20 std::vector<ArticleEntry> entry_list; |
18 for (FakeDB::EntryMap::const_iterator it = entries.begin(); | 21 for (FakeDB<ArticleEntry>::EntryMap::const_iterator it = entries.begin(); |
19 it != entries.end(); | 22 it != entries.end(); ++it) { |
20 ++it) { | |
21 entry_list.push_back(it->second); | 23 entry_list.push_back(it->second); |
22 } | 24 } |
23 return entry_list; | 25 return entry_list; |
24 } | 26 } |
25 } // namespace | 27 } // namespace |
26 | 28 |
27 ObserverUpdatesMatcher::ObserverUpdatesMatcher( | 29 ObserverUpdatesMatcher::ObserverUpdatesMatcher( |
28 const std::vector<DomDistillerObserver::ArticleUpdate>& expected_updates) | 30 const std::vector<DomDistillerObserver::ArticleUpdate>& expected_updates) |
29 : expected_updates_(expected_updates) {} | 31 : expected_updates_(expected_updates) {} |
30 | 32 |
31 bool ObserverUpdatesMatcher::MatchAndExplain( | 33 bool ObserverUpdatesMatcher::MatchAndExplain( |
32 const std::vector<DomDistillerObserver::ArticleUpdate>& actual_updates, | 34 const std::vector<DomDistillerObserver::ArticleUpdate>& actual_updates, |
33 testing::MatchResultListener* listener) const { | 35 testing::MatchResultListener* listener) const { |
34 if (actual_updates.size() != expected_updates_.size()) { | 36 if (actual_updates.size() != expected_updates_.size()) { |
35 *listener << "Incorrect number of updates. Expected: " | 37 *listener << "Incorrect number of updates. Expected: " |
36 << expected_updates_.size() << " got: " << actual_updates.size(); | 38 << expected_updates_.size() << " got: " << actual_updates.size(); |
37 return false; | 39 return false; |
38 } | 40 } |
39 std::vector<DomDistillerObserver::ArticleUpdate>::const_iterator expected, | 41 std::vector<DomDistillerObserver::ArticleUpdate>::const_iterator expected, |
40 actual; | 42 actual; |
41 for (expected = expected_updates_.begin(), actual = actual_updates.begin(); | 43 for (expected = expected_updates_.begin(), actual = actual_updates.begin(); |
42 expected != expected_updates_.end(); | 44 expected != expected_updates_.end(); ++expected, ++actual) { |
43 ++expected, ++actual) { | |
44 if (expected->entry_id != actual->entry_id) { | 45 if (expected->entry_id != actual->entry_id) { |
45 *listener << " Mismatched entry id. Expected: " << expected->entry_id | 46 *listener << " Mismatched entry id. Expected: " << expected->entry_id |
46 << " actual: " << actual->entry_id; | 47 << " actual: " << actual->entry_id; |
47 return false; | 48 return false; |
48 } | 49 } |
49 if (expected->update_type != actual->update_type) { | 50 if (expected->update_type != actual->update_type) { |
50 *listener << " Mismatched update for entryid:" << expected->entry_id | 51 *listener << " Mismatched update for entryid:" << expected->entry_id |
51 << ". Expected: " << expected->update_type | 52 << ". Expected: " << expected->update_type |
52 << " actual: " << actual->update_type; | 53 << " actual: " << actual->update_type; |
53 return false; | 54 return false; |
54 } | 55 } |
55 } | 56 } |
56 return true; | 57 return true; |
57 } | 58 } |
58 | 59 |
59 void ObserverUpdatesMatcher::DescribeUpdates(std::ostream* os) const { | 60 void ObserverUpdatesMatcher::DescribeUpdates(std::ostream* os) const { |
60 bool start = true; | 61 bool start = true; |
61 for (std::vector<DomDistillerObserver::ArticleUpdate>::const_iterator i = | 62 for (std::vector<DomDistillerObserver::ArticleUpdate>::const_iterator i = |
62 expected_updates_.begin(); | 63 expected_updates_.begin(); |
63 i != expected_updates_.end(); | 64 i != expected_updates_.end(); ++i) { |
64 ++i) { | |
65 if (start) { | 65 if (start) { |
66 start = false; | 66 start = false; |
67 } else { | 67 } else { |
68 *os << ", "; | 68 *os << ", "; |
69 } | 69 } |
70 *os << "( EntryId: " << i->entry_id << ", UpdateType: " << i->update_type | 70 *os << "( EntryId: " << i->entry_id << ", UpdateType: " << i->update_type |
71 << " )"; | 71 << " )"; |
72 } | 72 } |
73 } | 73 } |
74 | 74 |
75 void ObserverUpdatesMatcher::DescribeTo(std::ostream* os) const { | 75 void ObserverUpdatesMatcher::DescribeTo(std::ostream* os) const { |
76 *os << " has updates: { "; | 76 *os << " has updates: { "; |
77 DescribeUpdates(os); | 77 DescribeUpdates(os); |
78 *os << "}"; | 78 *os << "}"; |
79 } | 79 } |
80 void ObserverUpdatesMatcher::DescribeNegationTo(std::ostream* os) const { | 80 void ObserverUpdatesMatcher::DescribeNegationTo(std::ostream* os) const { |
81 *os << " does not have updates: { "; | 81 *os << " does not have updates: { "; |
82 DescribeUpdates(os); | 82 DescribeUpdates(os); |
83 *os << "}"; | 83 *os << "}"; |
84 } | 84 } |
85 | 85 |
86 testing::Matcher<const std::vector<DomDistillerObserver::ArticleUpdate>&> | 86 testing::Matcher<const std::vector<DomDistillerObserver::ArticleUpdate>&> |
87 HasExpectedUpdates( | 87 HasExpectedUpdates( |
88 const std::vector<DomDistillerObserver::ArticleUpdate>& expected_updates) { | 88 const std::vector<DomDistillerObserver::ArticleUpdate>& expected_updates) { |
89 return testing::MakeMatcher(new ObserverUpdatesMatcher(expected_updates)); | 89 return testing::MakeMatcher(new ObserverUpdatesMatcher(expected_updates)); |
90 } | 90 } |
91 | 91 |
92 // static | 92 // static |
93 DomDistillerStore* CreateStoreWithFakeDB(FakeDB* fake_db, | 93 DomDistillerStore* CreateStoreWithFakeDB( |
94 const FakeDB::EntryMap& store_model) { | 94 FakeDB<ArticleEntry>* fake_db, |
| 95 const FakeDB<ArticleEntry>::EntryMap& store_model) { |
95 return new DomDistillerStore( | 96 return new DomDistillerStore( |
96 scoped_ptr<DomDistillerDatabaseInterface>(fake_db), | 97 scoped_ptr<leveldb_proto::ProtoDatabase<ArticleEntry> >(fake_db), |
97 EntryMapToList(store_model), | 98 EntryMapToList(store_model), FakeDB<ArticleEntry>::DirectoryForTestDB()); |
98 FakeDB::DirectoryForTestDB()); | |
99 } | 99 } |
100 | 100 |
101 } // namespace util | 101 } // namespace util |
102 } // namespace test | 102 } // namespace test |
103 } // namespace dom_distiller | 103 } // namespace dom_distiller |
OLD | NEW |