1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "third_party/blink/renderer/core/css/cssom/css_unit_value.h"
6
7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "third_party/blink/renderer/core/css/css_primitive_value.h"
9
10 namespace blink {
11 namespace {
12 const float kEpsilon = 0.001f;
13 }
14
TEST(CSSUnitValueTest,PixelToOtherUnit)15 TEST(CSSUnitValueTest, PixelToOtherUnit) {
16 CSSUnitValue* pxValue =
17 CSSUnitValue::Create(96, CSSPrimitiveValue::UnitType::kPixels);
18
19 EXPECT_NEAR(96, pxValue->to(CSSPrimitiveValue::UnitType::kPixels)->value(),
20 kEpsilon);
21 EXPECT_NEAR(2.54,
22 pxValue->to(CSSPrimitiveValue::UnitType::kCentimeters)->value(),
23 kEpsilon);
24 EXPECT_NEAR(25.4,
25 pxValue->to(CSSPrimitiveValue::UnitType::kMillimeters)->value(),
26 kEpsilon);
27 EXPECT_NEAR(1, pxValue->to(CSSPrimitiveValue::UnitType::kInches)->value(),
28 kEpsilon);
29 EXPECT_NEAR(72, pxValue->to(CSSPrimitiveValue::UnitType::kPoints)->value(),
30 kEpsilon);
31 EXPECT_NEAR(6, pxValue->to(CSSPrimitiveValue::UnitType::kPicas)->value(),
32 kEpsilon);
33 EXPECT_NEAR(
34 101.6,
35 pxValue->to(CSSPrimitiveValue::UnitType::kQuarterMillimeters)->value(),
36 kEpsilon);
37 }
38
TEST(CSSUnitValueTest,CentimeterToOtherUnit)39 TEST(CSSUnitValueTest, CentimeterToOtherUnit) {
40 CSSUnitValue* cmValue =
41 CSSUnitValue::Create(2.54, CSSPrimitiveValue::UnitType::kCentimeters);
42
43 EXPECT_NEAR(96, cmValue->to(CSSPrimitiveValue::UnitType::kPixels)->value(),
44 kEpsilon);
45 EXPECT_NEAR(2.54,
46 cmValue->to(CSSPrimitiveValue::UnitType::kCentimeters)->value(),
47 kEpsilon);
48 EXPECT_NEAR(25.4,
49 cmValue->to(CSSPrimitiveValue::UnitType::kMillimeters)->value(),
50 kEpsilon);
51 EXPECT_NEAR(1, cmValue->to(CSSPrimitiveValue::UnitType::kInches)->value(),
52 kEpsilon);
53 EXPECT_NEAR(72, cmValue->to(CSSPrimitiveValue::UnitType::kPoints)->value(),
54 kEpsilon);
55 EXPECT_NEAR(6, cmValue->to(CSSPrimitiveValue::UnitType::kPicas)->value(),
56 kEpsilon);
57 EXPECT_NEAR(
58 101.6,
59 cmValue->to(CSSPrimitiveValue::UnitType::kQuarterMillimeters)->value(),
60 kEpsilon);
61 }
62
TEST(CSSUnitValueTest,MillimeterToOtherUnit)63 TEST(CSSUnitValueTest, MillimeterToOtherUnit) {
64 CSSUnitValue* mmValue =
65 CSSUnitValue::Create(25.4, CSSPrimitiveValue::UnitType::kMillimeters);
66
67 EXPECT_NEAR(96, mmValue->to(CSSPrimitiveValue::UnitType::kPixels)->value(),
68 kEpsilon);
69 EXPECT_NEAR(2.54,
70 mmValue->to(CSSPrimitiveValue::UnitType::kCentimeters)->value(),
71 kEpsilon);
72 EXPECT_NEAR(25.4,
73 mmValue->to(CSSPrimitiveValue::UnitType::kMillimeters)->value(),
74 kEpsilon);
75 EXPECT_NEAR(1, mmValue->to(CSSPrimitiveValue::UnitType::kInches)->value(),
76 kEpsilon);
77 EXPECT_NEAR(72, mmValue->to(CSSPrimitiveValue::UnitType::kPoints)->value(),
78 kEpsilon);
79 EXPECT_NEAR(6, mmValue->to(CSSPrimitiveValue::UnitType::kPicas)->value(),
80 kEpsilon);
81 EXPECT_NEAR(
82 101.6,
83 mmValue->to(CSSPrimitiveValue::UnitType::kQuarterMillimeters)->value(),
84 kEpsilon);
85 }
86
TEST(CSSUnitValueTest,InchesToOtherUnit)87 TEST(CSSUnitValueTest, InchesToOtherUnit) {
88 CSSUnitValue* inValue =
89 CSSUnitValue::Create(1, CSSPrimitiveValue::UnitType::kInches);
90
91 EXPECT_NEAR(96, inValue->to(CSSPrimitiveValue::UnitType::kPixels)->value(),
92 kEpsilon);
93 EXPECT_NEAR(2.54,
94 inValue->to(CSSPrimitiveValue::UnitType::kCentimeters)->value(),
95 kEpsilon);
96 EXPECT_NEAR(25.4,
97 inValue->to(CSSPrimitiveValue::UnitType::kMillimeters)->value(),
98 kEpsilon);
99 EXPECT_NEAR(1, inValue->to(CSSPrimitiveValue::UnitType::kInches)->value(),
100 kEpsilon);
101 EXPECT_NEAR(72, inValue->to(CSSPrimitiveValue::UnitType::kPoints)->value(),
102 kEpsilon);
103 EXPECT_NEAR(6, inValue->to(CSSPrimitiveValue::UnitType::kPicas)->value(),
104 kEpsilon);
105 EXPECT_NEAR(
106 101.6,
107 inValue->to(CSSPrimitiveValue::UnitType::kQuarterMillimeters)->value(),
108 kEpsilon);
109 }
110
TEST(CSSUnitValueTest,PointToOtherUnit)111 TEST(CSSUnitValueTest, PointToOtherUnit) {
112 CSSUnitValue* ptValue =
113 CSSUnitValue::Create(72, CSSPrimitiveValue::UnitType::kPoints);
114
115 EXPECT_NEAR(96, ptValue->to(CSSPrimitiveValue::UnitType::kPixels)->value(),
116 kEpsilon);
117 EXPECT_NEAR(2.54,
118 ptValue->to(CSSPrimitiveValue::UnitType::kCentimeters)->value(),
119 kEpsilon);
120 EXPECT_NEAR(25.4,
121 ptValue->to(CSSPrimitiveValue::UnitType::kMillimeters)->value(),
122 kEpsilon);
123 EXPECT_NEAR(1, ptValue->to(CSSPrimitiveValue::UnitType::kInches)->value(),
124 kEpsilon);
125 EXPECT_NEAR(72, ptValue->to(CSSPrimitiveValue::UnitType::kPoints)->value(),
126 kEpsilon);
127 EXPECT_NEAR(6, ptValue->to(CSSPrimitiveValue::UnitType::kPicas)->value(),
128 kEpsilon);
129 EXPECT_NEAR(
130 101.6,
131 ptValue->to(CSSPrimitiveValue::UnitType::kQuarterMillimeters)->value(),
132 kEpsilon);
133 }
134
TEST(CSSUnitValueTest,PicaToOtherUnit)135 TEST(CSSUnitValueTest, PicaToOtherUnit) {
136 CSSUnitValue* pcValue =
137 CSSUnitValue::Create(6, CSSPrimitiveValue::UnitType::kPicas);
138
139 EXPECT_NEAR(96, pcValue->to(CSSPrimitiveValue::UnitType::kPixels)->value(),
140 kEpsilon);
141 EXPECT_NEAR(2.54,
142 pcValue->to(CSSPrimitiveValue::UnitType::kCentimeters)->value(),
143 kEpsilon);
144 EXPECT_NEAR(25.4,
145 pcValue->to(CSSPrimitiveValue::UnitType::kMillimeters)->value(),
146 kEpsilon);
147 EXPECT_NEAR(1, pcValue->to(CSSPrimitiveValue::UnitType::kInches)->value(),
148 kEpsilon);
149 EXPECT_NEAR(72, pcValue->to(CSSPrimitiveValue::UnitType::kPoints)->value(),
150 kEpsilon);
151 EXPECT_NEAR(6, pcValue->to(CSSPrimitiveValue::UnitType::kPicas)->value(),
152 kEpsilon);
153 EXPECT_NEAR(
154 101.6,
155 pcValue->to(CSSPrimitiveValue::UnitType::kQuarterMillimeters)->value(),
156 kEpsilon);
157 }
158
TEST(CSSUnitValueTest,QuarterMillimeterToOtherUnit)159 TEST(CSSUnitValueTest, QuarterMillimeterToOtherUnit) {
160 CSSUnitValue* qValue = CSSUnitValue::Create(
161 101.6, CSSPrimitiveValue::UnitType::kQuarterMillimeters);
162
163 EXPECT_NEAR(96, qValue->to(CSSPrimitiveValue::UnitType::kPixels)->value(),
164 kEpsilon);
165 EXPECT_NEAR(2.54,
166 qValue->to(CSSPrimitiveValue::UnitType::kCentimeters)->value(),
167 kEpsilon);
168 EXPECT_NEAR(25.4,
169 qValue->to(CSSPrimitiveValue::UnitType::kMillimeters)->value(),
170 kEpsilon);
171 EXPECT_NEAR(1, qValue->to(CSSPrimitiveValue::UnitType::kInches)->value(),
172 kEpsilon);
173 EXPECT_NEAR(72, qValue->to(CSSPrimitiveValue::UnitType::kPoints)->value(),
174 kEpsilon);
175 EXPECT_NEAR(6, qValue->to(CSSPrimitiveValue::UnitType::kPicas)->value(),
176 kEpsilon);
177 EXPECT_NEAR(
178 101.6,
179 qValue->to(CSSPrimitiveValue::UnitType::kQuarterMillimeters)->value(),
180 kEpsilon);
181 }
182
183 } // namespace blink
184