15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <utility>
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/channel_info.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/installer/util/util_constants.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using installer::ChannelInfo;
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const std::wstring kChannelStable(installer::kChromeChannelStable);
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const std::wstring kChannelBeta(installer::kChromeChannelBeta);
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const std::wstring kChannelDev(installer::kChromeChannelDev);
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(ChannelInfoTest, Channels) {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ChannelInfo ci;
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::wstring channel;
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"");
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.GetChannelName(&channel));
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(kChannelStable, channel);
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"-full");
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.GetChannelName(&channel));
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(kChannelStable, channel);
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"2.0-beta");
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.GetChannelName(&channel));
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(kChannelBeta, channel);
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"2.0-beta-spam");
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.GetChannelName(&channel));
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(kChannelBeta, channel);
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"2.0-spam-beta");
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.GetChannelName(&channel));
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(kChannelBeta, channel);
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"2.0-dev");
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.GetChannelName(&channel));
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(kChannelDev, channel);
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"2.0-kinda-dev");
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.GetChannelName(&channel));
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(kChannelDev, channel);
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"2.0-dev-eloper");
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.GetChannelName(&channel));
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(kChannelDev, channel);
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ci.set_value(L"x64-dev");
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_TRUE(ci.GetChannelName(&channel));
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(kChannelDev, channel);
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ci.set_value(L"x64-beta");
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_TRUE(ci.GetChannelName(&channel));
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(kChannelBeta, channel);
591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ci.set_value(L"x64-stable");
601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_TRUE(ci.GetChannelName(&channel));
611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  EXPECT_EQ(kChannelStable, channel);
621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"fuzzy");
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.GetChannelName(&channel));
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(ChannelInfoTest, FullInstall) {
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ChannelInfo ci;
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"");
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetFullSuffix(true));
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.HasFullSuffix());
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"-full", ci.value());
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.SetFullSuffix(true));
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.HasFullSuffix());
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"-full", ci.value());
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetFullSuffix(false));
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.HasFullSuffix());
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"", ci.value());
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.SetFullSuffix(false));
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.HasFullSuffix());
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"", ci.value());
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"2.0-beta");
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetFullSuffix(true));
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.HasFullSuffix());
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"2.0-beta-full", ci.value());
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.SetFullSuffix(true));
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.HasFullSuffix());
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"2.0-beta-full", ci.value());
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetFullSuffix(false));
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.HasFullSuffix());
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"2.0-beta", ci.value());
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.SetFullSuffix(false));
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.HasFullSuffix());
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"2.0-beta", ci.value());
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(ChannelInfoTest, MultiInstall) {
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ChannelInfo ci;
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"");
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetMultiInstall(true));
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.IsMultiInstall());
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"-multi", ci.value());
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.SetMultiInstall(true));
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.IsMultiInstall());
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"-multi", ci.value());
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetMultiInstall(false));
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.IsMultiInstall());
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"", ci.value());
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.SetMultiInstall(false));
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.IsMultiInstall());
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"", ci.value());
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"2.0-beta");
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetMultiInstall(true));
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.IsMultiInstall());
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"2.0-beta-multi", ci.value());
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.SetMultiInstall(true));
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.IsMultiInstall());
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"2.0-beta-multi", ci.value());
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetMultiInstall(false));
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.IsMultiInstall());
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"2.0-beta", ci.value());
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.SetMultiInstall(false));
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.IsMultiInstall());
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"2.0-beta", ci.value());
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)TEST(ChannelInfoTest, Migration) {
13268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ChannelInfo ci;
13368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
13468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ci.set_value(L"");
13568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_TRUE(ci.SetMigratingSuffix(true));
13668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_TRUE(ci.HasMigratingSuffix());
13768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_EQ(L"-migrating", ci.value());
13868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_FALSE(ci.SetMigratingSuffix(true));
13968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_TRUE(ci.HasMigratingSuffix());
14068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_EQ(L"-migrating", ci.value());
14168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_TRUE(ci.SetMigratingSuffix(false));
14268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_FALSE(ci.HasMigratingSuffix());
14368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_EQ(L"", ci.value());
14468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_FALSE(ci.SetMigratingSuffix(false));
14568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_FALSE(ci.HasMigratingSuffix());
14668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_EQ(L"", ci.value());
14768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
14868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ci.set_value(L"2.0-beta");
14968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_TRUE(ci.SetMigratingSuffix(true));
15068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_TRUE(ci.HasMigratingSuffix());
15168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_EQ(L"2.0-beta-migrating", ci.value());
15268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_FALSE(ci.SetMigratingSuffix(true));
15368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_TRUE(ci.HasMigratingSuffix());
15468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_EQ(L"2.0-beta-migrating", ci.value());
15568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_TRUE(ci.SetMigratingSuffix(false));
15668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_FALSE(ci.HasMigratingSuffix());
15768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_EQ(L"2.0-beta", ci.value());
15868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_FALSE(ci.SetMigratingSuffix(false));
15968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_FALSE(ci.HasMigratingSuffix());
16068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  EXPECT_EQ(L"2.0-beta", ci.value());
16168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)}
16268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(ChannelInfoTest, Combinations) {
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ChannelInfo ci;
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"2.0-beta-chromeframe");
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.IsChrome());
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"2.0-beta-chromeframe-chrome");
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.IsChrome());
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(ChannelInfoTest, GetStage) {
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ChannelInfo ci;
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"");
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"", ci.GetStage());
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"-stage");
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"", ci.GetStage());
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"-stage:");
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"", ci.GetStage());
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"-stage:spammy");
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"spammy", ci.GetStage());
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"-multi");
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"", ci.GetStage());
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"-stage-multi");
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"", ci.GetStage());
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"-stage:-multi");
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"", ci.GetStage());
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"-stage:spammy-multi");
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"spammy", ci.GetStage());
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"2.0-beta-multi");
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"", ci.GetStage());
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"2.0-beta-stage-multi");
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"", ci.GetStage());
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"2.0-beta-stage:-multi");
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"", ci.GetStage());
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"2.0-beta-stage:spammy-multi");
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"spammy", ci.GetStage());
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(ChannelInfoTest, SetStage) {
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ChannelInfo ci;
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"");
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.SetStage(NULL));
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"", ci.value());
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetStage(L"spammy"));
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"-stage:spammy", ci.value());
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.SetStage(L"spammy"));
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"-stage:spammy", ci.value());
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetStage(NULL));
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"", ci.value());
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetStage(L"spammy"));
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetStage(L""));
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"", ci.value());
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"-multi");
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.SetStage(NULL));
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"-multi", ci.value());
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetStage(L"spammy"));
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"-stage:spammy-multi", ci.value());
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.SetStage(L"spammy"));
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"-stage:spammy-multi", ci.value());
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetStage(NULL));
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"-multi", ci.value());
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetStage(L"spammy"));
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetStage(L""));
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"-multi", ci.value());
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"2.0-beta-multi");
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.SetStage(NULL));
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"2.0-beta-multi", ci.value());
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetStage(L"spammy"));
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"2.0-beta-stage:spammy-multi", ci.value());
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ci.SetStage(L"spammy"));
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"2.0-beta-stage:spammy-multi", ci.value());
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetStage(NULL));
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"2.0-beta-multi", ci.value());
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetStage(L"spammy"));
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetStage(L""));
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"2.0-beta-multi", ci.value());
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ci.set_value(L"2.0-beta-stage:-multi");
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ci.SetStage(NULL));
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(L"2.0-beta-multi", ci.value());
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
249558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
250558790d6acca3451cf3a6b497803a5f07d0bec58Ben MurdochTEST(ChannelInfoTest, RemoveAllModifiersAndSuffixes) {
251558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  ChannelInfo ci;
252558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
253558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  ci.set_value(L"");
254558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  EXPECT_FALSE(ci.RemoveAllModifiersAndSuffixes());
255558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  EXPECT_EQ(L"", ci.value());
256558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch
25768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)  ci.set_value(L"2.0-dev-multi-chrome-chromeframe-migrating");
258558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  EXPECT_TRUE(ci.RemoveAllModifiersAndSuffixes());
259558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch  EXPECT_EQ(L"2.0-dev", ci.value());
260558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch}
261