wimax_unittest.cc revision 912f0de92ca103568821e20412b7dc2529494f98
1c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan// Copyright (c) 2012 The Chromium OS Authors. All rights reserved. 2c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan// Use of this source code is governed by a BSD-style license that can be 3c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan// found in the LICENSE file. 4c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan 5c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan#include "shill/wimax.h" 6c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan 7c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan#include <gtest/gtest.h> 8c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan 9c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan#include "shill/event_dispatcher.h" 10c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan#include "shill/mock_glib.h" 11c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan#include "shill/mock_manager.h" 12c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan#include "shill/mock_metrics.h" 13b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov#include "shill/mock_wimax_device_proxy.h" 14c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan#include "shill/nice_mock_control.h" 15b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov#include "shill/proxy_factory.h" 16b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov 17b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkovusing std::string; 18912f0de92ca103568821e20412b7dc2529494f98Darin Petkovusing testing::_; 19c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan 20c07362bebe25b1db1716c24ed340b46b309868e5Ben Channamespace shill { 21c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan 22c07362bebe25b1db1716c24ed340b46b309868e5Ben Channamespace { 23c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan 24c07362bebe25b1db1716c24ed340b46b309868e5Ben Chanconst char kTestLinkName[] = "wm0"; 254e64d2d72eed1947ab1d15e6ce25a47c37a9e10cBen Chanconst char kTestAddress[] = "01:23:45:67:89:ab"; 26c07362bebe25b1db1716c24ed340b46b309868e5Ben Chanconst int kTestInterfaceIndex = 5; 27b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkovconst char kTestPath[] = "/org/chromium/WiMaxManager/Device/6"; 28c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan 29c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan} // namespace 30c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan 31c07362bebe25b1db1716c24ed340b46b309868e5Ben Chanclass WiMaxTest : public testing::Test { 32c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan public: 33c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan WiMaxTest() 34b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov : proxy_(new MockWiMaxDeviceProxy()), 35b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov proxy_factory_(this), 36b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov manager_(&control_, &dispatcher_, &metrics_, &glib_), 37c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan wimax_(new WiMax(&control_, &dispatcher_, &metrics_, &manager_, 384e64d2d72eed1947ab1d15e6ce25a47c37a9e10cBen Chan kTestLinkName, kTestAddress, kTestInterfaceIndex, 394e64d2d72eed1947ab1d15e6ce25a47c37a9e10cBen Chan kTestPath)) {} 40c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan 41c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan virtual ~WiMaxTest() {} 42c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan 43c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan protected: 44b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov class TestProxyFactory : public ProxyFactory { 45b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov public: 46b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov explicit TestProxyFactory(WiMaxTest *test) : test_(test) {} 47b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov 48b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov virtual WiMaxDeviceProxyInterface *CreateWiMaxDeviceProxy( 49b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov const string &/*path*/) { 50b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov return test_->proxy_.release(); 51b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov } 52b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov 53b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov private: 54b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov WiMaxTest *test_; 55b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov 56b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov DISALLOW_COPY_AND_ASSIGN(TestProxyFactory); 57b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov }; 58b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov 59b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov virtual void SetUp() { 60b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov wimax_->proxy_factory_ = &proxy_factory_; 61b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov } 62b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov 63b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov virtual void TearDown() { 64b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov wimax_->proxy_factory_ = NULL; 65b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov } 66b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov 67b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov scoped_ptr<MockWiMaxDeviceProxy> proxy_; 68b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov TestProxyFactory proxy_factory_; 69c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan NiceMockControl control_; 70c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan EventDispatcher dispatcher_; 71c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan MockMetrics metrics_; 72c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan MockGLib glib_; 73c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan MockManager manager_; 74c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan WiMaxRefPtr wimax_; 75c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan}; 76c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan 77b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin PetkovTEST_F(WiMaxTest, Constructor) { 78b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov EXPECT_EQ(kTestPath, wimax_->path()); 79b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov} 80b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov 81c07362bebe25b1db1716c24ed340b46b309868e5Ben ChanTEST_F(WiMaxTest, TechnologyIs) { 82c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan EXPECT_TRUE(wimax_->TechnologyIs(Technology::kWiMax)); 83c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan EXPECT_FALSE(wimax_->TechnologyIs(Technology::kEthernet)); 84c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan} 85c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan 86b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin PetkovTEST_F(WiMaxTest, StartStop) { 87b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov EXPECT_FALSE(wimax_->proxy_.get()); 88912f0de92ca103568821e20412b7dc2529494f98Darin Petkov EXPECT_CALL(*proxy_, Enable(_, _, _)); 89912f0de92ca103568821e20412b7dc2529494f98Darin Petkov EXPECT_CALL(*proxy_, Disable(_, _, _)); 90b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov wimax_->Start(NULL, EnabledStateChangedCallback()); 91b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov EXPECT_TRUE(wimax_->proxy_.get()); 92b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov wimax_->Stop(NULL, EnabledStateChangedCallback()); 93b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov} 94b72b62ec23d13c8e84a1499a04231b79d4bd74bbDarin Petkov 95c07362bebe25b1db1716c24ed340b46b309868e5Ben Chan} // namespace shill 96