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

Side by Side Diff: chrome/common/instant_restricted_id_cache_unittest.cc

Issue 12498002: InstantExtended: Adding InstantRestrictedIDCache. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 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 | Annotate | Revision Log
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include <string>
6 #include <utility>
7 #include <vector>
8 #include "chrome/common/instant_restricted_id_cache.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 namespace {
12
13 struct TestData {
14 TestData() { }
dhollowa 2013/03/06 02:12:58 nit: {}
Shishir 2013/03/11 21:07:24 Done.
15 explicit TestData(const std::string& i_value) : value(i_value) { }
dhollowa 2013/03/06 02:12:58 nit: {}
Shishir 2013/03/11 21:07:24 Done.
16
17 bool operator==(const TestData& rhs) const {
dhollowa 2013/03/06 02:12:58 Is this a requirement for any T? If so, this shou
Shishir 2013/03/11 21:07:24 Documented.
18 return rhs.value == value;
19 }
20
21 std::string value;
22 };
23
24 } // namespace
25
26 class InstantRestrictedIdCacheTest : public testing::Test {
dhollowa 2013/03/06 02:12:58 I usually just use a typedef in these simple cases
Shishir 2013/03/11 21:07:24 Done.
27 };
28
29 TEST_F(InstantRestrictedIdCacheTest, AddAndFetchTest) {
30 InstantRestrictedIdCache<TestData> cache(7);
31
32 EXPECT_EQ(0u, cache.cache_.size());
33 EXPECT_EQ(0u, cache.results_base_);
34 EXPECT_EQ(0u, cache.last_addition_size_);
35
36 // Check first addition.
37 std::vector<TestData> input1;
38 input1.push_back(TestData("A"));
39 input1.push_back(TestData("B"));
40 input1.push_back(TestData("C"));
41 cache.AddItems(input1);
42 EXPECT_EQ(3u, cache.cache_.size());
43 EXPECT_EQ(0u, cache.results_base_);
44 EXPECT_EQ(3u, cache.last_addition_size_);
45
46 std::vector<std::pair<size_t, TestData> > output;
47 cache.GetCurrentItems(&output);
48 EXPECT_EQ(3u, output.size());
49 for (size_t i = 0; i < 3; ++i) {
50 EXPECT_EQ(i, output[i].first);
51 EXPECT_EQ(input1[i], output[i].second);
52 }
53
54 TestData t;
55 EXPECT_FALSE(cache.GetItemWithRestrictedId(3, &t));
56 EXPECT_TRUE(cache.GetItemWithRestrictedId(2, &t));
57 EXPECT_EQ(input1[2], t);
58
59 // Add more items, no overflow.
60 std::vector<TestData> input2;
61 input2.push_back(TestData("D"));
62 input2.push_back(TestData("E"));
63 cache.AddItems(input2);
64 EXPECT_EQ(5u, cache.cache_.size());
65 EXPECT_EQ(0u, cache.results_base_);
66 EXPECT_EQ(2u, cache.last_addition_size_);
67
68 output.clear();
69 cache.GetCurrentItems(&output);
70 EXPECT_EQ(2u, output.size());
71 for (size_t i = 0; i < 2; ++i) {
72 EXPECT_EQ(i + 3, output[i].first);
73 EXPECT_EQ(input2[i], output[i].second);
74 }
75
76 EXPECT_FALSE(cache.GetItemWithRestrictedId(5, &t));
77 EXPECT_TRUE(cache.GetItemWithRestrictedId(2, &t));
78 EXPECT_EQ(input1[2], t);
79 EXPECT_TRUE(cache.GetItemWithRestrictedId(4, &t));
80 EXPECT_EQ(input2[1], t);
81
82 // Add another set, overflows.
83 std::vector<TestData> input3;
84 input3.push_back(TestData("F"));
85 input3.push_back(TestData("G"));
86 input3.push_back(TestData("H"));
87 input3.push_back(TestData("I"));
88 cache.AddItems(input3);
89 EXPECT_EQ(7u, cache.cache_.size());
90 EXPECT_EQ(2u, cache.results_base_);
91 EXPECT_EQ(4u, cache.last_addition_size_);
92
93 output.clear();
94 cache.GetCurrentItems(&output);
95 EXPECT_EQ(4u, output.size());
96 for (size_t i = 0; i < 2; ++i) {
97 EXPECT_EQ(i + 5, output[i].first);
98 EXPECT_EQ(input3[i], output[i].second);
99 }
100
101 EXPECT_FALSE(cache.GetItemWithRestrictedId(0, &t));
102 EXPECT_FALSE(cache.GetItemWithRestrictedId(1, &t));
103 EXPECT_TRUE(cache.GetItemWithRestrictedId(2, &t));
104 EXPECT_EQ(input1[2], t);
105 EXPECT_TRUE(cache.GetItemWithRestrictedId(4, &t));
106 EXPECT_EQ(input2[1], t);
107 EXPECT_TRUE(cache.GetItemWithRestrictedId(6, &t));
108 EXPECT_EQ(input3[1], t);
109
110 cache.Reset();
111 EXPECT_EQ(0u, cache.cache_.size());
112 EXPECT_EQ(0u, cache.results_base_);
113 EXPECT_EQ(0u, cache.last_addition_size_);
114 }
dhollowa 2013/03/06 02:12:58 nit: extra line
Shishir 2013/03/11 21:07:24 Done.
115 TEST_F(InstantRestrictedIdCacheTest, EdgeCasesTest) {
116 InstantRestrictedIdCache<TestData> cache(2);
117
118 EXPECT_EQ(0u, cache.cache_.size());
119 EXPECT_EQ(0u, cache.results_base_);
120 EXPECT_EQ(0u, cache.last_addition_size_);
121
122 // Add too many.
123 std::vector<TestData> input1;
124 input1.push_back(TestData("A"));
125 input1.push_back(TestData("B"));
126 input1.push_back(TestData("C"));
127 cache.AddItems(input1);
128 EXPECT_EQ(2u, cache.cache_.size());
129 EXPECT_EQ(1u, cache.results_base_);
130 EXPECT_EQ(3u, cache.last_addition_size_);
131
132 std::vector<std::pair<size_t, TestData> > output;
133 cache.GetCurrentItems(&output);
134 EXPECT_EQ(2u, output.size());
135 for (size_t i = 0; i < 2; ++i) {
136 EXPECT_EQ(i + 1, output[i].first);
137 EXPECT_EQ(input1[i + 1], output[i].second);
138 }
139
140 TestData t;
141 EXPECT_FALSE(cache.GetItemWithRestrictedId(0, &t));
142 EXPECT_FALSE(cache.GetItemWithRestrictedId(3, &t));
143 EXPECT_TRUE(cache.GetItemWithRestrictedId(2, &t));
144 EXPECT_EQ(input1[2], t);
145 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698