blob: 4de530ed6a1ccb38bda6913ff2b810800f5c7708 [file] [log] [blame]
// Copyright 2018 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/css_primitive_value.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/renderer/core/css/css_calculation_value.h"
namespace blink {
namespace {
using UnitType = CSSPrimitiveValue::UnitType;
struct UnitValue {
double value;
UnitType unit_type;
};
CSSPrimitiveValue* Create(UnitValue v) {
return CSSPrimitiveValue::Create(v.value, v.unit_type);
}
CSSPrimitiveValue* CreateAddition(UnitValue a, UnitValue b) {
return CSSPrimitiveValue::Create(
CSSCalcValue::Create(CSSCalcValue::CreateExpressionNode(
CSSCalcValue::CreateExpressionNode(Create(a)),
CSSCalcValue::CreateExpressionNode(Create(b)), kCalcAdd)));
}
TEST(CSSPrimitiveValueTest, IsTime) {
EXPECT_FALSE(Create({5.0, UnitType::kNumber})->IsTime());
EXPECT_FALSE(Create({5.0, UnitType::kDegrees})->IsTime());
EXPECT_TRUE(Create({5.0, UnitType::kSeconds})->IsTime());
EXPECT_TRUE(Create({5.0, UnitType::kMilliseconds})->IsTime());
}
TEST(CSSPrimitiveValueTest, IsTimeCalc) {
{
UnitValue a = {1.0, UnitType::kSeconds};
UnitValue b = {1000.0, UnitType::kMilliseconds};
EXPECT_TRUE(CreateAddition(a, b)->IsTime());
}
{
UnitValue a = {1.0, UnitType::kDegrees};
UnitValue b = {1000.0, UnitType::kGradians};
EXPECT_FALSE(CreateAddition(a, b)->IsTime());
}
}
} // namespace
} // namespace blink