15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2010 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/nix/xdg_util.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/environment.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::_; 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::Return; 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::SetArgumentPointee; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using ::testing::StrEq; 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base { 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace nix { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockEnvironment : public Environment { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD2(GetVar, bool(const char*, std::string* result)); 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD2(SetVar, bool(const char*, const std::string& new_value)); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MOCK_METHOD1(UnSetVar, bool(const char*)); 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char* kGnome = "gnome"; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char* kKDE4 = "kde4"; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char* kKDE = "kde"; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const char* kXFCE = "xfce"; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(XDGUtilTest, GetDesktopEnvironmentGnome) { 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MockEnvironment getter; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false)); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(getter, GetVar(StrEq("DESKTOP_SESSION"), _)) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(DoAll(SetArgumentPointee<1>(kGnome), Return(true))); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(DESKTOP_ENVIRONMENT_GNOME, 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDesktopEnvironment(&getter)); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(XDGUtilTest, GetDesktopEnvironmentKDE4) { 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MockEnvironment getter; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false)); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(getter, GetVar(StrEq("DESKTOP_SESSION"), _)) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(DoAll(SetArgumentPointee<1>(kKDE4), Return(true))); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(DESKTOP_ENVIRONMENT_KDE4, 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDesktopEnvironment(&getter)); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(XDGUtilTest, GetDesktopEnvironmentKDE3) { 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MockEnvironment getter; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false)); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(getter, GetVar(StrEq("DESKTOP_SESSION"), _)) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(DoAll(SetArgumentPointee<1>(kKDE), Return(true))); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(DESKTOP_ENVIRONMENT_KDE3, 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDesktopEnvironment(&getter)); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(XDGUtilTest, GetDesktopEnvironmentXFCE) { 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) MockEnvironment getter; 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(getter, GetVar(_, _)).WillRepeatedly(Return(false)); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_CALL(getter, GetVar(StrEq("DESKTOP_SESSION"), _)) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) .WillOnce(DoAll(SetArgumentPointee<1>(kXFCE), Return(true))); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(DESKTOP_ENVIRONMENT_XFCE, 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDesktopEnvironment(&getter)); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace nix 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace base 77