xref: /aosp_15_r20/external/libchrome/base/nix/xdg_util_unittest.cc (revision 635a864187cb8b6c713ff48b7e790a6b21769273)
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.
4 
5 #include "base/nix/xdg_util.h"
6 
7 #include "base/environment.h"
8 #include "testing/gmock/include/gmock/gmock.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10 
11 using ::testing::_;
12 using ::testing::Eq;
13 using ::testing::Return;
14 using ::testing::SetArgPointee;
15 
16 namespace base {
17 namespace nix {
18 
19 namespace {
20 
21 class MockEnvironment : public Environment {
22  public:
23   MOCK_METHOD2(GetVar, bool(StringPiece, std::string* result));
24   MOCK_METHOD2(SetVar, bool(StringPiece, const std::string& new_value));
25   MOCK_METHOD1(UnSetVar, bool(StringPiece));
26 };
27 
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 kXdgDesktopCinnamon = "X-Cinnamon";
36 const char* const kXdgDesktopGNOME = "GNOME";
37 const char* const kXdgDesktopKDE = "KDE";
38 const char* const kXdgDesktopPantheon = "Pantheon";
39 const char* const kXdgDesktopUnity = "Unity";
40 const char* const kXdgDesktopUnity7 = "Unity:Unity7";
41 const char* const kXdgDesktopUnity8 = "Unity:Unity8";
42 const char* const kKDESessionKDE5 = "5";
43 
44 const char kDesktopSession[] = "DESKTOP_SESSION";
45 const char kKDESession[] = "KDE_SESSION_VERSION";
46 const char kXdgDesktop[] = "XDG_CURRENT_DESKTOP";
47 
48 }  // namespace
49 
TEST(XDGUtilTest,GetDesktopEnvironmentGnome)50 TEST(XDGUtilTest, GetDesktopEnvironmentGnome) {
51   MockEnvironment getter;
52   EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
53   EXPECT_CALL(getter, GetVar(Eq(kDesktopSession), _))
54       .WillOnce(DoAll(SetArgPointee<1>(kDesktopGnome), Return(true)));
55 
56   EXPECT_EQ(DESKTOP_ENVIRONMENT_GNOME, GetDesktopEnvironment(&getter));
57 }
58 
TEST(XDGUtilTest,GetDesktopEnvironmentMATE)59 TEST(XDGUtilTest, GetDesktopEnvironmentMATE) {
60   MockEnvironment getter;
61   EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
62   EXPECT_CALL(getter, GetVar(Eq(kDesktopSession), _))
63       .WillOnce(DoAll(SetArgPointee<1>(kDesktopMATE), Return(true)));
64 
65   EXPECT_EQ(DESKTOP_ENVIRONMENT_GNOME, GetDesktopEnvironment(&getter));
66 }
67 
TEST(XDGUtilTest,GetDesktopEnvironmentKDE4)68 TEST(XDGUtilTest, GetDesktopEnvironmentKDE4) {
69   MockEnvironment getter;
70   EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
71   EXPECT_CALL(getter, GetVar(Eq(kDesktopSession), _))
72       .WillOnce(DoAll(SetArgPointee<1>(kDesktopKDE4), Return(true)));
73 
74   EXPECT_EQ(DESKTOP_ENVIRONMENT_KDE4, GetDesktopEnvironment(&getter));
75 }
76 
TEST(XDGUtilTest,GetDesktopEnvironmentKDE3)77 TEST(XDGUtilTest, GetDesktopEnvironmentKDE3) {
78   MockEnvironment getter;
79   EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
80   EXPECT_CALL(getter, GetVar(Eq(kDesktopSession), _))
81       .WillOnce(DoAll(SetArgPointee<1>(kDesktopKDE), Return(true)));
82 
83   EXPECT_EQ(DESKTOP_ENVIRONMENT_KDE3, GetDesktopEnvironment(&getter));
84 }
85 
TEST(XDGUtilTest,GetDesktopEnvironmentXFCE)86 TEST(XDGUtilTest, GetDesktopEnvironmentXFCE) {
87   MockEnvironment getter;
88   EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
89   EXPECT_CALL(getter, GetVar(Eq(kDesktopSession), _))
90       .WillOnce(DoAll(SetArgPointee<1>(kDesktopXFCE), Return(true)));
91 
92   EXPECT_EQ(DESKTOP_ENVIRONMENT_XFCE, GetDesktopEnvironment(&getter));
93 }
94 
TEST(XDGUtilTest,GetXdgDesktopCinnamon)95 TEST(XDGUtilTest, GetXdgDesktopCinnamon) {
96   MockEnvironment getter;
97   EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
98   EXPECT_CALL(getter, GetVar(Eq(kXdgDesktop), _))
99       .WillOnce(DoAll(SetArgPointee<1>(kXdgDesktopCinnamon), Return(true)));
100 
101   EXPECT_EQ(DESKTOP_ENVIRONMENT_CINNAMON, GetDesktopEnvironment(&getter));
102 }
103 
TEST(XDGUtilTest,GetXdgDesktopGnome)104 TEST(XDGUtilTest, GetXdgDesktopGnome) {
105   MockEnvironment getter;
106   EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
107   EXPECT_CALL(getter, GetVar(Eq(kXdgDesktop), _))
108       .WillOnce(DoAll(SetArgPointee<1>(kXdgDesktopGNOME), Return(true)));
109 
110   EXPECT_EQ(DESKTOP_ENVIRONMENT_GNOME, GetDesktopEnvironment(&getter));
111 }
112 
TEST(XDGUtilTest,GetXdgDesktopGnomeFallback)113 TEST(XDGUtilTest, GetXdgDesktopGnomeFallback) {
114   MockEnvironment getter;
115   EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
116   EXPECT_CALL(getter, GetVar(Eq(kXdgDesktop), _))
117       .WillOnce(DoAll(SetArgPointee<1>(kXdgDesktopUnity), Return(true)));
118   EXPECT_CALL(getter, GetVar(Eq(kDesktopSession), _))
119       .WillOnce(DoAll(SetArgPointee<1>(kDesktopGnomeFallback), Return(true)));
120 
121   EXPECT_EQ(DESKTOP_ENVIRONMENT_GNOME, GetDesktopEnvironment(&getter));
122 }
123 
TEST(XDGUtilTest,GetXdgDesktopKDE5)124 TEST(XDGUtilTest, GetXdgDesktopKDE5) {
125   MockEnvironment getter;
126   EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
127   EXPECT_CALL(getter, GetVar(Eq(kXdgDesktop), _))
128       .WillOnce(DoAll(SetArgPointee<1>(kXdgDesktopKDE), Return(true)));
129   EXPECT_CALL(getter, GetVar(Eq(kKDESession), _))
130       .WillOnce(DoAll(SetArgPointee<1>(kKDESessionKDE5), Return(true)));
131 
132   EXPECT_EQ(DESKTOP_ENVIRONMENT_KDE5, GetDesktopEnvironment(&getter));
133 }
134 
TEST(XDGUtilTest,GetXdgDesktopKDE4)135 TEST(XDGUtilTest, GetXdgDesktopKDE4) {
136   MockEnvironment getter;
137   EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
138   EXPECT_CALL(getter, GetVar(Eq(kXdgDesktop), _))
139       .WillOnce(DoAll(SetArgPointee<1>(kXdgDesktopKDE), Return(true)));
140 
141   EXPECT_EQ(DESKTOP_ENVIRONMENT_KDE4, GetDesktopEnvironment(&getter));
142 }
143 
TEST(XDGUtilTest,GetXdgDesktopPantheon)144 TEST(XDGUtilTest, GetXdgDesktopPantheon) {
145   MockEnvironment getter;
146   EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
147   EXPECT_CALL(getter, GetVar(Eq(kXdgDesktop), _))
148       .WillOnce(DoAll(SetArgPointee<1>(kXdgDesktopPantheon), Return(true)));
149 
150   EXPECT_EQ(DESKTOP_ENVIRONMENT_PANTHEON, GetDesktopEnvironment(&getter));
151 }
152 
TEST(XDGUtilTest,GetXdgDesktopUnity)153 TEST(XDGUtilTest, GetXdgDesktopUnity) {
154   MockEnvironment getter;
155   EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
156   EXPECT_CALL(getter, GetVar(Eq(kXdgDesktop), _))
157       .WillOnce(DoAll(SetArgPointee<1>(kXdgDesktopUnity), Return(true)));
158 
159   EXPECT_EQ(DESKTOP_ENVIRONMENT_UNITY, GetDesktopEnvironment(&getter));
160 }
161 
TEST(XDGUtilTest,GetXdgDesktopUnity7)162 TEST(XDGUtilTest, GetXdgDesktopUnity7) {
163   MockEnvironment getter;
164   EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
165   EXPECT_CALL(getter, GetVar(Eq(kXdgDesktop), _))
166       .WillOnce(DoAll(SetArgPointee<1>(kXdgDesktopUnity7), Return(true)));
167 
168   EXPECT_EQ(DESKTOP_ENVIRONMENT_UNITY, GetDesktopEnvironment(&getter));
169 }
170 
TEST(XDGUtilTest,GetXdgDesktopUnity8)171 TEST(XDGUtilTest, GetXdgDesktopUnity8) {
172   MockEnvironment getter;
173   EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
174   EXPECT_CALL(getter, GetVar(Eq(kXdgDesktop), _))
175       .WillOnce(DoAll(SetArgPointee<1>(kXdgDesktopUnity8), Return(true)));
176 
177   EXPECT_EQ(DESKTOP_ENVIRONMENT_UNITY, GetDesktopEnvironment(&getter));
178 }
179 
180 }  // namespace nix
181 }  // namespace base
182