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