1/*
2 * Copyright (C) 2022 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 "gtest/gtest.h"
19#include "config_request.h"
20#include "call_manager_inner_type.h"
21#include "ims_call_client.h"
22#include "cellular_call_service.h"
23#include "ims_feature.h"
24
25namespace OHOS {
26namespace Telephony {
27using namespace testing::ext;
28class ConfigRequestTest : public testing::Test {
29public:
30    static void SetUpTestCase();
31    static void TearDownTestCase();
32    void SetUp();
33    void TearDown();
34};
35void ConfigRequestTest::SetUpTestCase() {}
36
37void ConfigRequestTest::TearDownTestCase() {}
38
39void ConfigRequestTest::SetUp() {}
40
41void ConfigRequestTest::TearDown() {}
42
43/**
44 * @tc.number   Telephony_ConfigRequestTest_0001
45 * @tc.name     Test EmergencyUtilsTest SetImsSwitchStatusRequest
46 * @tc.desc     Function test
47 */
48HWTEST_F(ConfigRequestTest, ConfigRequestTest_0001, Function | MediumTest | Level1)
49{
50    ConfigRequest configRequest;
51    DelayedSingleton<ImsCallClient>::GetInstance()->UnInit();
52    int32_t slotId = 0;
53    bool active = true;
54    EXPECT_EQ(configRequest.SetImsSwitchStatusRequest(slotId, active), CALL_ERR_RESOURCE_UNAVAILABLE);
55}
56
57/**
58 * @tc.number   Telephony_ConfigRequestTest_0002
59 * @tc.name     Test EmergencyUtilsTest SetVoNRSwitchStatusRequest
60 * @tc.desc     Function test
61 */
62HWTEST_F(ConfigRequestTest, ConfigRequestTest_0002, Function | MediumTest | Level1)
63{
64    ConfigRequest configRequest;
65    int32_t slotId = 0;
66    int32_t state = 0;
67    EXPECT_EQ(configRequest.SetVoNRSwitchStatusRequest(slotId, state), CALL_ERR_RESOURCE_UNAVAILABLE);
68
69    DelayedSingleton<CellularCallService>::GetInstance()->Init();
70    EXPECT_NE(configRequest.SetVoNRSwitchStatusRequest(slotId, state), TELEPHONY_SUCCESS);
71}
72
73/**
74 * @tc.number   Telephony_ConfigRequestTest_0003
75 * @tc.name     Test EmergencyUtilsTest SetVoNRSwitchStatusRequest
76 * @tc.desc     Function test
77 */
78HWTEST_F(ConfigRequestTest, ConfigRequestTest_0003, Function | MediumTest | Level1)
79{
80    ConfigRequest configRequest;
81    int32_t slotId = 0;
82    configRequest.GetImsSwitchStatusRequest(slotId);
83
84    DelayedSingleton<ImsCallClient>::GetInstance()->UnInit();
85    EXPECT_EQ(configRequest.GetImsSwitchStatusRequest(slotId), CALL_ERR_RESOURCE_UNAVAILABLE);
86}
87
88/**
89 * @tc.number   Telephony_ConfigRequestTest_0004
90 * @tc.name     Test EmergencyUtilsTest SetVoNRSwitchStatusRequest
91 * @tc.desc     Function test
92 */
93HWTEST_F(ConfigRequestTest, ConfigRequestTest_0004, Function | MediumTest | Level1)
94{
95    ConfigRequest configRequest;
96    std::string value;
97    int32_t intValue = 1;
98    configRequest.SetImsConfigRequest(ImsConfigItem::ITEM_VIDEO_QUALITY, value);
99    configRequest.SetImsConfigRequest(ImsConfigItem::ITEM_VIDEO_QUALITY, intValue);
100    configRequest.SetImsFeatureValueRequest(FeatureType::TYPE_VOICE_OVER_LTE, intValue);
101
102    DelayedSingleton<ImsCallClient>::GetInstance()->UnInit();
103    EXPECT_EQ(configRequest.SetImsConfigRequest(ImsConfigItem::ITEM_VIDEO_QUALITY, value),
104        CALL_ERR_RESOURCE_UNAVAILABLE);
105    EXPECT_EQ(configRequest.SetImsConfigRequest(ImsConfigItem::ITEM_VIDEO_QUALITY, intValue),
106        CALL_ERR_RESOURCE_UNAVAILABLE);
107    EXPECT_EQ(configRequest.GetImsFeatureValueRequest(FeatureType::TYPE_VOICE_OVER_LTE, intValue),
108        CALL_ERR_RESOURCE_UNAVAILABLE);
109}
110
111/**
112 * @tc.number   Telephony_ConfigRequestTest_0005
113 * @tc.name     Test EmergencyUtilsTest SetVoNRSwitchStatusRequest
114 * @tc.desc     Function test
115 */
116HWTEST_F(ConfigRequestTest, ConfigRequestTest_0005, Function | MediumTest | Level1)
117{
118    ConfigRequest configRequest;
119    ImsConfigItem item = ITEM_VIDEO_QUALITY;
120    configRequest.GetImsConfigRequest(item);
121
122    DelayedSingleton<ImsCallClient>::GetInstance()->UnInit();
123    EXPECT_EQ(configRequest.GetImsConfigRequest(item), CALL_ERR_RESOURCE_UNAVAILABLE);
124
125    int32_t slotId = 0;
126    ImsCapabilityList imsCapList;
127    EXPECT_EQ(configRequest.UpdateImsCapabilities(slotId, imsCapList), CALL_ERR_RESOURCE_UNAVAILABLE);
128}
129
130/**
131 * @tc.number   Telephony_ConfigRequestTest_0006
132 * @tc.name     Test EmergencyUtilsTest SetVoNRSwitchStatusRequest
133 * @tc.desc     Function test
134 */
135HWTEST_F(ConfigRequestTest, ConfigRequestTest_0006, Function | MediumTest | Level1)
136{
137    ConfigRequest configRequest;
138    int32_t slotId = 0;
139    int32_t mute = 1;
140    configRequest.SetMuteRequest(slotId, mute);
141    configRequest.GetMuteRequest(slotId);
142
143    DelayedSingleton<ImsCallClient>::GetInstance()->UnInit();
144    DelayedSingleton<CellularCallService>::GetInstance()->Init();
145    EXPECT_NE(configRequest.SetMuteRequest(slotId, mute), TELEPHONY_SUCCESS);
146    EXPECT_NE(configRequest.GetMuteRequest(slotId), TELEPHONY_SUCCESS);
147}
148
149/**
150 * @tc.number   Telephony_ConfigRequestTest_0007
151 * @tc.name     Test EmergencyUtilsTest SetVoNRSwitchStatusRequest
152 * @tc.desc     Function test
153 */
154HWTEST_F(ConfigRequestTest, ConfigRequestTest_0007, Function | MediumTest | Level1)
155{
156    ConfigRequest configRequest;
157    int32_t slotId = -1;
158    std::vector<EmergencyCall> eccVec;
159    DelayedSingleton<CellularCallService>::GetInstance()->Init();
160    EXPECT_EQ(configRequest.GetEmergencyCallListRequest(slotId), CALL_ERR_RESOURCE_UNAVAILABLE);
161    EXPECT_EQ(configRequest.SetEmergencyCallListRequest(slotId, eccVec), CALL_ERR_RESOURCE_UNAVAILABLE);
162}
163} // namespace Telephony
164} // namespace OHOS