1/* 2 * Copyright (C) 2016, The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#include <functional> 18#include <memory> 19#include <string> 20#include <vector> 21 22#include <gtest/gtest.h> 23 24#include "wificond/scanning/offload/offload_callback.h" 25#include "wificond/scanning/scan_result.h" 26#include "wificond/tests/mock_offload_callback_handlers.h" 27#include "wificond/tests/offload_test_utils.h" 28 29using android::hardware::wifi::offload::V1_0::ScanResult; 30using android::hardware::wifi::offload::V1_0::OffloadStatus; 31using android::hardware::wifi::offload::V1_0::OffloadStatusCode; 32using android::hardware::hidl_vec; 33using testing::NiceMock; 34 35namespace android { 36namespace wificond { 37 38class OffloadCallbackTest : public ::testing::Test { 39 protected: 40 virtual void SetUp() { 41 dummy_scan_results_ = OffloadTestUtils::createOffloadScanResults(); 42 } 43 44 void TearDown() override { dummy_scan_results_.clear(); } 45 46 std::vector<ScanResult> dummy_scan_results_; 47 std::unique_ptr<OffloadCallback> offload_callback_; 48 std::unique_ptr<NiceMock<MockOffloadCallbackHandlers>> handlers_; 49}; 50 51/** 52 * Testing OffloadCallback to invoke the registered callback handler 53 * with the scan results when they are available 54 */ 55TEST_F(OffloadCallbackTest, checkScanResultSize) { 56 std::vector<ScanResult> scan_result; 57 handlers_.reset(new NiceMock<MockOffloadCallbackHandlers>()); 58 ON_CALL(*handlers_, OnScanResultHandler(testing::_)) 59 .WillByDefault(testing::Invoke( 60 [&scan_result](std::vector<ScanResult> scanResult) -> void { 61 scan_result = scanResult; 62 })); 63 offload_callback_.reset(new OffloadCallback(handlers_.get())); 64 hidl_vec<ScanResult> offloadScanResult(dummy_scan_results_); 65 offload_callback_->onScanResult(offloadScanResult); 66 EXPECT_EQ(dummy_scan_results_.size(), scan_result.size()); 67} 68 69/** 70 * Testing OffloadCallback to invoke the registered error handler 71 */ 72TEST_F(OffloadCallbackTest, checkErrorStatus) { 73 OffloadStatus status_; 74 handlers_.reset(new NiceMock<MockOffloadCallbackHandlers>()); 75 ON_CALL(*handlers_, OnErrorHandler(testing::_)) 76 .WillByDefault(testing::Invoke( 77 [&status_](OffloadStatus status) -> void { status_ = status; })); 78 offload_callback_.reset(new OffloadCallback(handlers_.get())); 79 OffloadStatus status = 80 OffloadTestUtils::createOffloadStatus(OffloadStatusCode::ERROR); 81 offload_callback_->onError(status); 82 EXPECT_EQ(status_.code, OffloadStatusCode::ERROR); 83} 84 85} // namespace wificond 86} // namespace android 87