1 // Copyright (c) 2011 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.
5 #include "chrome/installer/mini_installer/configuration.h"
9 #include "base/basictypes.h"
10 #include "chrome/installer/mini_installer/appid.h"
11 #include "testing/gtest/include/gtest/gtest.h"
13 using mini_installer::Configuration
;
15 class TestConfiguration
: public Configuration
{
17 explicit TestConfiguration(const wchar_t* command_line
)
19 open_registry_key_result_(false),
20 read_registry_value_result_(0),
21 read_registry_value_(L
"") {
22 Initialize(command_line
);
24 explicit TestConfiguration(const wchar_t* command_line
,
25 LONG ret
, const wchar_t* value
)
27 open_registry_key_result_(true),
28 read_registry_value_result_(ret
),
29 read_registry_value_(value
) {
30 Initialize(command_line
);
32 void SetRegistryResults(bool openkey
, LONG ret
, const wchar_t* value
) {
35 bool open_registry_key_result_
;
36 LONG read_registry_value_result_
;
37 const wchar_t* read_registry_value_
= L
"";
39 void Initialize(const wchar_t* command_line
) {
41 ASSERT_TRUE(ParseCommandLine(command_line
));
43 bool ReadClientStateRegistryValue(
44 const HKEY root_key
, const wchar_t* app_guid
,
45 LONG
* retval
, ValueString
& value
) override
{
46 *retval
= read_registry_value_result_
;
47 value
.assign(read_registry_value_
);
48 return open_registry_key_result_
;
52 // Test that the operation type is CLEANUP iff --cleanup is on the cmdline.
53 TEST(MiniInstallerConfigurationTest
, Operation
) {
54 EXPECT_EQ(Configuration::INSTALL_PRODUCT
,
55 TestConfiguration(L
"spam.exe").operation());
56 EXPECT_EQ(Configuration::INSTALL_PRODUCT
,
57 TestConfiguration(L
"spam.exe --clean").operation());
58 EXPECT_EQ(Configuration::INSTALL_PRODUCT
,
59 TestConfiguration(L
"spam.exe --cleanupthis").operation());
61 EXPECT_EQ(Configuration::CLEANUP
,
62 TestConfiguration(L
"spam.exe --cleanup").operation());
63 EXPECT_EQ(Configuration::CLEANUP
,
64 TestConfiguration(L
"spam.exe --cleanup now").operation());
67 TEST(MiniInstallerConfigurationTest
, Program
) {
68 EXPECT_TRUE(NULL
== mini_installer::Configuration().program());
69 EXPECT_TRUE(std::wstring(L
"spam.exe") ==
70 TestConfiguration(L
"spam.exe").program());
71 EXPECT_TRUE(std::wstring(L
"spam.exe") ==
72 TestConfiguration(L
"spam.exe --with args").program());
73 EXPECT_TRUE(std::wstring(L
"c:\\blaz\\spam.exe") ==
74 TestConfiguration(L
"c:\\blaz\\spam.exe --with args").program());
77 TEST(MiniInstallerConfigurationTest
, ArgumentCount
) {
78 EXPECT_EQ(1, TestConfiguration(L
"spam.exe").argument_count());
79 EXPECT_EQ(2, TestConfiguration(L
"spam.exe --foo").argument_count());
80 EXPECT_EQ(3, TestConfiguration(L
"spam.exe --foo --bar").argument_count());
83 TEST(MiniInstallerConfigurationTest
, CommandLine
) {
84 static const wchar_t* const kCommandLines
[] = {
89 for (size_t i
= 0; i
< _countof(kCommandLines
); ++i
) {
90 EXPECT_TRUE(std::wstring(kCommandLines
[i
]) ==
91 TestConfiguration(kCommandLines
[i
]).command_line());
95 TEST(MiniInstallerConfigurationTest
, ChromeAppGuid
) {
96 EXPECT_TRUE(std::wstring(google_update::kAppGuid
) ==
97 TestConfiguration(L
"spam.exe").chrome_app_guid());
98 EXPECT_TRUE(std::wstring(google_update::kAppGuid
) ==
99 TestConfiguration(L
"spam.exe --chrome").chrome_app_guid());
100 EXPECT_TRUE(std::wstring(google_update::kChromeFrameAppGuid
) ==
101 TestConfiguration(L
"spam.exe --chrome-frame").chrome_app_guid());
102 EXPECT_TRUE(std::wstring(google_update::kSxSAppGuid
) ==
103 TestConfiguration(L
"spam.exe --chrome-sxs").chrome_app_guid());
104 EXPECT_TRUE(std::wstring(google_update::kMultiInstallAppGuid
) ==
105 TestConfiguration(L
"spam.exe --multi-install --chrome")
107 EXPECT_TRUE(std::wstring(google_update::kMultiInstallAppGuid
) ==
108 TestConfiguration(L
"spam.exe --multi-install --chrome",
109 ERROR_INVALID_FUNCTION
, L
"")
111 EXPECT_TRUE(std::wstring(google_update::kAppGuid
) ==
112 TestConfiguration(L
"spam.exe --multi-install --chrome",
113 ERROR_FILE_NOT_FOUND
, L
"")
115 EXPECT_TRUE(std::wstring(google_update::kAppGuid
) ==
116 TestConfiguration(L
"spam.exe --multi-install --chrome",
117 ERROR_SUCCESS
, L
"foo-bar")
119 EXPECT_TRUE(std::wstring(google_update::kMultiInstallAppGuid
) ==
120 TestConfiguration(L
"spam.exe --multi-install --chrome",
121 ERROR_SUCCESS
, L
"foo-multi")
125 TEST(MiniInstallerConfigurationTest
, HasChrome
) {
126 EXPECT_TRUE(TestConfiguration(L
"spam.exe").has_chrome());
127 EXPECT_TRUE(TestConfiguration(L
"spam.exe --chrome").has_chrome());
128 EXPECT_TRUE(TestConfiguration(L
"spam.exe --multi-install --chrome")
130 EXPECT_FALSE(TestConfiguration(L
"spam.exe --chrome-frame").has_chrome());
131 EXPECT_FALSE(TestConfiguration(L
"spam.exe --multi-install").has_chrome());
134 TEST(MiniInstallerConfigurationTest
, HasChromeFrame
) {
135 EXPECT_FALSE(TestConfiguration(L
"spam.exe").has_chrome_frame());
136 EXPECT_FALSE(TestConfiguration(L
"spam.exe --chrome").has_chrome_frame());
137 EXPECT_FALSE(TestConfiguration(L
"spam.exe --multi-install --chrome")
138 .has_chrome_frame());
139 EXPECT_TRUE(TestConfiguration(L
"spam.exe --chrome-frame").has_chrome_frame());
140 EXPECT_TRUE(TestConfiguration(L
"spam.exe --multi-install --chrome-frame")
141 .has_chrome_frame());
142 EXPECT_FALSE(TestConfiguration(L
"spam.exe --multi-install")
143 .has_chrome_frame());
146 TEST(MiniInstallerConfigurationTest
, IsMultiInstall
) {
147 EXPECT_FALSE(TestConfiguration(L
"spam.exe").is_multi_install());
148 EXPECT_FALSE(TestConfiguration(L
"spam.exe --chrome").is_multi_install());
149 EXPECT_TRUE(TestConfiguration(L
"spam.exe --multi-install --chrome")
150 .is_multi_install());
151 EXPECT_FALSE(TestConfiguration(L
"spam.exe --chrome-frame")
152 .is_multi_install());
153 EXPECT_TRUE(TestConfiguration(L
"spam.exe --multi-install --chrome-frame")
154 .is_multi_install());
155 EXPECT_TRUE(TestConfiguration(L
"spam.exe --multi-install")
156 .is_multi_install());
159 TEST(MiniInstallerConfigurationTest
, IsSystemLevel
) {
160 EXPECT_FALSE(TestConfiguration(L
"spam.exe").is_system_level());
161 EXPECT_FALSE(TestConfiguration(L
"spam.exe --chrome").is_system_level());
162 EXPECT_TRUE(TestConfiguration(L
"spam.exe --system-level").is_system_level());