OLD | NEW |
---|---|
(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 | |
OLD | NEW |