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

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: Fixing incognito 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
(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 "components/prefs/testing_pref_service.h"
8 #include "testing/gmock/include/gmock/gmock.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 using testing::ElementsAre;
12 using testing::FloatEq;
13 using testing::Gt;
14
15 namespace {
16
17 const char kLang1[] = "en";
18 const char kLang2[] = "de";
19 const char kLang3[] = "es";
20
21 } // namespace
22
23 namespace translate {
24
25 TEST(LanguageModelTest, ListSorted) {
26 TestingPrefServiceSimple prefs;
27 LanguageModel::RegisterProfilePrefs(prefs.registry());
28 LanguageModel model(&prefs);
29
30 model.OnPageVisited(kLang1);
31 model.OnPageVisited(kLang1);
32 model.OnPageVisited(kLang1);
33 model.OnPageVisited(kLang2);
34
35 EXPECT_THAT(model.GetTopLanguages(),
36 ElementsAre(LanguageModel::LanguageInfo{kLang1},
37 LanguageModel::LanguageInfo{kLang2}));
38 }
39
40 TEST(LanguageModelTest, ListSortedReversed) {
41 TestingPrefServiceSimple prefs;
42 LanguageModel::RegisterProfilePrefs(prefs.registry());
43 LanguageModel model(&prefs);
44
45 model.OnPageVisited(kLang2);
46 model.OnPageVisited(kLang1);
47 model.OnPageVisited(kLang1);
48 model.OnPageVisited(kLang1);
49
50 EXPECT_THAT(model.GetTopLanguages(),
51 ElementsAre(LanguageModel::LanguageInfo{kLang1},
52 LanguageModel::LanguageInfo{kLang2}));
53 }
54
55 TEST(LanguageModelTest, RightFrequencies) {
56 TestingPrefServiceSimple prefs;
57 LanguageModel::RegisterProfilePrefs(prefs.registry());
58 LanguageModel model(&prefs);
59
60 model.OnPageVisited(kLang1);
61 model.OnPageVisited(kLang1);
62 model.OnPageVisited(kLang1);
63 model.OnPageVisited(kLang2);
64
65 // Corresponding frequencies are given by the model.
66 EXPECT_THAT(model.GetLanguageFrequency(kLang1), FloatEq(0.75f));
67 EXPECT_THAT(model.GetLanguageFrequency(kLang2), FloatEq(0.25f));
68 // An unknown language gets frequency 0.
69 EXPECT_THAT(model.GetLanguageFrequency(kLang3), 0);
70 }
71
72 TEST(LanguageModelTest, RareLanguageDiscarded) {
73 TestingPrefServiceSimple prefs;
74 LanguageModel::RegisterProfilePrefs(prefs.registry());
75 LanguageModel model(&prefs);
76
77 model.OnPageVisited(kLang2);
78
79 for (int i = 0; i < 900; i++)
80 model.OnPageVisited(kLang1);
81
82 // Lang 2 is in the model.
83 EXPECT_THAT(model.GetLanguageFrequency(kLang2), Gt(0.0f));
84
85 // Another 100 visits cause the cleanup (total > 1000).
86 for (int i = 0; i < 100; i++)
87 model.OnPageVisited(kLang1);
88 // Lang 2 is removed from the model.
89 EXPECT_THAT(model.GetTopLanguages(),
90 ElementsAre(LanguageModel::LanguageInfo{kLang1, 1}));
91 }
92
93 } // 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