blob: 9eac45b4c6d27a4165eba970dc7af468bfb8459c [file] [log] [blame]
// 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