channel_info_unittest.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
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, Combinations) {
122  ChannelInfo ci;
123
124  ci.set_value(L"2.0-beta-chromeframe");
125  EXPECT_FALSE(ci.IsChrome());
126  ci.set_value(L"2.0-beta-chromeframe-chrome");
127  EXPECT_TRUE(ci.IsChrome());
128}
129
130TEST(ChannelInfoTest, GetStage) {
131  ChannelInfo ci;
132
133  ci.set_value(L"");
134  EXPECT_EQ(L"", ci.GetStage());
135  ci.set_value(L"-stage");
136  EXPECT_EQ(L"", ci.GetStage());
137  ci.set_value(L"-stage:");
138  EXPECT_EQ(L"", ci.GetStage());
139  ci.set_value(L"-stage:spammy");
140  EXPECT_EQ(L"spammy", ci.GetStage());
141
142  ci.set_value(L"-multi");
143  EXPECT_EQ(L"", ci.GetStage());
144  ci.set_value(L"-stage-multi");
145  EXPECT_EQ(L"", ci.GetStage());
146  ci.set_value(L"-stage:-multi");
147  EXPECT_EQ(L"", ci.GetStage());
148  ci.set_value(L"-stage:spammy-multi");
149  EXPECT_EQ(L"spammy", ci.GetStage());
150
151  ci.set_value(L"2.0-beta-multi");
152  EXPECT_EQ(L"", ci.GetStage());
153  ci.set_value(L"2.0-beta-stage-multi");
154  EXPECT_EQ(L"", ci.GetStage());
155  ci.set_value(L"2.0-beta-stage:-multi");
156  EXPECT_EQ(L"", ci.GetStage());
157  ci.set_value(L"2.0-beta-stage:spammy-multi");
158  EXPECT_EQ(L"spammy", ci.GetStage());
159}
160
161TEST(ChannelInfoTest, SetStage) {
162  ChannelInfo ci;
163
164  ci.set_value(L"");
165  EXPECT_FALSE(ci.SetStage(NULL));
166  EXPECT_EQ(L"", ci.value());
167  EXPECT_TRUE(ci.SetStage(L"spammy"));
168  EXPECT_EQ(L"-stage:spammy", ci.value());
169  EXPECT_FALSE(ci.SetStage(L"spammy"));
170  EXPECT_EQ(L"-stage:spammy", ci.value());
171  EXPECT_TRUE(ci.SetStage(NULL));
172  EXPECT_EQ(L"", ci.value());
173  EXPECT_TRUE(ci.SetStage(L"spammy"));
174  EXPECT_TRUE(ci.SetStage(L""));
175  EXPECT_EQ(L"", ci.value());
176
177  ci.set_value(L"-multi");
178  EXPECT_FALSE(ci.SetStage(NULL));
179  EXPECT_EQ(L"-multi", ci.value());
180  EXPECT_TRUE(ci.SetStage(L"spammy"));
181  EXPECT_EQ(L"-stage:spammy-multi", ci.value());
182  EXPECT_FALSE(ci.SetStage(L"spammy"));
183  EXPECT_EQ(L"-stage:spammy-multi", ci.value());
184  EXPECT_TRUE(ci.SetStage(NULL));
185  EXPECT_EQ(L"-multi", ci.value());
186  EXPECT_TRUE(ci.SetStage(L"spammy"));
187  EXPECT_TRUE(ci.SetStage(L""));
188  EXPECT_EQ(L"-multi", ci.value());
189
190  ci.set_value(L"2.0-beta-multi");
191  EXPECT_FALSE(ci.SetStage(NULL));
192  EXPECT_EQ(L"2.0-beta-multi", ci.value());
193  EXPECT_TRUE(ci.SetStage(L"spammy"));
194  EXPECT_EQ(L"2.0-beta-stage:spammy-multi", ci.value());
195  EXPECT_FALSE(ci.SetStage(L"spammy"));
196  EXPECT_EQ(L"2.0-beta-stage:spammy-multi", ci.value());
197  EXPECT_TRUE(ci.SetStage(NULL));
198  EXPECT_EQ(L"2.0-beta-multi", ci.value());
199  EXPECT_TRUE(ci.SetStage(L"spammy"));
200  EXPECT_TRUE(ci.SetStage(L""));
201  EXPECT_EQ(L"2.0-beta-multi", ci.value());
202
203  ci.set_value(L"2.0-beta-stage:-multi");
204  EXPECT_TRUE(ci.SetStage(NULL));
205  EXPECT_EQ(L"2.0-beta-multi", ci.value());
206}
207