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