1 /*
2 * Copyright (c) 2023 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 <test_header.h>
18
19 #include "hgm_vsync_generator_controller.h"
20 #include "common/rs_common_def.h"
21 #include "pipeline/rs_render_frame_rate_linker.h"
22 #include "vsync_controller.h"
23 #include "vsync_generator.h"
24
25 using namespace testing;
26 using namespace testing::ext;
27
28 namespace OHOS {
29 namespace Rosen {
30 namespace {
31 sptr<VSyncGenerator> vsyncGenerator = CreateVSyncGenerator();
32 sptr<VSyncController> rsController = new VSyncController(vsyncGenerator, 0);
33 sptr<VSyncController> appController = new VSyncController(vsyncGenerator, 0);
34 std::shared_ptr<HgmVSyncGeneratorController> controller =
35 std::make_shared<HgmVSyncGeneratorController>(rsController, appController, vsyncGenerator);
36 }
37 class HgmVSyncGeneratorControllerTest : public testing::Test {
38 public:
39 static void SetUpTestCase();
40 static void TearDownTestCase();
41 void SetUp();
42 void TearDown();
43 };
44
SetUpTestCase()45 void HgmVSyncGeneratorControllerTest::SetUpTestCase() {}
TearDownTestCase()46 void HgmVSyncGeneratorControllerTest::TearDownTestCase() {}
SetUp()47 void HgmVSyncGeneratorControllerTest::SetUp() {}
TearDown()48 void HgmVSyncGeneratorControllerTest::TearDown() {}
49
50 /*
51 * @tc.name: ChangeGeneratorRate
52 * @tc.desc: Test ChangeGeneratorRate
53 * @tc.type: FUNC
54 * @tc.require:
55 */
56 HWTEST_F(HgmVSyncGeneratorControllerTest, ChangeGeneratorRate, TestSize.Level1)
57 {
58 ASSERT_NE(controller, nullptr);
59 std::vector<std::pair<FrameRateLinkerId, uint32_t>> appChangeData = {{1, 30}, {2, 60}, {3, 120}};
60 uint32_t controllerRate1 = 30;
61 controller->ChangeGeneratorRate(controllerRate1, appChangeData);
62 uint32_t controllerRate2 = 60;
63 controller->ChangeGeneratorRate(controllerRate2, appChangeData);
64 uint32_t controllerRate3 = 90;
65 controller->ChangeGeneratorRate(controllerRate3, appChangeData);
66 uint32_t controllerRate4 = 120;
67 controller->ChangeGeneratorRate(controllerRate4, appChangeData);
68 }
69
70 /*
71 * @tc.name: GetCurrentOffset
72 * @tc.desc: Test ChangeGeneratorRate
73 * @tc.type: FUNC
74 * @tc.require:
75 */
76 HWTEST_F(HgmVSyncGeneratorControllerTest, GetCurrentOffset, TestSize.Level1)
77 {
78 ASSERT_NE(controller, nullptr);
79 std::vector<std::pair<FrameRateLinkerId, uint32_t>> appChangeData = {{1, 30}, {2, 60}, {3, 120}};
80 controller->ChangeGeneratorRate(30, appChangeData);
81 EXPECT_EQ(controller->GetCurrentOffset(), 0);
82 }
83
84 /*
85 * @tc.name: GetCurrentRate
86 * @tc.desc: Test GetCurrentRate
87 * @tc.type: FUNC
88 * @tc.require:
89 */
90 HWTEST_F(HgmVSyncGeneratorControllerTest, GetCurrentRate, TestSize.Level1)
91 {
92 ASSERT_NE(controller, nullptr);
93 std::vector<std::pair<FrameRateLinkerId, uint32_t>> appChangeData = {{1, 30}, {2, 60}, {3, 120}};
94 controller->ChangeGeneratorRate(60, appChangeData);
95 EXPECT_EQ(controller->GetCurrentRate(), 60);
96 }
97 } // namespace Rosen
98 } // namespace OHOS
99