1 /*
2  * Copyright (c) 2022-2023 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "devicestatus_module_test.h"
17 
18 #include <chrono>
19 #include <iostream>
20 #include <thread>
21 
22 #include <gtest/gtest.h>
23 #include <if_system_ability_manager.h>
24 #include <ipc_skeleton.h>
25 #include <string_ex.h>
26 
27 #include "fi_log.h"
28 #include "stationary_manager.h"
29 
30 #undef LOG_TAG
31 #define LOG_TAG "DeviceStatusModuleTest"
32 
33 namespace OHOS {
34 namespace Msdp {
35 namespace DeviceStatus {
36 using namespace testing::ext;
37 
38 Type DeviceStatusModuleTest::g_moduleTest = Type::TYPE_INVALID;
39 
OnDeviceStatusChanged(const Data & devicestatusData)40 void DeviceStatusModuleTest::DeviceStatusModuleTestCallback::OnDeviceStatusChanged(const Data &devicestatusData)
41 {
42     GTEST_LOG_(INFO) << "DeviceStatusModuleTestCallback type: " << devicestatusData.type;
43     GTEST_LOG_(INFO) << "DeviceStatusModuleTestCallback value: " << devicestatusData.value;
44     EXPECT_EQ(true, devicestatusData.type == g_moduleTest &&
45         (devicestatusData.value >= OnChangedValue::VALUE_INVALID &&
46         devicestatusData.value <= OnChangedValue::VALUE_EXIT)) <<
47         "DeviceStatusModuleTestCallback failed";
48 }
49 
50 namespace {
51 /**
52  * @tc.name: DeviceStatusCallbackTest
53  * @tc.desc: test devicestatus callback in proxy
54  * @tc.type: FUNC
55  */
56 HWTEST_F(DeviceStatusModuleTest, DeviceStatusCallbackTest, TestSize.Level0)
57 {
58     g_moduleTest = Type::TYPE_ABSOLUTE_STILL;
59     Type type = g_moduleTest;
60     auto stationaryManager = StationaryManager::GetInstance();
61     sptr<IRemoteDevStaCallback> cb = new (std::nothrow) DeviceStatusModuleTestCallback();
62     EXPECT_FALSE(cb == nullptr);
63     GTEST_LOG_(INFO) << "DeviceStatusCallbackTest start register";
64     stationaryManager->SubscribeCallback(type, ActivityEvent::ENTER_EXIT, ReportLatencyNs::LONG, cb);
65     GTEST_LOG_(INFO) << "DeviceStatusCallbackTest cancel register";
66     stationaryManager->UnsubscribeCallback(type, ActivityEvent::ENTER_EXIT, cb);
67 }
68 
69 /**
70  * @tc.name: GetDeviceStatusDataTest
71  * @tc.desc: test get devicestatus data in proxy
72  * @tc.type: FUNC
73  */
74 HWTEST_F(DeviceStatusModuleTest, GetDeviceStatusDataTest001, TestSize.Level0)
75 {
76     CALL_TEST_DEBUG;
77     g_moduleTest = Type::TYPE_HORIZONTAL_POSITION;
78     Type type = g_moduleTest;
79     auto stationaryManager = StationaryManager::GetInstance();
80     Data data = stationaryManager->GetDeviceStatusData(type);
81     GTEST_LOG_(INFO) << "type: " << data.type;
82     GTEST_LOG_(INFO) << "value: " << data.value;
83     EXPECT_EQ(true, data.type == g_moduleTest &&
84         data.value >= OnChangedValue::VALUE_INVALID &&
85         data.value <= OnChangedValue::VALUE_EXIT) << "GetDeviceStatusData failed";
86 }
87 
88 /**
89  * @tc.name: GetDeviceStatusDataTest
90  * @tc.desc: test get devicestatus data in proxy
91  * @tc.type: FUNC
92  */
93 HWTEST_F(DeviceStatusModuleTest, GetDeviceStatusDataTest002, TestSize.Level0)
94 {
95     CALL_TEST_DEBUG;
96     g_moduleTest = Type::TYPE_ABSOLUTE_STILL;
97     Type type = g_moduleTest;
98     auto stationaryManager = StationaryManager::GetInstance();
99     Data data = stationaryManager->GetDeviceStatusData(type);
100     GTEST_LOG_(INFO) << "type: " << data.type;
101     GTEST_LOG_(INFO) << "value: " << data.value;
102     EXPECT_EQ(true, data.type == g_moduleTest &&
103         data.value >= OnChangedValue::VALUE_INVALID &&
104         data.value <= OnChangedValue::VALUE_EXIT) << "GetDeviceStatusData failed";
105 }
106 
107 /**
108  * @tc.name: GetDeviceStatusDataTest
109  * @tc.desc: test get devicestatus data in proxy
110  * @tc.type: FUNC
111  */
112 HWTEST_F(DeviceStatusModuleTest, GetDeviceStatusDataTest003, TestSize.Level0)
113 {
114     CALL_TEST_DEBUG;
115     g_moduleTest = Type::TYPE_VERTICAL_POSITION;
116     Type type = g_moduleTest;
117     auto stationaryManager = StationaryManager::GetInstance();
118     Data data = stationaryManager->GetDeviceStatusData(type);
119     GTEST_LOG_(INFO) << "type: " << data.type;
120     GTEST_LOG_(INFO) << "value: " << data.value;
121     EXPECT_EQ(true, data.type == g_moduleTest &&
122         data.value >= OnChangedValue::VALUE_INVALID &&
123         data.value <= OnChangedValue::VALUE_EXIT) << "GetDeviceStatusData failed";
124 }
125 
126 /**
127  * @tc.name: GetDeviceStatusDataTest
128  * @tc.desc: test get devicestatus data in proxy
129  * @tc.type: FUNC
130  */
131 HWTEST_F(DeviceStatusModuleTest, GetDeviceStatusDataTest004, TestSize.Level0)
132 {
133     CALL_TEST_DEBUG;
134     g_moduleTest = Type::TYPE_STILL;
135     Type type = g_moduleTest;
136     Data data = StationaryManager::GetInstance()->GetDeviceStatusData(type);
137     GTEST_LOG_(INFO) << "type: " << data.type;
138     GTEST_LOG_(INFO) << "value: " << data.value;
139     EXPECT_EQ(true, data.type == g_moduleTest &&
140         data.value >= OnChangedValue::VALUE_INVALID &&
141         data.value <= OnChangedValue::VALUE_EXIT) << "GetDeviceStatusData failed";
142 }
143 } // namespace
144 } // namespace DeviceStatus
145 } // namespace Msdp
146 } // namespace OHOS
147