14d949f91Sopenharmony_ci/*
24d949f91Sopenharmony_ci * Copyright (C) 2024 Huawei Device Co., Ltd.
34d949f91Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
44d949f91Sopenharmony_ci * you may not use this file except in compliance with the License.
54d949f91Sopenharmony_ci * You may obtain a copy of the License at
64d949f91Sopenharmony_ci *
74d949f91Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
84d949f91Sopenharmony_ci *
94d949f91Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
104d949f91Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
114d949f91Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
124d949f91Sopenharmony_ci * See the License for the specific language governing permissions and
134d949f91Sopenharmony_ci * limitations under the License.
144d949f91Sopenharmony_ci */
154d949f91Sopenharmony_ci
164d949f91Sopenharmony_ci#include "gtest/gtest.h"
174d949f91Sopenharmony_ci
184d949f91Sopenharmony_ci#include "port.h"
194d949f91Sopenharmony_ci#include "filter.h"
204d949f91Sopenharmony_ci
214d949f91Sopenharmony_ciusing namespace testing::ext;
224d949f91Sopenharmony_ci
234d949f91Sopenharmony_cinamespace OHOS {
244d949f91Sopenharmony_cinamespace Media {
254d949f91Sopenharmony_cinamespace Effect {
264d949f91Sopenharmony_cinamespace Test {
274d949f91Sopenharmony_ci
284d949f91Sopenharmony_ciclass TestPort : public testing::Test {
294d949f91Sopenharmony_cipublic:
304d949f91Sopenharmony_ci    TestPort() = default;
314d949f91Sopenharmony_ci
324d949f91Sopenharmony_ci    ~TestPort() override = default;
334d949f91Sopenharmony_ci    static void SetUpTestCase() {}
344d949f91Sopenharmony_ci
354d949f91Sopenharmony_ci    static void TearDownTestCase() {}
364d949f91Sopenharmony_ci
374d949f91Sopenharmony_ci    void SetUp() override{}
384d949f91Sopenharmony_ci
394d949f91Sopenharmony_ci    void TearDown() override{}
404d949f91Sopenharmony_ci};
414d949f91Sopenharmony_ci
424d949f91Sopenharmony_ciHWTEST_F(TestPort, PullData001, TestSize.Level1) {
434d949f91Sopenharmony_ci    InfoTransfer *filterPtr = nullptr;
444d949f91Sopenharmony_ci
454d949f91Sopenharmony_ci    InPort inPort(filterPtr);
464d949f91Sopenharmony_ci    std::shared_ptr<EffectBuffer> buffer = nullptr;
474d949f91Sopenharmony_ci    ErrorCode result = inPort.PullData(buffer);
484d949f91Sopenharmony_ci    EXPECT_NE(result, ErrorCode::SUCCESS);
494d949f91Sopenharmony_ci
504d949f91Sopenharmony_ci    OutPort outPort(filterPtr);
514d949f91Sopenharmony_ci    result = outPort.PullData(buffer);
524d949f91Sopenharmony_ci    EXPECT_NE(result, ErrorCode::SUCCESS);
534d949f91Sopenharmony_ci
544d949f91Sopenharmony_ci    EmptyInPort emptyInPort;
554d949f91Sopenharmony_ci    result = emptyInPort.PullData(buffer);
564d949f91Sopenharmony_ci    EXPECT_NE(result, ErrorCode::SUCCESS);
574d949f91Sopenharmony_ci
584d949f91Sopenharmony_ci    EmptyOutPort emptyOutPort;
594d949f91Sopenharmony_ci    result = emptyOutPort.PullData(buffer);
604d949f91Sopenharmony_ci    EXPECT_NE(result, ErrorCode::SUCCESS);
614d949f91Sopenharmony_ci
624d949f91Sopenharmony_ci    std::shared_ptr<Port> port = nullptr;
634d949f91Sopenharmony_ci    result = outPort.Connect(port);
644d949f91Sopenharmony_ci    EXPECT_NE(result, ErrorCode::SUCCESS);
654d949f91Sopenharmony_ci
664d949f91Sopenharmony_ci    result = outPort.Disconnect();
674d949f91Sopenharmony_ci    EXPECT_EQ(result, ErrorCode::SUCCESS);
684d949f91Sopenharmony_ci
694d949f91Sopenharmony_ci    result = emptyInPort.Connect(port);
704d949f91Sopenharmony_ci    EXPECT_NE(result, ErrorCode::SUCCESS);
714d949f91Sopenharmony_ci
724d949f91Sopenharmony_ci    result = emptyOutPort.Connect(port);
734d949f91Sopenharmony_ci    EXPECT_NE(result, ErrorCode::SUCCESS);
744d949f91Sopenharmony_ci
754d949f91Sopenharmony_ci    std::vector<WorkMode> modes;
764d949f91Sopenharmony_ci    WorkMode outMode;
774d949f91Sopenharmony_ci    result = outPort.Activate(modes, outMode);
784d949f91Sopenharmony_ci    EXPECT_NE(result, ErrorCode::SUCCESS);
794d949f91Sopenharmony_ci
804d949f91Sopenharmony_ci    result = emptyInPort.Activate(modes, outMode);
814d949f91Sopenharmony_ci    EXPECT_NE(result, ErrorCode::SUCCESS);
824d949f91Sopenharmony_ci
834d949f91Sopenharmony_ci    result = emptyOutPort.Activate(modes, outMode);
844d949f91Sopenharmony_ci    EXPECT_NE(result, ErrorCode::SUCCESS);
854d949f91Sopenharmony_ci
864d949f91Sopenharmony_ci    std::shared_ptr<Port> res = outPort.GetPeerPort();
874d949f91Sopenharmony_ci    EXPECT_EQ(res, nullptr);
884d949f91Sopenharmony_ci
894d949f91Sopenharmony_ci    res = inPort.GetPeerPort();
904d949f91Sopenharmony_ci    EXPECT_EQ(res, nullptr);
914d949f91Sopenharmony_ci
924d949f91Sopenharmony_ci    const std::shared_ptr<Capability> capability;
934d949f91Sopenharmony_ci    std::shared_ptr<EffectContext> context;
944d949f91Sopenharmony_ci    emptyInPort.Negotiate(capability, context);
954d949f91Sopenharmony_ci
964d949f91Sopenharmony_ci    emptyOutPort.Negotiate(capability, context);
974d949f91Sopenharmony_ci
984d949f91Sopenharmony_ci    std::string capabilityName = "test";
994d949f91Sopenharmony_ci    const std::shared_ptr<Capability> capabilityShared = std::make_shared<Capability>(capabilityName);
1004d949f91Sopenharmony_ci    std::shared_ptr<EffectContext> contextShared = std::make_shared<EffectContext>();
1014d949f91Sopenharmony_ci    emptyOutPort.Negotiate(capabilityShared, contextShared);
1024d949f91Sopenharmony_ci
1034d949f91Sopenharmony_ci    emptyInPort.Negotiate(capabilityShared, contextShared);
1044d949f91Sopenharmony_ci}
1054d949f91Sopenharmony_ci}
1064d949f91Sopenharmony_ci}
1074d949f91Sopenharmony_ci}
1084d949f91Sopenharmony_ci}