OSDN Git Service

WifiCond: Setup polling on HW binder FD
[android-x86/system-connectivity-wificond.git] / tests / offload_callback_test.cpp
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
29 using android::hardware::wifi::offload::V1_0::ScanResult;
30 using android::hardware::wifi::offload::V1_0::OffloadStatus;
31 using android::hardware::wifi::offload::V1_0::OffloadStatusCode;
32 using android::hardware::hidl_vec;
33 using testing::NiceMock;
34
35 namespace android {
36 namespace wificond {
37
38 class 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  */
55 TEST_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  */
72 TEST_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