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 
16 #include <gtest/gtest.h>
17 #include "avsession_errors.h"
18 #include "avsession_log.h"
19 #include "av_session.h"
20 #include "avsession_item.h"
21 #include "avsession_service.h"
22 #include "avsession_info.h"
23 #include "avplayback_state.h"
24 #include "remote_session_source_impl.h"
25 #include "remote_session_source_proxy.h"
26 
27 namespace OHOS::AVSession {
28 
29 sptr <AVSessionService> g_AVSessionService = nullptr;
30 sptr <AVSessionItem> g_AVSessionItem = nullptr;
31 std::shared_ptr<RemoteSessionSource> g_RemoteSessionSource;
32 
33 class RemoteSessionSourceTest : public testing::Test {
34 public:
35     static void SetUpTestCase(void);
36     static void TearDownTestCase(void);
37     void SetUp();
38     void TearDown();
39 };
40 
SetUpTestCase()41 void RemoteSessionSourceTest::SetUpTestCase()
42 {
43     g_AVSessionService = new AVSessionService(OHOS::AVSESSION_SERVICE_ID);
44     OHOS::AppExecFwk::ElementName elementName;
45     elementName.SetBundleName("testRemoteSource.ohos.g_AVSessionItem");
46     elementName.SetAbilityName("testRemoteSource.ability");
47     g_AVSessionItem = g_AVSessionService->CreateSessionInner("testRemoteSource",
48         AVSession::SESSION_TYPE_VOICE_CALL, false, elementName);
49     std::string sourceDevice = "sourceDevice";
50     std::string sinkDevice = "sinkDevice";
51     std::string sinkCapability = "sinkCapability";
52     g_RemoteSessionSource = std::make_shared<RemoteSessionSourceProxy>();
53     ASSERT_NE(g_RemoteSessionSource, nullptr);
54     g_RemoteSessionSource->CastSessionToRemote(g_AVSessionItem, sourceDevice, sinkDevice, sinkCapability);
55 }
56 
TearDownTestCase()57 void RemoteSessionSourceTest::TearDownTestCase()
58 {
59     g_AVSessionItem->Destroy();
60     g_AVSessionService->Close();
61 }
62 
SetUp()63 void RemoteSessionSourceTest::SetUp()
64 {
65 }
66 
TearDown()67 void RemoteSessionSourceTest::TearDown()
68 {
69 }
70 
71 /**
72  * @tc.name: SetAVMetaData001
73  * @tc.desc: Test SetAVMetaData
74  * @tc.type: FUNC
75  */
HWTEST_F(RemoteSessionSourceTest, SetAVMetaData001, testing::ext::TestSize.Level1)76 static HWTEST_F(RemoteSessionSourceTest, SetAVMetaData001, testing::ext::TestSize.Level1)
77 {
78     SLOGI("SetAVMetaData001 begin!");
79     AVMetaData metaData;
80     int32_t ret = g_RemoteSessionSource->SetAVMetaData(metaData);
81     EXPECT_EQ(ret, AVSESSION_ERROR);
82     SLOGI("SetAVMetaData001 end!");
83 }
84 
85 /**
86  * @tc.name: SetAVPlaybackState001
87  * @tc.desc: Test SetAVPlaybackState
88  * @tc.type: FUNC
89  */
HWTEST_F(RemoteSessionSourceTest, SetAVPlaybackState001, testing::ext::TestSize.Level1)90 static HWTEST_F(RemoteSessionSourceTest, SetAVPlaybackState001, testing::ext::TestSize.Level1)
91 {
92     SLOGI("SetAVPlaybackState001 begin!");
93     AVPlaybackState state;
94     int32_t ret = g_RemoteSessionSource->SetAVPlaybackState(state);
95     EXPECT_EQ(ret, AVSESSION_ERROR);
96     SLOGI("SetAVPlaybackState001 end!");
97 }
98 
99 /**
100  * @tc.name: SetSessionEventRemote001
101  * @tc.desc: Test SetSessionEventRemote
102  * @tc.type: FUNC
103  */
HWTEST_F(RemoteSessionSourceTest, SetSessionEventRemote001, testing::ext::TestSize.Level1)104 static HWTEST_F(RemoteSessionSourceTest, SetSessionEventRemote001, testing::ext::TestSize.Level1)
105 {
106     SLOGI("SetSessionEventRemote001 begin!");
107     std::string event = "event";
108     AAFwk::WantParams args;
109     int32_t ret = g_RemoteSessionSource->SetSessionEventRemote(event, args);
110     EXPECT_EQ(ret, AVSESSION_ERROR);
111     SLOGI("SetSessionEventRemote001 end!");
112 }
113 
114 /**
115  * @tc.name: SetAVQueueItems001
116  * @tc.desc: Test SetAVQueueItems
117  * @tc.type: FUNC
118  */
HWTEST_F(RemoteSessionSourceTest, SetAVQueueItems001, testing::ext::TestSize.Level1)119 static HWTEST_F(RemoteSessionSourceTest, SetAVQueueItems001, testing::ext::TestSize.Level1)
120 {
121     SLOGI("SetAVQueueItems001 begin!");
122     std::vector<AVQueueItem> items;
123     int32_t ret = g_RemoteSessionSource->SetAVQueueItems(items);
124     EXPECT_EQ(ret, AVSESSION_ERROR);
125     SLOGI("SetAVQueueItems001 end!");
126 }
127 
128 /**
129  * @tc.name: SetAVQueueTitle001
130  * @tc.desc: Test SetAVQueueTitle
131  * @tc.type: FUNC
132  */
HWTEST_F(RemoteSessionSourceTest, SetAVQueueTitle001, testing::ext::TestSize.Level1)133 static HWTEST_F(RemoteSessionSourceTest, SetAVQueueTitle001, testing::ext::TestSize.Level1)
134 {
135     SLOGI("SetAVQueueTitle001 begin!");
136     std::string title = "title";
137     int32_t ret = g_RemoteSessionSource->SetAVQueueTitle(title);
138     EXPECT_EQ(ret, AVSESSION_ERROR);
139     SLOGI("SetAVQueueTitle001 end!");
140 }
141 
142 /**
143  * @tc.name: GetSinkPlaybackStateMaskType001
144  * @tc.desc: Test GetSinkPlaybackStateMaskType
145  * @tc.type: FUNC
146  */
HWTEST_F(RemoteSessionSourceTest, GetSinkPlaybackStateMaskType001, testing::ext::TestSize.Level1)147 static HWTEST_F(RemoteSessionSourceTest, GetSinkPlaybackStateMaskType001, testing::ext::TestSize.Level1)
148 {
149     SLOGI("GetSinkPlaybackStateMaskType001 begin!");
150     AAFwk::WantParams extras;
151     int32_t ret = g_RemoteSessionSource->SetExtrasRemote(extras);
152     EXPECT_EQ(ret, AVSESSION_ERROR);
153     SLOGI("GetSinkPlaybackStateMaskType001 end!");
154 }
155 
156 }