1/*
2 * Copyright (C) 2024 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#include "satellite_sms_callback.h"
16#include "sms_common.h"
17#include "telephony_errors.h"
18#include "gtest/gtest.h"
19#define private public
20#define protected public
21#include "mms_receive_manager.h"
22#include "satellite_sms_client.h"
23#include "mms_send_manager.h"
24#undef private
25#undef protected
26
27namespace OHOS {
28namespace Telephony {
29using namespace testing::ext;
30
31class MmsReceiveManagerTest : public testing::Test {
32public:
33    static void SetUpTestCase();
34    static void TearDownTestCase();
35    void SetUp();
36    void TearDown();
37};
38void MmsReceiveManagerTest::SetUpTestCase() {}
39void MmsReceiveManagerTest::TearDownTestCase() {}
40void MmsReceiveManagerTest::SetUp() {}
41void MmsReceiveManagerTest::TearDown() {}
42
43/**
44 * @tc.number   MmsReceiveManagerTest_001
45 * @tc.name     MmsReceiveManagerTest_001
46 * @tc.desc     Function test
47 */
48HWTEST_F(MmsReceiveManagerTest, MmsReceiveManagerTest_001, Function | MediumTest | Level1)
49{
50    MmsReceiveManager recvMgr(1);
51    std::u16string mmsc = u"mmsc";
52    std::u16string data;
53    std::u16string ua = u"ua";
54    std::u16string uaprof = u"uaprof";
55    recvMgr.Init();
56    EXPECT_NE(recvMgr.DownloadMms(mmsc, data, ua, uaprof), TELEPHONY_ERR_SUCCESS);
57}
58
59/**
60 * @tc.number   MmsReceiveManagerTest_002
61 * @tc.name     MmsReceiveManagerTest_001
62 * @tc.desc     Function test
63 */
64HWTEST_F(MmsReceiveManagerTest, MmsReceiveManagerTest_002, Function | MediumTest | Level1)
65{
66    MmsReceiveManager recvMgr(1);
67    std::u16string mmsc = u"mmsc";
68    std::u16string data;
69    std::u16string ua = u"ua";
70    std::u16string uaprof = u"uaprof";
71    recvMgr.Init();
72    recvMgr.mmsReceiver_ = nullptr;
73    EXPECT_EQ(recvMgr.DownloadMms(mmsc, data, ua, uaprof), TELEPHONY_ERR_LOCAL_PTR_NULL);
74}
75
76/**
77 * @tc.number   SatelliteSmsClient_001
78 * @tc.name     SatelliteSmsClient_001
79 * @tc.desc     Function test
80 */
81HWTEST_F(MmsReceiveManagerTest, SatelliteSmsClient_001, Function | MediumTest | Level1)
82{
83    auto &satelliteSmsClient = SatelliteSmsClient::GetInstance();
84    EXPECT_EQ(nullptr, satelliteSmsClient.GetProxy());
85    satelliteSmsClient.RemoveDeathRecipient(nullptr, true);
86    satelliteSmsClient.RemoveDeathRecipient(nullptr, false);
87
88    int32_t slotId = 1;
89    EXPECT_EQ(TELEPHONY_ERR_LOCAL_PTR_NULL, satelliteSmsClient.AddSendHandler(slotId, nullptr));
90    const std::shared_ptr<TelEventHandler> sender = std::make_shared<MmsSendManager>(slotId);
91    EXPECT_EQ(TELEPHONY_SUCCESS, satelliteSmsClient.AddSendHandler(slotId, sender));
92}
93/**
94 * @tc.number   SatelliteSmsClient_002
95 * @tc.name     SatelliteSmsClient_002
96 * @tc.desc     Function test
97 */
98HWTEST_F(MmsReceiveManagerTest, SatelliteSmsClient_002, Function | MediumTest | Level1)
99{
100    auto &satelliteSmsClient = SatelliteSmsClient::GetInstance();
101    EXPECT_EQ(nullptr, satelliteSmsClient.GetProxy());
102
103    int32_t slotId = 1;
104    EXPECT_EQ(TELEPHONY_ERR_LOCAL_PTR_NULL, satelliteSmsClient.AddReceiveHandler(slotId, nullptr));
105    const std::shared_ptr<TelEventHandler> receiver = std::make_shared<MmsReceiveManager>(slotId);
106    EXPECT_EQ(TELEPHONY_SUCCESS, satelliteSmsClient.AddReceiveHandler(slotId, receiver));
107}
108
109/**
110 * @tc.number   SatelliteSmsClient_003
111 * @tc.name     SatelliteSmsClient_003
112 * @tc.desc     Function test
113 */
114HWTEST_F(MmsReceiveManagerTest, SatelliteSmsClient_003, Function | MediumTest | Level1)
115{
116    auto &satelliteSmsClient = SatelliteSmsClient::GetInstance();
117    EXPECT_EQ(nullptr, satelliteSmsClient.GetProxy());
118    int32_t slotId = 1;
119    satelliteSmsClient.senderMap_.clear();
120    satelliteSmsClient.receiverMap_.clear();
121    satelliteSmsClient.senderMap_[slotId] = nullptr;
122    ASSERT_EQ(satelliteSmsClient.senderMap_.size(), 1);
123    satelliteSmsClient.ServiceOn();
124    satelliteSmsClient.senderMap_.clear();
125
126    satelliteSmsClient.receiverMap_[slotId] = nullptr;
127    satelliteSmsClient.ServiceOn();
128    satelliteSmsClient.receiverMap_.clear();
129}
130}
131}
132