1 /*
2 * Copyright (C) 2025 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 #define private public
16 #define protected public
17
18 #include <string>
19 #include <unistd.h>
20 #include "sim_manager.h"
21 #include "core_manager_inner.h"
22 #include "core_service.h"
23 #include "core_service_client.h"
24 #include "enum_convert.h"
25 #include "operator_config_cache.h"
26 #include "operator_file_parser.h"
27 #include "sim_state_type.h"
28 #include "str_convert.h"
29 #include "string_ex.h"
30 #include "tel_profile_util.h"
31 #include "telephony_ext_wrapper.h"
32 #include "gtest/gtest.h"
33 #include "tel_ril_manager.h"
34
35 namespace OHOS {
36 namespace Telephony {
37 using namespace testing::ext;
38 constexpr int32_t SLEEP_TIME = 100 * 1000; // 10ms
39
40 class StkControllerTest : public testing::Test {
41 public:
42 static void SetUpTestCase();
43 static void TearDownTestCase();
44 void SetUp();
45 void TearDown();
46 };
47
TearDownTestCase()48 void StkControllerTest::TearDownTestCase() {}
49
SetUp()50 void StkControllerTest::SetUp() {}
51
TearDown()52 void StkControllerTest::TearDown() {}
53
SetUpTestCase()54 void StkControllerTest::SetUpTestCase() {}
55
56 HWTEST_F(StkControllerTest, Telephony_Sim_ProcessEvent_001, Function | MediumTest | Level1)
57 {
58 auto telRilManager = std::make_shared<TelRilManager>();
59 auto simStateManager = std::make_shared<SimStateManager>(telRilManager);
60 auto stkController = std::make_shared<StkController>(telRilManager, simStateManager, 0);
61 AppExecFwk::InnerEvent::Pointer event1 = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_STK_SESSION_END, 1);
62 stkController->ProcessEvent(event1);
63 usleep(SLEEP_TIME);
64
65 AppExecFwk::InnerEvent::Pointer event2 = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_STK_PROACTIVE_COMMAND, 1);
66 stkController->ProcessEvent(event2);
67 usleep(SLEEP_TIME);
68
69 AppExecFwk::InnerEvent::Pointer event3 = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_STK_ALPHA_NOTIFY, 1);
70 stkController->ProcessEvent(event3);
71 usleep(SLEEP_TIME);
72
73 AppExecFwk::InnerEvent::Pointer event4 = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_STK_EVENT_NOTIFY, 1);
74 stkController->ProcessEvent(event4);
75 usleep(SLEEP_TIME);
76
77 AppExecFwk::InnerEvent::Pointer event5 = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_STK_CALL_SETUP, 1);
78 stkController->ProcessEvent(event5);
79 usleep(SLEEP_TIME);
80
81 AppExecFwk::InnerEvent::Pointer event6 = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_ICC_REFRESH, 1);
82 stkController->ProcessEvent(event6);
83 usleep(SLEEP_TIME);
84
85 AppExecFwk::InnerEvent::Pointer event7 = AppExecFwk::InnerEvent::Get(
86 RadioEvent::RADIO_STK_SEND_TERMINAL_RESPONSE, 1);
87 stkController->ProcessEvent(event7);
88 usleep(SLEEP_TIME);
89
90 AppExecFwk::InnerEvent::Pointer event8 = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_STK_SEND_ENVELOPE, 1);
91 stkController->ProcessEvent(event8);
92 usleep(SLEEP_TIME);
93
94 stkController->remainTryCount_ = 1;
95 AppExecFwk::InnerEvent::Pointer event9 = AppExecFwk::InnerEvent::Get(
96 StkController::RETRY_SEND_RIL_PROACTIVE_COMMAND, 1);
97 stkController->ProcessEvent(event9);
98 usleep(SLEEP_TIME);
99
100 AppExecFwk::InnerEvent::Pointer event10 = AppExecFwk::InnerEvent::Get(
101 StkController::RETRY_SEND_RIL_PROACTIVE_COMMAND, 1);
102 stkController->ProcessEvent(event10);
103 EXPECT_EQ(stkController->remainTryCount_, -1);
104 }
105
106 HWTEST_F(StkControllerTest, Telephony_Sim_ProcessEvent_002, Function | MediumTest | Level1)
107 {
108 auto telRilManager = std::make_shared<TelRilManager>();
109 auto simStateManager = std::make_shared<SimStateManager>(telRilManager);
110 auto stkController = std::make_shared<StkController>(telRilManager, simStateManager, 0);
111
112 stkController->iccCardState_ = 1;
113 std::shared_ptr<Int32Parcel> object = nullptr;
114 AppExecFwk::InnerEvent::Pointer event0 = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_STATE_CHANGED, object);
115 stkController->ProcessEvent(event0);
116 usleep(SLEEP_TIME);
117 EXPECT_EQ(stkController->iccCardState_, 1);
118
119 object = std::make_shared<Int32Parcel>(1);
120 AppExecFwk::InnerEvent::Pointer event1 = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_STATE_CHANGED, object);
121 stkController->ProcessEvent(event1);
122 usleep(SLEEP_TIME);
123 EXPECT_EQ(stkController->iccCardState_, 1);
124
125 object->data = -1;
126 AppExecFwk::InnerEvent::Pointer event2 = AppExecFwk::InnerEvent::Get(RadioEvent::RADIO_STATE_CHANGED, object);
127 stkController->ProcessEvent(event2);
128 usleep(SLEEP_TIME);
129 EXPECT_EQ(stkController->iccCardState_, 0);
130 }
131
132 }
133 }