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 "core/components_ng/manager/frame_rate/frame_rate_manager.h"
18 #include "test/mock/core/pipeline/mock_pipeline_context.h"
19
20 using namespace testing;
21 using namespace testing::ext;
22 namespace OHOS::Ace::NG {
23 class FrameRateRangeTest : public testing::Test {
24 public:
25 static void SetUpTestCase();
26 static void TearDownTestCase();
27 };
28
SetUpTestCase()29 void FrameRateRangeTest::SetUpTestCase()
30 {
31 MockPipelineContext::SetUp();
32 }
33
TearDownTestCase()34 void FrameRateRangeTest::TearDownTestCase()
35 {
36 MockPipelineContext::TearDown();
37 }
38
39 /**
40 * @tc.name: RateChangedTest
41 * @tc.desc: RateChanged Set and Get test.
42 * @tc.type: FUNC
43 */
44 HWTEST_F(FrameRateRangeTest, RateChangedTest, TestSize.Level1)
45 {
46 FrameRateManager frameRageManager;
47 EXPECT_EQ(false, frameRageManager.IsRateChanged());
48 frameRageManager.SetIsRateChanged(true);
49 EXPECT_EQ(true, frameRageManager.IsRateChanged());
50 }
51
52 /**
53 * @tc.name: NodeRateTest
54 * @tc.desc: NodeRateTest Add and Remove and Update test.
55 * @tc.type: FUNC
56 */
57 HWTEST_F(FrameRateRangeTest, NodeRateTest, TestSize.Level1)
58 {
59 int32_t nodeId = 1;
60 int32_t nodeId2 = 2;
61 int32_t rate1 = 60;
62 int32_t rate2 = 120;
63 FrameRateManager frameRageManager;
64 EXPECT_EQ(false, frameRageManager.IsRateChanged());
65 frameRageManager.AddNodeRate(nodeId, rate1);
66 EXPECT_EQ(true, frameRageManager.IsRateChanged());
67
68 frameRageManager.SetIsRateChanged(false);
69 frameRageManager.AddNodeRate(nodeId, rate2);
70 EXPECT_EQ(false, frameRageManager.IsRateChanged());
71
72 frameRageManager.SetIsRateChanged(false);
73 frameRageManager.UpdateNodeRate(nodeId2, rate2);
74 EXPECT_EQ(false, frameRageManager.IsRateChanged());
75 frameRageManager.UpdateNodeRate(nodeId, rate2);
76 EXPECT_EQ(true, frameRageManager.IsRateChanged());
77
78 frameRageManager.SetIsRateChanged(false);
79 frameRageManager.RemoveNodeRate(nodeId2);
80 EXPECT_EQ(false, frameRageManager.IsRateChanged());
81 frameRageManager.RemoveNodeRate(nodeId);
82 EXPECT_EQ(true, frameRageManager.IsRateChanged());
83 }
84
85 /**
86 * @tc.name: GetDisplaySyncRate
87 * @tc.desc: GetDisplaySyncRate test.
88 * @tc.type: FUNC
89 */
90 HWTEST_F(FrameRateRangeTest, GetDisplaySyncRate, TestSize.Level1)
91 {
92 int32_t nodeId = 1;
93 int32_t rate = 120;
94 int32_t displaySyncRate = 90;
95 int32_t animateRate = 60;
96 FrameRateManager frameRageManager;
97 auto [expectedRate1, expectedRateType1] = frameRageManager.GetExpectedRate();
98 EXPECT_EQ(0, expectedRate1);
99 EXPECT_EQ(0, expectedRateType1);
100 EXPECT_EQ(0, frameRageManager.GetDisplaySyncRate());
101 frameRageManager.SetDisplaySyncRate(displaySyncRate);
102 EXPECT_EQ(displaySyncRate, frameRageManager.GetDisplaySyncRate());
103 EXPECT_EQ(true, frameRageManager.IsRateChanged());
104
105 frameRageManager.SetIsRateChanged(false);
106 frameRageManager.SetDisplaySyncRate(displaySyncRate);
107 EXPECT_EQ(false, frameRageManager.IsRateChanged());
108
109 frameRageManager.SetIsRateChanged(false);
110 frameRageManager.SetAnimateRate(animateRate);
111 EXPECT_EQ(true, frameRageManager.IsRateChanged());
112 frameRageManager.SetIsRateChanged(false);
113 frameRageManager.SetAnimateRate(animateRate);
114 EXPECT_EQ(false, frameRageManager.IsRateChanged());
115
116 frameRageManager.AddNodeRate(nodeId, rate);
117 auto [expectedRate2, expectedRateType2] = frameRageManager.GetExpectedRate();
118 EXPECT_EQ(rate, expectedRate2);
119 EXPECT_EQ(ACE_COMPONENT_FRAME_RATE_TYPE, expectedRateType2);
120 }
121 } // namespace OHOS::Ace::NG