Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/suggestions/suggestions_store.h" | 5 #include "components/suggestions/suggestions_store.h" |
| 6 | 6 |
| 7 #include "base/time/time.h" | |
| 8 | |
| 7 #include "components/pref_registry/testing_pref_service_syncable.h" | 9 #include "components/pref_registry/testing_pref_service_syncable.h" |
| 8 #include "components/suggestions/proto/suggestions.pb.h" | 10 #include "components/suggestions/proto/suggestions.pb.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 12 |
| 11 using user_prefs::TestingPrefServiceSyncable; | 13 using user_prefs::TestingPrefServiceSyncable; |
| 12 | 14 |
| 13 namespace suggestions { | 15 namespace suggestions { |
| 14 | 16 |
| 15 namespace { | 17 namespace { |
| 16 | 18 |
| 17 const char kTestTitle[] = "Foo site"; | 19 const char kTestTitle[] = "Foo site"; |
| 18 const char kTestUrl[] = "http://foo.com/"; | 20 const char kTestUrl[] = "http://foo.com/"; |
| 19 | 21 |
| 22 const int time_gap = 1000; | |
|
manzagop (departed)
2014/07/31 15:31:52
Put the unit in the name.
gayane -on leave until 09-2017
2014/08/04 13:46:32
Done.
| |
| 23 | |
| 20 SuggestionsProfile CreateTestSuggestions() { | 24 SuggestionsProfile CreateTestSuggestions() { |
| 21 SuggestionsProfile suggestions; | 25 SuggestionsProfile suggestions; |
| 22 ChromeSuggestion* suggestion = suggestions.add_suggestions(); | 26 ChromeSuggestion* suggestion = suggestions.add_suggestions(); |
| 23 suggestion->set_url(kTestUrl); | 27 suggestion->set_url(kTestUrl); |
| 24 suggestion->set_title(kTestTitle); | 28 suggestion->set_title(kTestTitle); |
| 25 return suggestions; | 29 return suggestions; |
| 26 } | 30 } |
| 27 | 31 |
| 32 | |
| 33 SuggestionsProfile CreateTestSuggestions_LoadExpiryTests(int expired, | |
|
manzagop (departed)
2014/07/31 15:31:52
I don't think CreateTestSuggestions_LoadExpiryTest
manzagop (departed)
2014/07/31 15:31:53
expired_count? valid_count?
gayane -on leave until 09-2017
2014/08/04 13:46:31
Done.
gayane -on leave until 09-2017
2014/08/04 13:46:32
Done.
| |
| 34 int valid) { | |
| 35 int64 now = (base::Time::NowFromSystemTime() | |
| 36 -base::Time::UnixEpoch()).ToInternalValue(); | |
|
manzagop (departed)
2014/07/31 15:31:51
Fix indentation.
gayane -on leave until 09-2017
2014/08/04 13:46:31
Done.
| |
| 37 | |
|
manzagop (departed)
2014/07/31 15:31:52
No need for the space.
gayane -on leave until 09-2017
2014/08/04 13:46:32
Done.
| |
| 38 // constant seed for rand() function. | |
|
manzagop (departed)
2014/07/31 15:31:51
Move the comment to the srand line, 2 spaces after
gayane -on leave until 09-2017
2014/08/04 13:46:31
Done.
| |
| 39 srand(7); | |
| 40 | |
| 41 const int rand_limit = 1000000000; | |
| 42 | |
| 43 SuggestionsProfile suggestions; | |
| 44 | |
|
manzagop (departed)
2014/07/31 15:31:51
Too much vertical whitespace.
gayane -on leave until 09-2017
2014/08/04 13:46:31
Done.
| |
| 45 for (int i = 0; i < valid; i++){ | |
| 46 ChromeSuggestion* suggestion = suggestions.add_suggestions(); | |
| 47 suggestion->set_url(kTestUrl); | |
| 48 suggestion->set_title(kTestTitle); | |
|
manzagop (departed)
2014/07/31 15:31:52
These 3 lines are duplicated 3 times. Have a AddSu
gayane -on leave until 09-2017
2014/08/04 13:46:32
Done.
| |
| 49 int r = rand()%rand_limit; | |
|
manzagop (departed)
2014/07/31 15:31:51
r isn't very descriptive. Something like future_of
gayane -on leave until 09-2017
2014/08/04 13:46:31
Done.
| |
| 50 suggestion->set_expiry_ts(now + r + time_gap); | |
|
manzagop (departed)
2014/07/31 15:31:53
I'd move the time gap into the computation of r.
gayane -on leave until 09-2017
2014/08/04 13:46:31
Done.
| |
| 51 | |
| 52 } | |
| 53 | |
|
manzagop (departed)
2014/07/31 15:31:52
No need for this line.
gayane -on leave until 09-2017
2014/08/04 13:46:32
Done.
| |
| 54 for (int i = 0; i < expired; i++){ | |
| 55 ChromeSuggestion* suggestion_expired = suggestions.add_suggestions(); | |
| 56 suggestion_expired->set_url(kTestUrl); | |
| 57 suggestion_expired->set_title(kTestTitle); | |
| 58 int r = rand()%rand_limit; | |
| 59 suggestion_expired->set_expiry_ts(now - r - time_gap); | |
| 60 } | |
| 61 | |
| 62 return suggestions; | |
| 63 } | |
| 64 | |
| 28 void ValidateSuggestions(const SuggestionsProfile& expected, | 65 void ValidateSuggestions(const SuggestionsProfile& expected, |
| 29 const SuggestionsProfile& actual) { | 66 const SuggestionsProfile& actual) { |
| 30 EXPECT_EQ(expected.suggestions_size(), actual.suggestions_size()); | 67 EXPECT_EQ(expected.suggestions_size(), actual.suggestions_size()); |
| 31 for (int i = 0; i < expected.suggestions_size(); ++i) { | 68 for (int i = 0; i < expected.suggestions_size(); ++i) { |
| 32 EXPECT_EQ(expected.suggestions(i).url(), actual.suggestions(i).url()); | 69 EXPECT_EQ(expected.suggestions(i).url(), actual.suggestions(i).url()); |
| 33 EXPECT_EQ(expected.suggestions(i).title(), actual.suggestions(i).title()); | 70 EXPECT_EQ(expected.suggestions(i).title(), actual.suggestions(i).title()); |
| 71 EXPECT_EQ(expected.suggestions(i).expiry_ts(), | |
| 72 actual.suggestions(i).expiry_ts()); | |
| 34 EXPECT_EQ(expected.suggestions(i).favicon_url(), | 73 EXPECT_EQ(expected.suggestions(i).favicon_url(), |
| 35 actual.suggestions(i).favicon_url()); | 74 actual.suggestions(i).favicon_url()); |
| 36 EXPECT_EQ(expected.suggestions(i).thumbnail(), | 75 EXPECT_EQ(expected.suggestions(i).thumbnail(), |
| 37 actual.suggestions(i).thumbnail()); | 76 actual.suggestions(i).thumbnail()); |
| 38 } | 77 } |
| 39 } | 78 } |
| 40 | 79 |
| 41 } // namespace | 80 } // namespace |
| 42 | 81 |
| 82 // tests LoadSuggestions function to filter expired suggestions | |
|
manzagop (departed)
2014/07/31 15:31:52
Capitalize.
gayane -on leave until 09-2017
2014/08/04 13:46:32
Done.
| |
| 83 TEST(SuggestionsStoreTest, LoadOneExpired) { | |
| 84 TestingPrefServiceSyncable prefs; | |
| 85 SuggestionsStore::RegisterProfilePrefs(prefs.registry()); | |
| 86 SuggestionsStore suggestions_store(&prefs); | |
| 87 | |
| 88 SuggestionsProfile suggestions = CreateTestSuggestions_LoadExpiryTests(1, 0); | |
| 89 SuggestionsProfile filtered_suggestions; | |
| 90 | |
| 91 // store and load. Expired suggestion should not be loaded. | |
|
manzagop (departed)
2014/07/31 15:31:52
Capitalize.
gayane -on leave until 09-2017
2014/08/04 13:46:32
Done.
| |
| 92 EXPECT_TRUE(suggestions_store.StoreSuggestions(suggestions)); | |
| 93 EXPECT_FALSE(suggestions_store.LoadSuggestions(&filtered_suggestions)); | |
| 94 EXPECT_EQ(0, filtered_suggestions.suggestions_size()); | |
| 95 | |
| 96 // Clear. | |
| 97 suggestions_store.ClearSuggestions(); | |
|
manzagop (departed)
2014/07/31 15:31:52
Does this do anything? Isn't clean up done from Te
gayane -on leave until 09-2017
2014/08/04 13:46:32
Removed
| |
| 98 } | |
| 99 | |
| 100 // tests LoadSuggestions function to filter expired suggestions | |
| 101 TEST(SuggestionsStoreTest, LoadOneValid) { | |
|
manzagop (departed)
2014/07/31 15:31:52
Hm, this test is identical to the previous up to 3
gayane -on leave until 09-2017
2014/08/04 13:46:32
What is fixture?
| |
| 102 TestingPrefServiceSyncable prefs; | |
| 103 SuggestionsStore::RegisterProfilePrefs(prefs.registry()); | |
| 104 SuggestionsStore suggestions_store(&prefs); | |
| 105 | |
| 106 SuggestionsProfile suggestions = CreateTestSuggestions_LoadExpiryTests(0, 1); | |
| 107 SuggestionsProfile filtered_suggestions; | |
| 108 | |
| 109 // store and load. Suggestion should be loaded. | |
| 110 EXPECT_TRUE(suggestions_store.StoreSuggestions(suggestions)); | |
| 111 EXPECT_TRUE(suggestions_store.LoadSuggestions(&filtered_suggestions)); | |
| 112 EXPECT_EQ(1, filtered_suggestions.suggestions_size()); | |
| 113 | |
| 114 // Clear. | |
| 115 suggestions_store.ClearSuggestions(); | |
| 116 } | |
| 117 | |
| 118 // tests LoadSuggestions function to filter expired suggestions | |
| 119 TEST(SuggestionsStoreTest, LoadMultipleExpired) { | |
|
manzagop (departed)
2014/07/31 15:31:51
What is the value of this test compared to the sin
gayane -on leave until 09-2017
2014/08/04 13:46:31
well I just thought of testing different cases. Un
| |
| 120 TestingPrefServiceSyncable prefs; | |
| 121 SuggestionsStore::RegisterProfilePrefs(prefs.registry()); | |
| 122 SuggestionsStore suggestions_store(&prefs); | |
| 123 | |
| 124 SuggestionsProfile suggestions = CreateTestSuggestions_LoadExpiryTests(5, 0); | |
| 125 SuggestionsProfile filtered_suggestions; | |
| 126 | |
| 127 // store and load. expired suggestions should not be loaded. | |
| 128 EXPECT_TRUE(suggestions_store.StoreSuggestions(suggestions)); | |
| 129 EXPECT_FALSE(suggestions_store.LoadSuggestions(&filtered_suggestions)); | |
| 130 EXPECT_EQ(0, filtered_suggestions.suggestions_size()); | |
| 131 | |
| 132 // Clear. | |
| 133 suggestions_store.ClearSuggestions(); | |
| 134 } | |
| 135 | |
| 136 // tests LoadSuggestions function to filter expired suggestions | |
| 137 TEST(SuggestionsStoreTest, LoadValidAndExpired) { | |
| 138 TestingPrefServiceSyncable prefs; | |
| 139 SuggestionsStore::RegisterProfilePrefs(prefs.registry()); | |
| 140 SuggestionsStore suggestions_store(&prefs); | |
| 141 | |
| 142 SuggestionsProfile suggestions = CreateTestSuggestions_LoadExpiryTests(5, 3); | |
| 143 SuggestionsProfile filtered_suggestions; | |
| 144 | |
| 145 // store and load. expired suggestions should not be loaded. | |
| 146 EXPECT_TRUE(suggestions_store.StoreSuggestions(suggestions)); | |
| 147 EXPECT_TRUE(suggestions_store.LoadSuggestions(&filtered_suggestions)); | |
| 148 EXPECT_EQ(3, filtered_suggestions.suggestions_size()); | |
| 149 | |
| 150 // Clear. | |
| 151 suggestions_store.ClearSuggestions(); | |
| 152 } | |
| 153 | |
| 154 // tests LoadSuggestions function to filter expired suggestions | |
| 155 TEST(SuggestionsStoreTest, LoadValidAndExpiredStore) { | |
|
manzagop (departed)
2014/07/31 15:31:52
Perhaps keep only this test and the AllExpired one
manzagop (departed)
2014/07/31 15:31:52
I don't understand what the test does from the nam
gayane -on leave until 09-2017
2014/08/04 13:46:31
Done.
gayane -on leave until 09-2017
2014/08/04 13:46:32
yeah I changed the name, but I am not happy about
| |
| 156 TestingPrefServiceSyncable prefs; | |
| 157 SuggestionsStore::RegisterProfilePrefs(prefs.registry()); | |
| 158 SuggestionsStore suggestions_store(&prefs); | |
| 159 | |
| 160 SuggestionsProfile suggestions = CreateTestSuggestions_LoadExpiryTests(5, 3); | |
| 161 SuggestionsProfile filtered_suggestions; | |
| 162 | |
| 163 // store and load. expired suggestions should not be loaded. | |
| 164 EXPECT_TRUE(suggestions_store.StoreSuggestions(suggestions)); | |
| 165 EXPECT_TRUE(suggestions_store.LoadSuggestions(&filtered_suggestions)); | |
| 166 EXPECT_EQ(3, filtered_suggestions.suggestions_size()); | |
| 167 | |
| 168 SuggestionsProfile loaded_suggestions; | |
| 169 EXPECT_TRUE(suggestions_store.LoadSuggestions(&loaded_suggestions)); | |
| 170 EXPECT_EQ(3, loaded_suggestions.suggestions_size()); | |
| 171 ValidateSuggestions(filtered_suggestions, loaded_suggestions); | |
| 172 | |
| 173 // Clear. | |
| 174 suggestions_store.ClearSuggestions(); | |
| 175 } | |
| 176 | |
| 43 TEST(SuggestionsStoreTest, LoadStoreClear) { | 177 TEST(SuggestionsStoreTest, LoadStoreClear) { |
| 44 TestingPrefServiceSyncable prefs; | 178 TestingPrefServiceSyncable prefs; |
| 45 SuggestionsStore::RegisterProfilePrefs(prefs.registry()); | 179 SuggestionsStore::RegisterProfilePrefs(prefs.registry()); |
| 46 SuggestionsStore suggestions_store(&prefs); | 180 SuggestionsStore suggestions_store(&prefs); |
| 47 | 181 |
| 48 const SuggestionsProfile suggestions = CreateTestSuggestions(); | 182 const SuggestionsProfile suggestions = CreateTestSuggestions(); |
| 49 const SuggestionsProfile empty_suggestions; | 183 const SuggestionsProfile empty_suggestions; |
| 50 SuggestionsProfile recovered_suggestions; | 184 SuggestionsProfile recovered_suggestions; |
| 51 | 185 |
| 52 // Attempt to load when prefs are empty. | 186 // Attempt to load when prefs are empty. |
| 53 EXPECT_FALSE(suggestions_store.LoadSuggestions(&recovered_suggestions)); | 187 EXPECT_FALSE(suggestions_store.LoadSuggestions(&recovered_suggestions)); |
| 54 ValidateSuggestions(empty_suggestions, recovered_suggestions); | 188 ValidateSuggestions(empty_suggestions, recovered_suggestions); |
| 55 | 189 |
| 56 // Store then reload. | 190 // Store then reload. |
| 57 EXPECT_TRUE(suggestions_store.StoreSuggestions(suggestions)); | 191 EXPECT_TRUE(suggestions_store.StoreSuggestions(suggestions)); |
| 58 EXPECT_TRUE(suggestions_store.LoadSuggestions(&recovered_suggestions)); | 192 EXPECT_TRUE(suggestions_store.LoadSuggestions(&recovered_suggestions)); |
| 59 ValidateSuggestions(suggestions, recovered_suggestions); | 193 ValidateSuggestions(suggestions, recovered_suggestions); |
| 60 | 194 |
| 61 // Clear. | 195 // Clear. |
| 62 suggestions_store.ClearSuggestions(); | 196 suggestions_store.ClearSuggestions(); |
| 63 EXPECT_FALSE(suggestions_store.LoadSuggestions(&recovered_suggestions)); | 197 EXPECT_FALSE(suggestions_store.LoadSuggestions(&recovered_suggestions)); |
| 64 ValidateSuggestions(empty_suggestions, recovered_suggestions); | 198 ValidateSuggestions(empty_suggestions, recovered_suggestions); |
| 65 } | 199 } |
| 66 | 200 |
| 67 } // namespace suggestions | 201 } // namespace suggestions |
| OLD | NEW |