blob: 2fc9d4c5c474d1af2e7ede464e71960e2af15f32 [file] [log] [blame]
erg@chromium.orgcb2aae82010-04-16 05:40:17 +09001// Copyright (c) 2010 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
brettw@chromium.orge47345a2010-10-16 13:56:06 +09005#include "base/nix/xdg_util.h"
erg@chromium.orgcb2aae82010-04-16 05:40:17 +09006
tfarina@chromium.org6d36c5d2010-08-03 12:00:50 +09007#include "base/environment.h"
erg@chromium.orgcb2aae82010-04-16 05:40:17 +09008#include "testing/gmock/include/gmock/gmock.h"
9#include "testing/gtest/include/gtest/gtest.h"
10
erg@chromium.orgcb2aae82010-04-16 05:40:17 +090011using ::testing::_;
12using ::testing::Return;
13using ::testing::SetArgumentPointee;
14using ::testing::StrEq;
15
brettw@chromium.orge47345a2010-10-16 13:56:06 +090016namespace base {
17namespace nix {
18
evan@chromium.org73aec0e2010-04-23 08:28:05 +090019namespace {
20
brettw@chromium.orge47345a2010-10-16 13:56:06 +090021class MockEnvironment : public Environment {
erg@chromium.orgcb2aae82010-04-16 05:40:17 +090022 public:
tfarina@chromium.org8f115a82010-08-07 11:57:59 +090023 MOCK_METHOD2(GetVar, bool(const char*, std::string* result));
tfarina@chromium.org5dc66732010-08-06 10:03:37 +090024 MOCK_METHOD2(SetVar, bool(const char*, const std::string& new_value));
tfarina@chromium.org6b2d9cc2010-08-04 11:13:34 +090025 MOCK_METHOD1(UnSetVar, bool(const char*));
erg@chromium.orgcb2aae82010-04-16 05:40:17 +090026};
27
erg@chromium.orgcb2aae82010-04-16 05:40:17 +090028const char* kGnome = "gnome";
29const char* kKDE4 = "kde4";
30const char* kKDE = "kde";
31const char* kXFCE = "xfce";
32
33} // namespace
34
evan@chromium.org73aec0e2010-04-23 08:28:05 +090035TEST(XDGUtilTest, GetDesktopEnvironmentGnome) {
tfarina@chromium.org6d36c5d2010-08-03 12:00:50 +090036 MockEnvironment getter;
tfarina@chromium.org8f115a82010-08-07 11:57:59 +090037 EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
38 EXPECT_CALL(getter, GetVar(StrEq("DESKTOP_SESSION"), _))
erg@chromium.orgcb2aae82010-04-16 05:40:17 +090039 .WillOnce(DoAll(SetArgumentPointee<1>(kGnome), Return(true)));
40
brettw@chromium.orge47345a2010-10-16 13:56:06 +090041 EXPECT_EQ(DESKTOP_ENVIRONMENT_GNOME,
42 GetDesktopEnvironment(&getter));
erg@chromium.orgcb2aae82010-04-16 05:40:17 +090043}
44
evan@chromium.org73aec0e2010-04-23 08:28:05 +090045TEST(XDGUtilTest, GetDesktopEnvironmentKDE4) {
tfarina@chromium.org6d36c5d2010-08-03 12:00:50 +090046 MockEnvironment getter;
tfarina@chromium.org8f115a82010-08-07 11:57:59 +090047 EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
48 EXPECT_CALL(getter, GetVar(StrEq("DESKTOP_SESSION"), _))
erg@chromium.orgcb2aae82010-04-16 05:40:17 +090049 .WillOnce(DoAll(SetArgumentPointee<1>(kKDE4), Return(true)));
50
brettw@chromium.orge47345a2010-10-16 13:56:06 +090051 EXPECT_EQ(DESKTOP_ENVIRONMENT_KDE4,
52 GetDesktopEnvironment(&getter));
erg@chromium.orgcb2aae82010-04-16 05:40:17 +090053}
54
evan@chromium.org73aec0e2010-04-23 08:28:05 +090055TEST(XDGUtilTest, GetDesktopEnvironmentKDE3) {
tfarina@chromium.org6d36c5d2010-08-03 12:00:50 +090056 MockEnvironment getter;
tfarina@chromium.org8f115a82010-08-07 11:57:59 +090057 EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
58 EXPECT_CALL(getter, GetVar(StrEq("DESKTOP_SESSION"), _))
erg@chromium.orgcb2aae82010-04-16 05:40:17 +090059 .WillOnce(DoAll(SetArgumentPointee<1>(kKDE), Return(true)));
60
brettw@chromium.orge47345a2010-10-16 13:56:06 +090061 EXPECT_EQ(DESKTOP_ENVIRONMENT_KDE3,
62 GetDesktopEnvironment(&getter));
erg@chromium.orgcb2aae82010-04-16 05:40:17 +090063}
64
evan@chromium.org73aec0e2010-04-23 08:28:05 +090065TEST(XDGUtilTest, GetDesktopEnvironmentXFCE) {
tfarina@chromium.org6d36c5d2010-08-03 12:00:50 +090066 MockEnvironment getter;
tfarina@chromium.org8f115a82010-08-07 11:57:59 +090067 EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
68 EXPECT_CALL(getter, GetVar(StrEq("DESKTOP_SESSION"), _))
erg@chromium.orgcb2aae82010-04-16 05:40:17 +090069 .WillOnce(DoAll(SetArgumentPointee<1>(kXFCE), Return(true)));
70
brettw@chromium.orge47345a2010-10-16 13:56:06 +090071 EXPECT_EQ(DESKTOP_ENVIRONMENT_XFCE,
72 GetDesktopEnvironment(&getter));
erg@chromium.orgcb2aae82010-04-16 05:40:17 +090073}
brettw@chromium.orge47345a2010-10-16 13:56:06 +090074
75} // namespace nix
76} // namespace base