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

Side by Side Diff: components/translate/core/browser/language_model_unittest.cc

Issue 2391383005: [LanguageModel] Return top languages only with a reasonable sample set (Closed)
Patch Set: Fix the constructor Created 4 years, 2 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
« no previous file with comments | « components/translate/core/browser/language_model.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "components/translate/core/browser/language_model.h" 5 #include "components/translate/core/browser/language_model.h"
6 6
7 #include "components/prefs/testing_pref_service.h" 7 #include "components/prefs/testing_pref_service.h"
8 #include "testing/gmock/include/gmock/gmock.h" 8 #include "testing/gmock/include/gmock/gmock.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
11 using testing::ElementsAre; 11 using testing::ElementsAre;
12 using testing::FloatEq; 12 using testing::FloatEq;
13 using testing::Gt; 13 using testing::Gt;
14 14
15 namespace { 15 namespace {
16 16
17 const char kLang1[] = "en"; 17 const char kLang1[] = "en";
18 const char kLang2[] = "de"; 18 const char kLang2[] = "de";
19 const char kLang3[] = "es"; 19 const char kLang3[] = "es";
20 20
21 } // namespace 21 } // namespace
22 22
23 namespace translate { 23 namespace translate {
24 24
25 TEST(LanguageModelTest, ListSorted) { 25 TEST(LanguageModelTest, ListSorted) {
26 TestingPrefServiceSimple prefs; 26 TestingPrefServiceSimple prefs;
27 LanguageModel::RegisterProfilePrefs(prefs.registry()); 27 LanguageModel::RegisterProfilePrefs(prefs.registry());
28 LanguageModel model(&prefs); 28 LanguageModel model(&prefs);
29 29
30 model.OnPageVisited(kLang1); 30 for (int i = 0; i < 50; i++) {
31 model.OnPageVisited(kLang1); 31 model.OnPageVisited(kLang1);
32 model.OnPageVisited(kLang1); 32 model.OnPageVisited(kLang1);
33 model.OnPageVisited(kLang2); 33 model.OnPageVisited(kLang1);
34 model.OnPageVisited(kLang2);
35 }
34 36
35 EXPECT_THAT(model.GetTopLanguages(), 37 EXPECT_THAT(model.GetTopLanguages(),
36 ElementsAre(LanguageModel::LanguageInfo{kLang1}, 38 ElementsAre(LanguageModel::LanguageInfo{kLang1},
37 LanguageModel::LanguageInfo{kLang2})); 39 LanguageModel::LanguageInfo{kLang2}));
38 } 40 }
39 41
40 TEST(LanguageModelTest, ListSortedReversed) { 42 TEST(LanguageModelTest, ListSortedReversed) {
41 TestingPrefServiceSimple prefs; 43 TestingPrefServiceSimple prefs;
42 LanguageModel::RegisterProfilePrefs(prefs.registry()); 44 LanguageModel::RegisterProfilePrefs(prefs.registry());
43 LanguageModel model(&prefs); 45 LanguageModel model(&prefs);
44 46
45 model.OnPageVisited(kLang2); 47 for (int i = 0; i < 50; i++) {
46 model.OnPageVisited(kLang1); 48 model.OnPageVisited(kLang2);
47 model.OnPageVisited(kLang1); 49 model.OnPageVisited(kLang1);
48 model.OnPageVisited(kLang1); 50 model.OnPageVisited(kLang1);
51 model.OnPageVisited(kLang1);
52 }
49 53
50 EXPECT_THAT(model.GetTopLanguages(), 54 EXPECT_THAT(model.GetTopLanguages(),
51 ElementsAre(LanguageModel::LanguageInfo{kLang1}, 55 ElementsAre(LanguageModel::LanguageInfo{kLang1},
52 LanguageModel::LanguageInfo{kLang2})); 56 LanguageModel::LanguageInfo{kLang2}));
53 } 57 }
54 58
55 TEST(LanguageModelTest, RightFrequencies) { 59 TEST(LanguageModelTest, RightFrequencies) {
56 TestingPrefServiceSimple prefs; 60 TestingPrefServiceSimple prefs;
57 LanguageModel::RegisterProfilePrefs(prefs.registry()); 61 LanguageModel::RegisterProfilePrefs(prefs.registry());
58 LanguageModel model(&prefs); 62 LanguageModel model(&prefs);
59 63
60 model.OnPageVisited(kLang1); 64 for (int i = 0; i < 50; i++) {
61 model.OnPageVisited(kLang1); 65 model.OnPageVisited(kLang1);
62 model.OnPageVisited(kLang1); 66 model.OnPageVisited(kLang1);
63 model.OnPageVisited(kLang2); 67 model.OnPageVisited(kLang1);
68 model.OnPageVisited(kLang2);
69 }
64 70
65 // Corresponding frequencies are given by the model. 71 // Corresponding frequencies are given by the model.
66 EXPECT_THAT(model.GetLanguageFrequency(kLang1), FloatEq(0.75f)); 72 EXPECT_THAT(model.GetLanguageFrequency(kLang1), FloatEq(0.75f));
67 EXPECT_THAT(model.GetLanguageFrequency(kLang2), FloatEq(0.25f)); 73 EXPECT_THAT(model.GetLanguageFrequency(kLang2), FloatEq(0.25f));
68 // An unknown language gets frequency 0. 74 // An unknown language gets frequency 0.
69 EXPECT_THAT(model.GetLanguageFrequency(kLang3), 0); 75 EXPECT_THAT(model.GetLanguageFrequency(kLang3), 0);
70 } 76 }
71 77
72 TEST(LanguageModelTest, RareLanguageDiscarded) { 78 TEST(LanguageModelTest, RareLanguageDiscarded) {
73 TestingPrefServiceSimple prefs; 79 TestingPrefServiceSimple prefs;
(...skipping 10 matching lines...) Expand all
84 90
85 // Another 100 visits cause the cleanup (total > 1000). 91 // Another 100 visits cause the cleanup (total > 1000).
86 for (int i = 0; i < 100; i++) 92 for (int i = 0; i < 100; i++)
87 model.OnPageVisited(kLang1); 93 model.OnPageVisited(kLang1);
88 // Lang 2 is removed from the model. 94 // Lang 2 is removed from the model.
89 EXPECT_THAT(model.GetTopLanguages(), 95 EXPECT_THAT(model.GetTopLanguages(),
90 ElementsAre(LanguageModel::LanguageInfo{kLang1, 1})); 96 ElementsAre(LanguageModel::LanguageInfo{kLang1, 1}));
91 } 97 }
92 98
93 } // namespace translate 99 } // namespace translate
OLDNEW
« no previous file with comments | « components/translate/core/browser/language_model.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698