blob: f55d281ab1f9f22f4a404687570e9c4249d16d10 [file] [log] [blame]
/*
* Copyright (C) 2016, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <functional>
#include <memory>
#include <string>
#include <vector>
#include <gtest/gtest.h>
#include "wificond/scanning/offload/offload_callback.h"
#include "wificond/scanning/scan_result.h"
#include "wificond/tests/mock_offload_callback_handlers.h"
#include "wificond/tests/offload_test_utils.h"
using android::hardware::wifi::offload::V1_0::ScanResult;
using android::hardware::wifi::offload::V1_0::OffloadStatus;
using android::hardware::wifi::offload::V1_0::OffloadStatusCode;
using android::hardware::hidl_vec;
using testing::NiceMock;
namespace android {
namespace wificond {
class OffloadCallbackTest : public ::testing::Test {
protected:
virtual void SetUp() {
dummy_scan_results_ = OffloadTestUtils::createOffloadScanResults();
}
void TearDown() override { dummy_scan_results_.clear(); }
std::vector<ScanResult> dummy_scan_results_;
std::unique_ptr<OffloadCallback> offload_callback_;
std::unique_ptr<NiceMock<MockOffloadCallbackHandlers>> handlers_;
};
/**
* Testing OffloadCallback to invoke the registered callback handler
* with the scan results when they are available
*/
TEST_F(OffloadCallbackTest, checkScanResultSize) {
std::vector<ScanResult> scan_result;
handlers_.reset(new NiceMock<MockOffloadCallbackHandlers>());
ON_CALL(*handlers_, OnScanResultHandler(testing::_))
.WillByDefault(testing::Invoke(
[&scan_result](std::vector<ScanResult> scanResult) -> void {
scan_result = scanResult;
}));
offload_callback_.reset(new OffloadCallback(handlers_.get()));
hidl_vec<ScanResult> offloadScanResult(dummy_scan_results_);
offload_callback_->onScanResult(offloadScanResult);
EXPECT_EQ(dummy_scan_results_.size(), scan_result.size());
}
/**
* Testing OffloadCallback to invoke the registered error handler
*/
TEST_F(OffloadCallbackTest, checkErrorStatus) {
OffloadStatus status_;
handlers_.reset(new NiceMock<MockOffloadCallbackHandlers>());
ON_CALL(*handlers_, OnErrorHandler(testing::_))
.WillByDefault(testing::Invoke(
[&status_](OffloadStatus status) -> void { status_ = status; }));
offload_callback_.reset(new OffloadCallback(handlers_.get()));
OffloadStatus status =
OffloadTestUtils::createOffloadStatus(OffloadStatusCode::ERROR);
offload_callback_->onError(status);
EXPECT_EQ(status_.code, OffloadStatusCode::ERROR);
}
} // namespace wificond
} // namespace android