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

Side by Side Diff: content/browser/download/download_query_unittest.cc

Issue 8601012: DownloadQuery filters and sorts DownloadItems. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: DownloadQuery Created 9 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 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 <string>
6
7 #include "base/logging.h"
8 #include "base/stl_util.h"
9 #include "content/browser/download/download_query.h"
10 #include "content/browser/download/mock_download_item.h"
11 #include "testing/gmock/include/gmock/gmock.h"
12 #include "testing/gtest/include/gtest/gtest.h"
13
14 using download_util::DownloadQuery;
15 using ::testing::Return;
16 using ::testing::ReturnRef;
17 typedef DownloadQuery::DownloadVector DownloadVector;
18
19 class DownloadQueryTest : public testing::Test {
20 public:
21 DownloadQueryTest() {}
22 virtual ~DownloadQueryTest() {}
23 virtual void TearDown() {
24 STLDeleteElements(&mocks_);
25 }
26 void CreateMocks(int count) {
27 for (int i = 0; i < count; ++i) {
28 mocks_.push_back(new MockDownloadItem());
29 all_items_.push_back(mocks_[i]);
30 }
31 }
32 MockDownloadItem& mock(int index) { return *mocks_[index]; }
33 DownloadQuery* query() { return &query_; }
34 DownloadVector* all_items() { return &all_items_; }
35 DownloadVector* results() { return &results_; }
36 void Search() {
37 query()->Search(all_items_.begin(), all_items_.end(), &results_);
38 }
39
40 private:
41 std::vector<MockDownloadItem*> mocks_;
42 DownloadQuery query_;
43 DownloadVector all_items_;
44 DownloadVector results_;
45
46 DISALLOW_COPY_AND_ASSIGN(DownloadQueryTest);
47 };
48
49 TEST_F(DownloadQueryTest, EmptyQueryNoItems) {
50 Search();
51 EXPECT_EQ(0U, results()->size());
52 }
53
54 TEST_F(DownloadQueryTest, EmptyQuerySomeItems) {
55 CreateMocks(3);
56 Search();
57 EXPECT_EQ(3U, results()->size());
58 }
59
60 TEST_F(DownloadQueryTest, FilterBytesReceived) {
61 CreateMocks(3);
62 query()->Filter(DownloadQuery::FILTER_FIELD_BYTES_RECEIVED, 2);
63 EXPECT_CALL(mock(0), GetReceivedBytes()).WillOnce(Return(1));
64 EXPECT_CALL(mock(1), GetReceivedBytes()).WillOnce(Return(2));
65 EXPECT_CALL(mock(2), GetReceivedBytes()).WillOnce(Return(2));
66 Search();
67 EXPECT_EQ(2U, results()->size());
68 }
69
70 TEST_F(DownloadQueryTest, FilterRegexes) {
71 CreateMocks(3);
72 query()->Filter(DownloadQuery::FILTER_FIELD_URL_REGEX, std::string("fo{2}"));
73 GURL url0("http://example.com"), url1("http://foo.com"), url2("http://bar.com/ foo/bar");
74 EXPECT_CALL(mock(0), GetOriginalUrl()).WillOnce(ReturnRef(url0));
75 EXPECT_CALL(mock(1), GetOriginalUrl()).WillOnce(ReturnRef(url1));
76 EXPECT_CALL(mock(2), GetOriginalUrl()).WillOnce(ReturnRef(url2));
77 Search();
78 EXPECT_EQ(2U, results()->size());
79 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698