| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "third_party/blink/renderer/core/css/cssom/css_unit_value.h" |
| |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "third_party/blink/renderer/core/css/css_primitive_value.h" |
| |
| namespace blink { |
| namespace { |
| const float kEpsilon = 0.001f; |
| } |
| |
| TEST(CSSUnitValueTest, PixelToOtherUnit) { |
| CSSUnitValue* pxValue = |
| CSSUnitValue::Create(96, CSSPrimitiveValue::UnitType::kPixels); |
| |
| EXPECT_NEAR(96, pxValue->to(CSSPrimitiveValue::UnitType::kPixels)->value(), |
| kEpsilon); |
| EXPECT_NEAR(2.54, |
| pxValue->to(CSSPrimitiveValue::UnitType::kCentimeters)->value(), |
| kEpsilon); |
| EXPECT_NEAR(25.4, |
| pxValue->to(CSSPrimitiveValue::UnitType::kMillimeters)->value(), |
| kEpsilon); |
| EXPECT_NEAR(1, pxValue->to(CSSPrimitiveValue::UnitType::kInches)->value(), |
| kEpsilon); |
| EXPECT_NEAR(72, pxValue->to(CSSPrimitiveValue::UnitType::kPoints)->value(), |
| kEpsilon); |
| EXPECT_NEAR(6, pxValue->to(CSSPrimitiveValue::UnitType::kPicas)->value(), |
| kEpsilon); |
| EXPECT_NEAR( |
| 101.6, |
| pxValue->to(CSSPrimitiveValue::UnitType::kQuarterMillimeters)->value(), |
| kEpsilon); |
| } |
| |
| TEST(CSSUnitValueTest, CentimeterToOtherUnit) { |
| CSSUnitValue* cmValue = |
| CSSUnitValue::Create(2.54, CSSPrimitiveValue::UnitType::kCentimeters); |
| |
| EXPECT_NEAR(96, cmValue->to(CSSPrimitiveValue::UnitType::kPixels)->value(), |
| kEpsilon); |
| EXPECT_NEAR(2.54, |
| cmValue->to(CSSPrimitiveValue::UnitType::kCentimeters)->value(), |
| kEpsilon); |
| EXPECT_NEAR(25.4, |
| cmValue->to(CSSPrimitiveValue::UnitType::kMillimeters)->value(), |
| kEpsilon); |
| EXPECT_NEAR(1, cmValue->to(CSSPrimitiveValue::UnitType::kInches)->value(), |
| kEpsilon); |
| EXPECT_NEAR(72, cmValue->to(CSSPrimitiveValue::UnitType::kPoints)->value(), |
| kEpsilon); |
| EXPECT_NEAR(6, cmValue->to(CSSPrimitiveValue::UnitType::kPicas)->value(), |
| kEpsilon); |
| EXPECT_NEAR( |
| 101.6, |
| cmValue->to(CSSPrimitiveValue::UnitType::kQuarterMillimeters)->value(), |
| kEpsilon); |
| } |
| |
| TEST(CSSUnitValueTest, MillimeterToOtherUnit) { |
| CSSUnitValue* mmValue = |
| CSSUnitValue::Create(25.4, CSSPrimitiveValue::UnitType::kMillimeters); |
| |
| EXPECT_NEAR(96, mmValue->to(CSSPrimitiveValue::UnitType::kPixels)->value(), |
| kEpsilon); |
| EXPECT_NEAR(2.54, |
| mmValue->to(CSSPrimitiveValue::UnitType::kCentimeters)->value(), |
| kEpsilon); |
| EXPECT_NEAR(25.4, |
| mmValue->to(CSSPrimitiveValue::UnitType::kMillimeters)->value(), |
| kEpsilon); |
| EXPECT_NEAR(1, mmValue->to(CSSPrimitiveValue::UnitType::kInches)->value(), |
| kEpsilon); |
| EXPECT_NEAR(72, mmValue->to(CSSPrimitiveValue::UnitType::kPoints)->value(), |
| kEpsilon); |
| EXPECT_NEAR(6, mmValue->to(CSSPrimitiveValue::UnitType::kPicas)->value(), |
| kEpsilon); |
| EXPECT_NEAR( |
| 101.6, |
| mmValue->to(CSSPrimitiveValue::UnitType::kQuarterMillimeters)->value(), |
| kEpsilon); |
| } |
| |
| TEST(CSSUnitValueTest, InchesToOtherUnit) { |
| CSSUnitValue* inValue = |
| CSSUnitValue::Create(1, CSSPrimitiveValue::UnitType::kInches); |
| |
| EXPECT_NEAR(96, inValue->to(CSSPrimitiveValue::UnitType::kPixels)->value(), |
| kEpsilon); |
| EXPECT_NEAR(2.54, |
| inValue->to(CSSPrimitiveValue::UnitType::kCentimeters)->value(), |
| kEpsilon); |
| EXPECT_NEAR(25.4, |
| inValue->to(CSSPrimitiveValue::UnitType::kMillimeters)->value(), |
| kEpsilon); |
| EXPECT_NEAR(1, inValue->to(CSSPrimitiveValue::UnitType::kInches)->value(), |
| kEpsilon); |
| EXPECT_NEAR(72, inValue->to(CSSPrimitiveValue::UnitType::kPoints)->value(), |
| kEpsilon); |
| EXPECT_NEAR(6, inValue->to(CSSPrimitiveValue::UnitType::kPicas)->value(), |
| kEpsilon); |
| EXPECT_NEAR( |
| 101.6, |
| inValue->to(CSSPrimitiveValue::UnitType::kQuarterMillimeters)->value(), |
| kEpsilon); |
| } |
| |
| TEST(CSSUnitValueTest, PointToOtherUnit) { |
| CSSUnitValue* ptValue = |
| CSSUnitValue::Create(72, CSSPrimitiveValue::UnitType::kPoints); |
| |
| EXPECT_NEAR(96, ptValue->to(CSSPrimitiveValue::UnitType::kPixels)->value(), |
| kEpsilon); |
| EXPECT_NEAR(2.54, |
| ptValue->to(CSSPrimitiveValue::UnitType::kCentimeters)->value(), |
| kEpsilon); |
| EXPECT_NEAR(25.4, |
| ptValue->to(CSSPrimitiveValue::UnitType::kMillimeters)->value(), |
| kEpsilon); |
| EXPECT_NEAR(1, ptValue->to(CSSPrimitiveValue::UnitType::kInches)->value(), |
| kEpsilon); |
| EXPECT_NEAR(72, ptValue->to(CSSPrimitiveValue::UnitType::kPoints)->value(), |
| kEpsilon); |
| EXPECT_NEAR(6, ptValue->to(CSSPrimitiveValue::UnitType::kPicas)->value(), |
| kEpsilon); |
| EXPECT_NEAR( |
| 101.6, |
| ptValue->to(CSSPrimitiveValue::UnitType::kQuarterMillimeters)->value(), |
| kEpsilon); |
| } |
| |
| TEST(CSSUnitValueTest, PicaToOtherUnit) { |
| CSSUnitValue* pcValue = |
| CSSUnitValue::Create(6, CSSPrimitiveValue::UnitType::kPicas); |
| |
| EXPECT_NEAR(96, pcValue->to(CSSPrimitiveValue::UnitType::kPixels)->value(), |
| kEpsilon); |
| EXPECT_NEAR(2.54, |
| pcValue->to(CSSPrimitiveValue::UnitType::kCentimeters)->value(), |
| kEpsilon); |
| EXPECT_NEAR(25.4, |
| pcValue->to(CSSPrimitiveValue::UnitType::kMillimeters)->value(), |
| kEpsilon); |
| EXPECT_NEAR(1, pcValue->to(CSSPrimitiveValue::UnitType::kInches)->value(), |
| kEpsilon); |
| EXPECT_NEAR(72, pcValue->to(CSSPrimitiveValue::UnitType::kPoints)->value(), |
| kEpsilon); |
| EXPECT_NEAR(6, pcValue->to(CSSPrimitiveValue::UnitType::kPicas)->value(), |
| kEpsilon); |
| EXPECT_NEAR( |
| 101.6, |
| pcValue->to(CSSPrimitiveValue::UnitType::kQuarterMillimeters)->value(), |
| kEpsilon); |
| } |
| |
| TEST(CSSUnitValueTest, QuarterMillimeterToOtherUnit) { |
| CSSUnitValue* qValue = CSSUnitValue::Create( |
| 101.6, CSSPrimitiveValue::UnitType::kQuarterMillimeters); |
| |
| EXPECT_NEAR(96, qValue->to(CSSPrimitiveValue::UnitType::kPixels)->value(), |
| kEpsilon); |
| EXPECT_NEAR(2.54, |
| qValue->to(CSSPrimitiveValue::UnitType::kCentimeters)->value(), |
| kEpsilon); |
| EXPECT_NEAR(25.4, |
| qValue->to(CSSPrimitiveValue::UnitType::kMillimeters)->value(), |
| kEpsilon); |
| EXPECT_NEAR(1, qValue->to(CSSPrimitiveValue::UnitType::kInches)->value(), |
| kEpsilon); |
| EXPECT_NEAR(72, qValue->to(CSSPrimitiveValue::UnitType::kPoints)->value(), |
| kEpsilon); |
| EXPECT_NEAR(6, qValue->to(CSSPrimitiveValue::UnitType::kPicas)->value(), |
| kEpsilon); |
| EXPECT_NEAR( |
| 101.6, |
| qValue->to(CSSPrimitiveValue::UnitType::kQuarterMillimeters)->value(), |
| kEpsilon); |
| } |
| |
| } // namespace blink |