1 /* 2 * Copyright (c) 2022 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 <memory> 17 18 #include "gtest/gtest.h" 19 20 #include "base/geometry/dimension.h" 21 #include "core/pipeline_ng/test/mock/mock_pipeline_base.h" 22 23 using namespace testing; 24 using namespace testing::ext; 25 26 namespace OHOS::Ace { 27 namespace { 28 const double DEFAULT_DOUBLE = 1.0; 29 const double ZERO_DOUBLE = 0.0; 30 31 const Dimension DIMENSION_PX(DEFAULT_DOUBLE, DimensionUnit::PX); 32 const Dimension DIMENSION_VP(DEFAULT_DOUBLE, DimensionUnit::VP); 33 const Dimension DIMENSION_FP(DEFAULT_DOUBLE, DimensionUnit::FP); 34 const Dimension DIMENSION_LPX(DEFAULT_DOUBLE, DimensionUnit::LPX); 35 const Dimension DIMENSION_PCT(DEFAULT_DOUBLE, DimensionUnit::PERCENT); 36 const Dimension DIMENSION_AUTO(DEFAULT_DOUBLE, DimensionUnit::AUTO); 37 const Dimension DIMENSION_CALC(DEFAULT_DOUBLE, DimensionUnit::CALC); 38 39 const std::string DIMENSION_PX_STR = StringUtils::DoubleToString(DEFAULT_DOUBLE).append("px"); 40 const std::string DIMENSION_VP_STR = StringUtils::DoubleToString(DEFAULT_DOUBLE).append("vp"); 41 const std::string DIMENSION_FP_STR = StringUtils::DoubleToString(DEFAULT_DOUBLE).append("fp"); 42 const std::string DIMENSION_LPX_STR = StringUtils::DoubleToString(DEFAULT_DOUBLE).append("lpx"); 43 const std::string DIMENSION_PCT_STR = StringUtils::DoubleToString(DEFAULT_DOUBLE * 100).append("%"); 44 const std::string DIMENSION_AUTO_STR = StringUtils::DoubleToString(DEFAULT_DOUBLE).append("auto"); 45 } // namespace 46 47 class DimensionTest : public testing::Test {}; 48 49 /** 50 * @tc.name: DimensionTest001 51 * @tc.desc: Test the function ConvertToVp of the class Dimension. 52 * @tc.type: FUNC 53 */ 54 HWTEST_F(DimensionTest, DimensionTest001, TestSize.Level1) 55 { 56 /** 57 * @tc.steps1: initialize parameters. 58 */ 59 NG::MockPipelineBase::SetUp(); 60 61 /** 62 * @tc.steps2: Test the function ConvertToVp of the class Dimension. 63 * @tc.expected: The return values are equal to DEFAULT_DOUBLE or ZERO_DOUBLE 64 */ 65 EXPECT_DOUBLE_EQ(DIMENSION_PX.ConvertToVp(), DEFAULT_DOUBLE); 66 EXPECT_DOUBLE_EQ(DIMENSION_VP.ConvertToVp(), DEFAULT_DOUBLE); 67 EXPECT_DOUBLE_EQ(DIMENSION_FP.ConvertToVp(), DEFAULT_DOUBLE); 68 EXPECT_DOUBLE_EQ(DIMENSION_LPX.ConvertToVp(), DEFAULT_DOUBLE); 69 EXPECT_DOUBLE_EQ(DIMENSION_PCT.ConvertToVp(), ZERO_DOUBLE); 70 EXPECT_DOUBLE_EQ(DIMENSION_AUTO.ConvertToVp(), ZERO_DOUBLE); 71 EXPECT_DOUBLE_EQ(DIMENSION_CALC.ConvertToVp(), ZERO_DOUBLE); 72 } 73 74 /** 75 * @tc.name: DimensionTest002 76 * @tc.desc: Test the function ConvertToPx of the class Dimension. 77 * @tc.type: FUNC 78 */ 79 HWTEST_F(DimensionTest, DimensionTest002, TestSize.Level1) 80 { 81 /** 82 * @tc.steps1: initialize parameters. 83 */ 84 NG::MockPipelineBase::SetUp(); 85 86 /** 87 * @tc.steps2: Test the function ConvertToPx of the class Dimension. 88 * @tc.expected: The return values are equal to DEFAULT_DOUBLE or ZERO_DOUBLE. 89 */ 90 EXPECT_DOUBLE_EQ(DIMENSION_PX.ConvertToPx(), DEFAULT_DOUBLE); 91 EXPECT_DOUBLE_EQ(DIMENSION_VP.ConvertToPx(), DEFAULT_DOUBLE); 92 EXPECT_DOUBLE_EQ(DIMENSION_FP.ConvertToPx(), DEFAULT_DOUBLE); 93 EXPECT_DOUBLE_EQ(DIMENSION_LPX.ConvertToPx(), DEFAULT_DOUBLE); 94 EXPECT_DOUBLE_EQ(DIMENSION_PCT.ConvertToPx(), ZERO_DOUBLE); 95 EXPECT_DOUBLE_EQ(DIMENSION_AUTO.ConvertToPx(), ZERO_DOUBLE); 96 EXPECT_DOUBLE_EQ(DIMENSION_CALC.ConvertToPx(), ZERO_DOUBLE); 97 } 98 99 /** 100 * @tc.name: DimensionTest003 101 * @tc.desc: Test the function ToString of the class Dimension. 102 * @tc.type: FUNC 103 */ 104 HWTEST_F(DimensionTest, DimensionTest003, TestSize.Level1) 105 { 106 /** 107 * @tc.steps1: Test the function ToString of the class Dimension. 108 * @tc.expected: The return values are equal to DIMENSION_STR of PX, VP, FP, LPX, PCT and AUTO. 109 */ 110 EXPECT_EQ(DIMENSION_PX.ToString(), DIMENSION_PX_STR); 111 EXPECT_EQ(DIMENSION_VP.ToString(), DIMENSION_VP_STR); 112 EXPECT_EQ(DIMENSION_FP.ToString(), DIMENSION_FP_STR); 113 EXPECT_EQ(DIMENSION_LPX.ToString(), DIMENSION_LPX_STR); 114 EXPECT_EQ(DIMENSION_PCT.ToString(), DIMENSION_PCT_STR); 115 EXPECT_EQ(DIMENSION_AUTO.ToString(), DIMENSION_AUTO_STR); 116 } 117 118 /** 119 * @tc.name: DimensionTest004 120 * @tc.desc: Test the function NormalizeToPx of the class Dimension with -DEFAULT_DOUBLE. 121 * @tc.type: FUNC 122 */ 123 HWTEST_F(DimensionTest, DimensionTest004, TestSize.Level1) 124 { 125 /** 126 * @tc.steps1: Test the function NormalizeToPx of the class Dimension with DIMENSION_PX. 127 * @tc.expected: The return values are equal to DEFAULT_DOUBLE. 128 */ 129 double result = 0; 130 EXPECT_TRUE(DIMENSION_PX.NormalizeToPx(-DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, result)); 131 EXPECT_DOUBLE_EQ(result, DEFAULT_DOUBLE); 132 133 /** 134 * @tc.steps2: Test the function NormalizeToPx of the class Dimension with DIMENSION_VP. 135 * @tc.expected: The return values are equal to ZERO_DOUBLE. 136 */ 137 result = 0; 138 EXPECT_FALSE( 139 DIMENSION_VP.NormalizeToPx(-DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, result)); 140 EXPECT_DOUBLE_EQ(result, ZERO_DOUBLE); 141 142 /** 143 * @tc.steps3: Test the function NormalizeToPx of the class Dimension with DIMENSION_FP. 144 * @tc.expected: The return values are equal to ZERO_DOUBLE. 145 */ 146 result = 0; 147 EXPECT_FALSE( 148 DIMENSION_FP.NormalizeToPx(-DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, result)); 149 EXPECT_DOUBLE_EQ(result, ZERO_DOUBLE); 150 151 /** 152 * @tc.steps4: Test the function NormalizeToPx of the class Dimension with DIMENSION_LPX. 153 * @tc.expected: The return values are equal to ZERO_DOUBLE. 154 */ 155 result = 0; 156 EXPECT_FALSE( 157 DIMENSION_LPX.NormalizeToPx(-DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, result)); 158 EXPECT_DOUBLE_EQ(result, ZERO_DOUBLE); 159 160 /** 161 * @tc.steps5: Test the function NormalizeToPx of the class Dimension with DIMENSION_PCT. 162 * @tc.expected: The return values are equal to ZERO_DOUBLE. 163 */ 164 result = 0; 165 EXPECT_FALSE( 166 DIMENSION_PCT.NormalizeToPx(-DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, result)); 167 EXPECT_DOUBLE_EQ(result, ZERO_DOUBLE); 168 169 /** 170 * @tc.steps6: Test the function NormalizeToPx of the class Dimension with DIMENSION_AUTO. 171 * @tc.expected: The return values are equal to ZERO_DOUBLE. 172 */ 173 result = 0; 174 EXPECT_FALSE( 175 DIMENSION_AUTO.NormalizeToPx(-DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, result)); 176 EXPECT_DOUBLE_EQ(result, ZERO_DOUBLE); 177 178 /** 179 * @tc.steps7: Test the function NormalizeToPx of the class Dimension with DIMENSION_CALC. 180 * @tc.expected: The return values are equal to ZERO_DOUBLE. 181 */ 182 result = 0; 183 EXPECT_FALSE( 184 DIMENSION_CALC.NormalizeToPx(-DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, -DEFAULT_DOUBLE, result)); 185 EXPECT_DOUBLE_EQ(result, ZERO_DOUBLE); 186 } 187 188 /** 189 * @tc.name: DimensionTest005 190 * @tc.desc: Test the function NormalizeToPx of the class Dimension with DEFAULT_DOUBLE. 191 * @tc.type: FUNC 192 */ 193 HWTEST_F(DimensionTest, DimensionTest005, TestSize.Level1) 194 { 195 /** 196 * @tc.steps1: Test the function NormalizeToPx of the class Dimension with DIMENSION_PX. 197 * @tc.expected: The return values are equal to DEFAULT_DOUBLE. 198 */ 199 double result = 0; 200 EXPECT_TRUE(DIMENSION_PX.NormalizeToPx(DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, result)); 201 EXPECT_DOUBLE_EQ(result, DEFAULT_DOUBLE); 202 203 /** 204 * @tc.steps2: Test the function NormalizeToPx of the class Dimension with DIMENSION_VP. 205 * @tc.expected: The return values are equal to DEFAULT_DOUBLE. 206 */ 207 result = 0; 208 EXPECT_TRUE(DIMENSION_VP.NormalizeToPx(DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, result)); 209 EXPECT_DOUBLE_EQ(result, DEFAULT_DOUBLE); 210 211 /** 212 * @tc.steps3: Test the function NormalizeToPx of the class Dimension with DIMENSION_FP. 213 * @tc.expected: The return values are equal to DEFAULT_DOUBLE. 214 */ 215 result = 0; 216 EXPECT_TRUE(DIMENSION_FP.NormalizeToPx(DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, result)); 217 EXPECT_DOUBLE_EQ(result, DEFAULT_DOUBLE); 218 219 /** 220 * @tc.steps4: Test the function NormalizeToPx of the class Dimension with DIMENSION_LPX. 221 * @tc.expected: The return values are equal to DEFAULT_DOUBLE. 222 */ 223 result = 0; 224 EXPECT_TRUE(DIMENSION_LPX.NormalizeToPx(DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, result)); 225 EXPECT_DOUBLE_EQ(result, DEFAULT_DOUBLE); 226 227 /** 228 * @tc.steps5: Test the function NormalizeToPx of the class Dimension with DIMENSION_PCT. 229 * @tc.expected: The return values are equal to DEFAULT_DOUBLE. 230 */ 231 result = 0; 232 EXPECT_TRUE(DIMENSION_PCT.NormalizeToPx(DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, result)); 233 EXPECT_DOUBLE_EQ(result, DEFAULT_DOUBLE); 234 235 /** 236 * @tc.steps6: Test the function NormalizeToPx of the class Dimension with DIMENSION_AUTO. 237 * @tc.expected: The return values are equal to ZERO_DOUBLE. 238 */ 239 result = 0; 240 EXPECT_FALSE(DIMENSION_AUTO.NormalizeToPx(DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, result)); 241 EXPECT_DOUBLE_EQ(result, ZERO_DOUBLE); 242 243 /** 244 * @tc.steps7: Test the function NormalizeToPx of the class Dimension with DIMENSION_CALC. 245 * @tc.expected: The return values are equal to ZERO_DOUBLE. 246 */ 247 result = 0; 248 EXPECT_FALSE(DIMENSION_CALC.NormalizeToPx(DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, DEFAULT_DOUBLE, result)); 249 EXPECT_DOUBLE_EQ(result, ZERO_DOUBLE); 250 } 251 } // namespace OHOS::Ace 252