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

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

Issue 2396783002: Add LanguageModel, a keyed service that collects language info from CLD. (Closed)
Patch Set: Bernhard's comments 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
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "components/translate/core/browser/language_model.h"
6
7 #include "base/macros.h"
droger 2016/10/05 15:40:00 Not needed?
jkrcal 2016/10/06 08:50:58 Done.
8 #include "components/prefs/testing_pref_service.h"
9 #include "testing/gmock/include/gmock/gmock.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 using testing::ElementsAre;
13 using testing::FloatEq;
14 using testing::Ge;
15
16 namespace {
17
18 const char kLang1[] = "en";
19 const char kLang2[] = "de";
20 const char kLang3[] = "es";
21
22 } // namespace
23
24 namespace translate {
25
26 TEST(LanguageModelTest, ListSorted) {
27 TestingPrefServiceSimple prefs;
28 LanguageModel::RegisterProfilePrefs(prefs.registry());
29 LanguageModel model(&prefs);
30
31 model.OnPageVisited(kLang1);
32 model.OnPageVisited(kLang1);
33 model.OnPageVisited(kLang1);
34 model.OnPageVisited(kLang2);
35
36 EXPECT_THAT(model.GetTopLanguages(),
37 ElementsAre(LanguageModel::LanguageInfo{kLang1},
38 LanguageModel::LanguageInfo{kLang2}));
39 }
40
41 TEST(LanguageModelTest, ListSortedReversed) {
42 TestingPrefServiceSimple prefs;
43 LanguageModel::RegisterProfilePrefs(prefs.registry());
44 LanguageModel model(&prefs);
45
46 model.OnPageVisited(kLang2);
47 model.OnPageVisited(kLang1);
48 model.OnPageVisited(kLang1);
49 model.OnPageVisited(kLang1);
50
51 EXPECT_THAT(model.GetTopLanguages(),
52 ElementsAre(LanguageModel::LanguageInfo{kLang1},
53 LanguageModel::LanguageInfo{kLang2}));
54 }
55
56 TEST(LanguageModelTest, RightFrequencies) {
57 TestingPrefServiceSimple prefs;
58 LanguageModel::RegisterProfilePrefs(prefs.registry());
59 LanguageModel model(&prefs);
60
61 model.OnPageVisited(kLang1);
62 model.OnPageVisited(kLang1);
63 model.OnPageVisited(kLang1);
64 model.OnPageVisited(kLang2);
65
66 // Corresponding frequencies are given by the model.
67 EXPECT_THAT(model.GetLanguageFrequency(kLang1), FloatEq(0.75));
68 EXPECT_THAT(model.GetLanguageFrequency(kLang2), FloatEq(0.25));
69 // An unknown language gets frequency 0.
70 EXPECT_THAT(model.GetLanguageFrequency(kLang3), 0);
71 }
72
73 TEST(LanguageModelTest, RareLanguageDiscarded) {
74 TestingPrefServiceSimple prefs;
75 LanguageModel::RegisterProfilePrefs(prefs.registry());
76 LanguageModel model(&prefs);
77
78 model.OnPageVisited(kLang2);
79
80 for (int i = 0; i < 900; i++)
81 model.OnPageVisited(kLang1);
82
83 // Lang 2 is in the model.
84 EXPECT_THAT(model.GetLanguageFrequency(kLang2), Ge(0.0));
85
86 // Another 100 visits cause the cleanup (total > 1000).
87 for (int i = 0; i < 100; i++)
88 model.OnPageVisited(kLang1);
89 // Lang 2 is removed from the model.
90 EXPECT_THAT(model.GetTopLanguages(),
91 ElementsAre(LanguageModel::LanguageInfo{kLang1, 1}));
92 }
93
94 } // namespace translate
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698