1 // 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.
5 #include "base/nix/xdg_util.h"
7 #include "base/environment.h"
8 #include "testing/gmock/include/gmock/gmock.h"
9 #include "testing/gtest/include/gtest/gtest.h"
12 using ::testing::Return
;
13 using ::testing::SetArgumentPointee
;
14 using ::testing::StrEq
;
21 class MockEnvironment
: public Environment
{
23 MOCK_METHOD2(GetVar
, bool(const char*, std::string
* result
));
24 MOCK_METHOD2(SetVar
, bool(const char*, const std::string
& new_value
));
25 MOCK_METHOD1(UnSetVar
, bool(const char*));
28 // Needs to be const char* to make gmock happy.
29 const char* const kDesktopGnome
= "gnome";
30 const char* const kDesktopGnomeFallback
= "gnome-fallback";
31 const char* const kDesktopMATE
= "mate";
32 const char* const kDesktopKDE4
= "kde4";
33 const char* const kDesktopKDE
= "kde";
34 const char* const kDesktopXFCE
= "xfce";
35 const char* const kXdgDesktopGNOME
= "GNOME";
36 const char* const kXdgDesktopKDE
= "KDE";
37 const char* const kXdgDesktopUnity
= "Unity";
39 const char kDesktopSession
[] = "DESKTOP_SESSION";
40 const char kXdgDesktop
[] = "XDG_CURRENT_DESKTOP";
44 TEST(XDGUtilTest
, GetDesktopEnvironmentGnome
) {
45 MockEnvironment getter
;
46 EXPECT_CALL(getter
, GetVar(_
, _
)).WillRepeatedly(Return(false));
47 EXPECT_CALL(getter
, GetVar(StrEq(kDesktopSession
), _
))
48 .WillOnce(DoAll(SetArgumentPointee
<1>(kDesktopGnome
), Return(true)));
50 EXPECT_EQ(DESKTOP_ENVIRONMENT_GNOME
, GetDesktopEnvironment(&getter
));
53 TEST(XDGUtilTest
, GetDesktopEnvironmentMATE
) {
54 MockEnvironment getter
;
55 EXPECT_CALL(getter
, GetVar(_
, _
)).WillRepeatedly(Return(false));
56 EXPECT_CALL(getter
, GetVar(StrEq(kDesktopSession
), _
))
57 .WillOnce(DoAll(SetArgumentPointee
<1>(kDesktopMATE
), Return(true)));
59 EXPECT_EQ(DESKTOP_ENVIRONMENT_GNOME
, GetDesktopEnvironment(&getter
));
62 TEST(XDGUtilTest
, GetDesktopEnvironmentKDE4
) {
63 MockEnvironment getter
;
64 EXPECT_CALL(getter
, GetVar(_
, _
)).WillRepeatedly(Return(false));
65 EXPECT_CALL(getter
, GetVar(StrEq(kDesktopSession
), _
))
66 .WillOnce(DoAll(SetArgumentPointee
<1>(kDesktopKDE4
), Return(true)));
68 EXPECT_EQ(DESKTOP_ENVIRONMENT_KDE4
, GetDesktopEnvironment(&getter
));
71 TEST(XDGUtilTest
, GetDesktopEnvironmentKDE3
) {
72 MockEnvironment getter
;
73 EXPECT_CALL(getter
, GetVar(_
, _
)).WillRepeatedly(Return(false));
74 EXPECT_CALL(getter
, GetVar(StrEq(kDesktopSession
), _
))
75 .WillOnce(DoAll(SetArgumentPointee
<1>(kDesktopKDE
), Return(true)));
77 EXPECT_EQ(DESKTOP_ENVIRONMENT_KDE3
, GetDesktopEnvironment(&getter
));
80 TEST(XDGUtilTest
, GetDesktopEnvironmentXFCE
) {
81 MockEnvironment getter
;
82 EXPECT_CALL(getter
, GetVar(_
, _
)).WillRepeatedly(Return(false));
83 EXPECT_CALL(getter
, GetVar(StrEq(kDesktopSession
), _
))
84 .WillOnce(DoAll(SetArgumentPointee
<1>(kDesktopXFCE
), Return(true)));
86 EXPECT_EQ(DESKTOP_ENVIRONMENT_XFCE
, GetDesktopEnvironment(&getter
));
89 TEST(XDGUtilTest
, GetXdgDesktopGnome
) {
90 MockEnvironment getter
;
91 EXPECT_CALL(getter
, GetVar(_
, _
)).WillRepeatedly(Return(false));
92 EXPECT_CALL(getter
, GetVar(StrEq(kXdgDesktop
), _
))
93 .WillOnce(DoAll(SetArgumentPointee
<1>(kXdgDesktopGNOME
), Return(true)));
95 EXPECT_EQ(DESKTOP_ENVIRONMENT_GNOME
, GetDesktopEnvironment(&getter
));
98 TEST(XDGUtilTest
, GetXdgDesktopGnomeFallback
) {
99 MockEnvironment getter
;
100 EXPECT_CALL(getter
, GetVar(_
, _
)).WillRepeatedly(Return(false));
101 EXPECT_CALL(getter
, GetVar(StrEq(kXdgDesktop
), _
))
102 .WillOnce(DoAll(SetArgumentPointee
<1>(kXdgDesktopUnity
), Return(true)));
103 EXPECT_CALL(getter
, GetVar(StrEq(kDesktopSession
), _
))
104 .WillOnce(DoAll(SetArgumentPointee
<1>(kDesktopGnomeFallback
),
107 EXPECT_EQ(DESKTOP_ENVIRONMENT_GNOME
, GetDesktopEnvironment(&getter
));
110 TEST(XDGUtilTest
, GetXdgDesktopKDE4
) {
111 MockEnvironment getter
;
112 EXPECT_CALL(getter
, GetVar(_
, _
)).WillRepeatedly(Return(false));
113 EXPECT_CALL(getter
, GetVar(StrEq(kXdgDesktop
), _
))
114 .WillOnce(DoAll(SetArgumentPointee
<1>(kXdgDesktopKDE
), Return(true)));
116 EXPECT_EQ(DESKTOP_ENVIRONMENT_KDE4
, GetDesktopEnvironment(&getter
));
119 TEST(XDGUtilTest
, GetXdgDesktopUnity
) {
120 MockEnvironment getter
;
121 EXPECT_CALL(getter
, GetVar(_
, _
)).WillRepeatedly(Return(false));
122 EXPECT_CALL(getter
, GetVar(StrEq(kXdgDesktop
), _
))
123 .WillOnce(DoAll(SetArgumentPointee
<1>(kXdgDesktopUnity
), Return(true)));
125 EXPECT_EQ(DESKTOP_ENVIRONMENT_UNITY
, GetDesktopEnvironment(&getter
));