channel_info_unittest.cc revision 68043e1e95eeb07d5cae7aca370b26518b0867d6
1// Copyright (c) 2012 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 <utility>
6
7#include "base/basictypes.h"
8#include "chrome/installer/util/channel_info.h"
9#include "chrome/installer/util/util_constants.h"
10#include "testing/gtest/include/gtest/gtest.h"
11
12using installer::ChannelInfo;
13
14namespace {
15
16const std::wstring kChannelStable(installer::kChromeChannelStable);
17const std::wstring kChannelBeta(installer::kChromeChannelBeta);
18const std::wstring kChannelDev(installer::kChromeChannelDev);
19
20}  // namespace
21
22TEST(ChannelInfoTest, Channels) {
23  ChannelInfo ci;
24  std::wstring channel;
25
26  ci.set_value(L"");
27  EXPECT_TRUE(ci.GetChannelName(&channel));
28  EXPECT_EQ(kChannelStable, channel);
29  ci.set_value(L"-full");
30  EXPECT_TRUE(ci.GetChannelName(&channel));
31  EXPECT_EQ(kChannelStable, channel);
32
33  ci.set_value(L"2.0-beta");
34  EXPECT_TRUE(ci.GetChannelName(&channel));
35  EXPECT_EQ(kChannelBeta, channel);
36  ci.set_value(L"2.0-beta-spam");
37  EXPECT_TRUE(ci.GetChannelName(&channel));
38  EXPECT_EQ(kChannelBeta, channel);
39  ci.set_value(L"2.0-spam-beta");
40  EXPECT_TRUE(ci.GetChannelName(&channel));
41  EXPECT_EQ(kChannelBeta, channel);
42
43  ci.set_value(L"2.0-dev");
44  EXPECT_TRUE(ci.GetChannelName(&channel));
45  EXPECT_EQ(kChannelDev, channel);
46  ci.set_value(L"2.0-kinda-dev");
47  EXPECT_TRUE(ci.GetChannelName(&channel));
48  EXPECT_EQ(kChannelDev, channel);
49  ci.set_value(L"2.0-dev-eloper");
50  EXPECT_TRUE(ci.GetChannelName(&channel));
51  EXPECT_EQ(kChannelDev, channel);
52
53  ci.set_value(L"fuzzy");
54  EXPECT_FALSE(ci.GetChannelName(&channel));
55}
56
57TEST(ChannelInfoTest, FullInstall) {
58  ChannelInfo ci;
59
60  ci.set_value(L"");
61  EXPECT_TRUE(ci.SetFullSuffix(true));
62  EXPECT_TRUE(ci.HasFullSuffix());
63  EXPECT_EQ(L"-full", ci.value());
64  EXPECT_FALSE(ci.SetFullSuffix(true));
65  EXPECT_TRUE(ci.HasFullSuffix());
66  EXPECT_EQ(L"-full", ci.value());
67  EXPECT_TRUE(ci.SetFullSuffix(false));
68  EXPECT_FALSE(ci.HasFullSuffix());
69  EXPECT_EQ(L"", ci.value());
70  EXPECT_FALSE(ci.SetFullSuffix(false));
71  EXPECT_FALSE(ci.HasFullSuffix());
72  EXPECT_EQ(L"", ci.value());
73
74  ci.set_value(L"2.0-beta");
75  EXPECT_TRUE(ci.SetFullSuffix(true));
76  EXPECT_TRUE(ci.HasFullSuffix());
77  EXPECT_EQ(L"2.0-beta-full", ci.value());
78  EXPECT_FALSE(ci.SetFullSuffix(true));
79  EXPECT_TRUE(ci.HasFullSuffix());
80  EXPECT_EQ(L"2.0-beta-full", ci.value());
81  EXPECT_TRUE(ci.SetFullSuffix(false));
82  EXPECT_FALSE(ci.HasFullSuffix());
83  EXPECT_EQ(L"2.0-beta", ci.value());
84  EXPECT_FALSE(ci.SetFullSuffix(false));
85  EXPECT_FALSE(ci.HasFullSuffix());
86  EXPECT_EQ(L"2.0-beta", ci.value());
87}
88
89TEST(ChannelInfoTest, MultiInstall) {
90  ChannelInfo ci;
91
92  ci.set_value(L"");
93  EXPECT_TRUE(ci.SetMultiInstall(true));
94  EXPECT_TRUE(ci.IsMultiInstall());
95  EXPECT_EQ(L"-multi", ci.value());
96  EXPECT_FALSE(ci.SetMultiInstall(true));
97  EXPECT_TRUE(ci.IsMultiInstall());
98  EXPECT_EQ(L"-multi", ci.value());
99  EXPECT_TRUE(ci.SetMultiInstall(false));
100  EXPECT_FALSE(ci.IsMultiInstall());
101  EXPECT_EQ(L"", ci.value());
102  EXPECT_FALSE(ci.SetMultiInstall(false));
103  EXPECT_FALSE(ci.IsMultiInstall());
104  EXPECT_EQ(L"", ci.value());
105
106  ci.set_value(L"2.0-beta");
107  EXPECT_TRUE(ci.SetMultiInstall(true));
108  EXPECT_TRUE(ci.IsMultiInstall());
109  EXPECT_EQ(L"2.0-beta-multi", ci.value());
110  EXPECT_FALSE(ci.SetMultiInstall(true));
111  EXPECT_TRUE(ci.IsMultiInstall());
112  EXPECT_EQ(L"2.0-beta-multi", ci.value());
113  EXPECT_TRUE(ci.SetMultiInstall(false));
114  EXPECT_FALSE(ci.IsMultiInstall());
115  EXPECT_EQ(L"2.0-beta", ci.value());
116  EXPECT_FALSE(ci.SetMultiInstall(false));
117  EXPECT_FALSE(ci.IsMultiInstall());
118  EXPECT_EQ(L"2.0-beta", ci.value());
119}
120
121TEST(ChannelInfoTest, Migration) {
122  ChannelInfo ci;
123
124  ci.set_value(L"");
125  EXPECT_TRUE(ci.SetMigratingSuffix(true));
126  EXPECT_TRUE(ci.HasMigratingSuffix());
127  EXPECT_EQ(L"-migrating", ci.value());
128  EXPECT_FALSE(ci.SetMigratingSuffix(true));
129  EXPECT_TRUE(ci.HasMigratingSuffix());
130  EXPECT_EQ(L"-migrating", ci.value());
131  EXPECT_TRUE(ci.SetMigratingSuffix(false));
132  EXPECT_FALSE(ci.HasMigratingSuffix());
133  EXPECT_EQ(L"", ci.value());
134  EXPECT_FALSE(ci.SetMigratingSuffix(false));
135  EXPECT_FALSE(ci.HasMigratingSuffix());
136  EXPECT_EQ(L"", ci.value());
137
138  ci.set_value(L"2.0-beta");
139  EXPECT_TRUE(ci.SetMigratingSuffix(true));
140  EXPECT_TRUE(ci.HasMigratingSuffix());
141  EXPECT_EQ(L"2.0-beta-migrating", ci.value());
142  EXPECT_FALSE(ci.SetMigratingSuffix(true));
143  EXPECT_TRUE(ci.HasMigratingSuffix());
144  EXPECT_EQ(L"2.0-beta-migrating", ci.value());
145  EXPECT_TRUE(ci.SetMigratingSuffix(false));
146  EXPECT_FALSE(ci.HasMigratingSuffix());
147  EXPECT_EQ(L"2.0-beta", ci.value());
148  EXPECT_FALSE(ci.SetMigratingSuffix(false));
149  EXPECT_FALSE(ci.HasMigratingSuffix());
150  EXPECT_EQ(L"2.0-beta", ci.value());
151}
152
153TEST(ChannelInfoTest, Combinations) {
154  ChannelInfo ci;
155
156  ci.set_value(L"2.0-beta-chromeframe");
157  EXPECT_FALSE(ci.IsChrome());
158  ci.set_value(L"2.0-beta-chromeframe-chrome");
159  EXPECT_TRUE(ci.IsChrome());
160}
161
162TEST(ChannelInfoTest, GetStage) {
163  ChannelInfo ci;
164
165  ci.set_value(L"");
166  EXPECT_EQ(L"", ci.GetStage());
167  ci.set_value(L"-stage");
168  EXPECT_EQ(L"", ci.GetStage());
169  ci.set_value(L"-stage:");
170  EXPECT_EQ(L"", ci.GetStage());
171  ci.set_value(L"-stage:spammy");
172  EXPECT_EQ(L"spammy", ci.GetStage());
173
174  ci.set_value(L"-multi");
175  EXPECT_EQ(L"", ci.GetStage());
176  ci.set_value(L"-stage-multi");
177  EXPECT_EQ(L"", ci.GetStage());
178  ci.set_value(L"-stage:-multi");
179  EXPECT_EQ(L"", ci.GetStage());
180  ci.set_value(L"-stage:spammy-multi");
181  EXPECT_EQ(L"spammy", ci.GetStage());
182
183  ci.set_value(L"2.0-beta-multi");
184  EXPECT_EQ(L"", ci.GetStage());
185  ci.set_value(L"2.0-beta-stage-multi");
186  EXPECT_EQ(L"", ci.GetStage());
187  ci.set_value(L"2.0-beta-stage:-multi");
188  EXPECT_EQ(L"", ci.GetStage());
189  ci.set_value(L"2.0-beta-stage:spammy-multi");
190  EXPECT_EQ(L"spammy", ci.GetStage());
191}
192
193TEST(ChannelInfoTest, SetStage) {
194  ChannelInfo ci;
195
196  ci.set_value(L"");
197  EXPECT_FALSE(ci.SetStage(NULL));
198  EXPECT_EQ(L"", ci.value());
199  EXPECT_TRUE(ci.SetStage(L"spammy"));
200  EXPECT_EQ(L"-stage:spammy", ci.value());
201  EXPECT_FALSE(ci.SetStage(L"spammy"));
202  EXPECT_EQ(L"-stage:spammy", ci.value());
203  EXPECT_TRUE(ci.SetStage(NULL));
204  EXPECT_EQ(L"", ci.value());
205  EXPECT_TRUE(ci.SetStage(L"spammy"));
206  EXPECT_TRUE(ci.SetStage(L""));
207  EXPECT_EQ(L"", ci.value());
208
209  ci.set_value(L"-multi");
210  EXPECT_FALSE(ci.SetStage(NULL));
211  EXPECT_EQ(L"-multi", ci.value());
212  EXPECT_TRUE(ci.SetStage(L"spammy"));
213  EXPECT_EQ(L"-stage:spammy-multi", ci.value());
214  EXPECT_FALSE(ci.SetStage(L"spammy"));
215  EXPECT_EQ(L"-stage:spammy-multi", ci.value());
216  EXPECT_TRUE(ci.SetStage(NULL));
217  EXPECT_EQ(L"-multi", ci.value());
218  EXPECT_TRUE(ci.SetStage(L"spammy"));
219  EXPECT_TRUE(ci.SetStage(L""));
220  EXPECT_EQ(L"-multi", ci.value());
221
222  ci.set_value(L"2.0-beta-multi");
223  EXPECT_FALSE(ci.SetStage(NULL));
224  EXPECT_EQ(L"2.0-beta-multi", ci.value());
225  EXPECT_TRUE(ci.SetStage(L"spammy"));
226  EXPECT_EQ(L"2.0-beta-stage:spammy-multi", ci.value());
227  EXPECT_FALSE(ci.SetStage(L"spammy"));
228  EXPECT_EQ(L"2.0-beta-stage:spammy-multi", ci.value());
229  EXPECT_TRUE(ci.SetStage(NULL));
230  EXPECT_EQ(L"2.0-beta-multi", ci.value());
231  EXPECT_TRUE(ci.SetStage(L"spammy"));
232  EXPECT_TRUE(ci.SetStage(L""));
233  EXPECT_EQ(L"2.0-beta-multi", ci.value());
234
235  ci.set_value(L"2.0-beta-stage:-multi");
236  EXPECT_TRUE(ci.SetStage(NULL));
237  EXPECT_EQ(L"2.0-beta-multi", ci.value());
238}
239
240TEST(ChannelInfoTest, RemoveAllModifiersAndSuffixes) {
241  ChannelInfo ci;
242
243  ci.set_value(L"");
244  EXPECT_FALSE(ci.RemoveAllModifiersAndSuffixes());
245  EXPECT_EQ(L"", ci.value());
246
247  ci.set_value(L"2.0-dev-multi-chrome-chromeframe-migrating");
248  EXPECT_TRUE(ci.RemoveAllModifiersAndSuffixes());
249  EXPECT_EQ(L"2.0-dev", ci.value());
250}
251