1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick#include "base/nix/xdg_util.h"
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "base/environment.h"
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gmock/include/gmock/gmock.h"
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gtest/include/gtest/gtest.h"
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing ::testing::_;
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing ::testing::Return;
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing ::testing::SetArgumentPointee;
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing ::testing::StrEq;
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
16731df977c0511bca2206b5f333555b1205ff1f43Iain Merricknamespace base {
17731df977c0511bca2206b5f333555b1205ff1f43Iain Merricknamespace nix {
18731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace {
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
21731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickclass MockEnvironment : public Environment {
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
233345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  MOCK_METHOD2(GetVar, bool(const char*, std::string* result));
243345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  MOCK_METHOD2(SetVar, bool(const char*, const std::string& new_value));
253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  MOCK_METHOD1(UnSetVar, bool(const char*));
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst char* kGnome = "gnome";
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst char* kKDE4 = "kde4";
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst char* kKDE = "kde";
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst char* kXFCE = "xfce";
32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST(XDGUtilTest, GetDesktopEnvironmentGnome) {
363345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  MockEnvironment getter;
373345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
383345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(getter, GetVar(StrEq("DESKTOP_SESSION"), _))
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      .WillOnce(DoAll(SetArgumentPointee<1>(kGnome), Return(true)));
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
41731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  EXPECT_EQ(DESKTOP_ENVIRONMENT_GNOME,
42731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick            GetDesktopEnvironment(&getter));
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST(XDGUtilTest, GetDesktopEnvironmentKDE4) {
463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  MockEnvironment getter;
473345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
483345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(getter, GetVar(StrEq("DESKTOP_SESSION"), _))
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      .WillOnce(DoAll(SetArgumentPointee<1>(kKDE4), Return(true)));
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
51731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  EXPECT_EQ(DESKTOP_ENVIRONMENT_KDE4,
52731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick            GetDesktopEnvironment(&getter));
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
55c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST(XDGUtilTest, GetDesktopEnvironmentKDE3) {
563345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  MockEnvironment getter;
573345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
583345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(getter, GetVar(StrEq("DESKTOP_SESSION"), _))
59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      .WillOnce(DoAll(SetArgumentPointee<1>(kKDE), Return(true)));
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
61731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  EXPECT_EQ(DESKTOP_ENVIRONMENT_KDE3,
62731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick            GetDesktopEnvironment(&getter));
63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
65c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST(XDGUtilTest, GetDesktopEnvironmentXFCE) {
663345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  MockEnvironment getter;
673345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false));
683345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(getter, GetVar(StrEq("DESKTOP_SESSION"), _))
69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch      .WillOnce(DoAll(SetArgumentPointee<1>(kXFCE), Return(true)));
70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
71731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  EXPECT_EQ(DESKTOP_ENVIRONMENT_XFCE,
72731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick            GetDesktopEnvironment(&getter));
73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
74731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
75731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick}  // namespace nix
76731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick}  // namespace base
77