blob: 9bb9b962333a347617fd9ec13bab088540f3b280 [file] [log] [blame]
// Use of this source code is governed by a BSD-style license that can be
// Copyright 2014 The Chromium Authors. All rights reserved.
// found in the LICENSE file.
#include "core/css/MediaValues.h"
#include "core/css/CSSPrimitiveValue.h"
#include "platform/wtf/text/StringBuilder.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace blink {
struct MediaValuesTestCase {
double value;
CSSPrimitiveValue::UnitType type;
unsigned font_size;
unsigned viewport_width;
unsigned viewport_height;
bool success;
double output;
};
TEST(MediaValuesTest, Basic) {
MediaValuesTestCase test_cases[] = {
{40.0, CSSPrimitiveValue::UnitType::kPixels, 16, 300, 300, true, 40},
{40.0, CSSPrimitiveValue::UnitType::kEms, 16, 300, 300, true, 640},
{40.0, CSSPrimitiveValue::UnitType::kRems, 16, 300, 300, true, 640},
{40.0, CSSPrimitiveValue::UnitType::kExs, 16, 300, 300, true, 320},
{40.0, CSSPrimitiveValue::UnitType::kChs, 16, 300, 300, true, 320},
{43.0, CSSPrimitiveValue::UnitType::kViewportWidth, 16, 848, 976, true,
364.64},
{100.0, CSSPrimitiveValue::UnitType::kViewportWidth, 16, 821, 976, true,
821},
{43.0, CSSPrimitiveValue::UnitType::kViewportHeight, 16, 848, 976, true,
419.68},
{43.0, CSSPrimitiveValue::UnitType::kViewportMin, 16, 848, 976, true,
364.64},
{43.0, CSSPrimitiveValue::UnitType::kViewportMax, 16, 848, 976, true,
419.68},
{1.3, CSSPrimitiveValue::UnitType::kCentimeters, 16, 300, 300, true,
49.133858},
{1.3, CSSPrimitiveValue::UnitType::kMillimeters, 16, 300, 300, true,
4.913386},
{1.3, CSSPrimitiveValue::UnitType::kQuarterMillimeters, 16, 300, 300,
true, 1.2283465},
{1.3, CSSPrimitiveValue::UnitType::kInches, 16, 300, 300, true, 124.8},
{13, CSSPrimitiveValue::UnitType::kPoints, 16, 300, 300, true, 17.333333},
{1.3, CSSPrimitiveValue::UnitType::kPicas, 16, 300, 300, true, 20.8},
{40.0, CSSPrimitiveValue::UnitType::kUserUnits, 16, 300, 300, true, 40},
{1.3, CSSPrimitiveValue::UnitType::kUnknown, 16, 300, 300, false, 20},
{0.0, CSSPrimitiveValue::UnitType::kUnknown, 0, 0, 0, false,
0.0} // Do not remove the terminating line.
};
for (unsigned i = 0; test_cases[i].viewport_width; ++i) {
double output = 0;
bool success = MediaValues::ComputeLength(
test_cases[i].value, test_cases[i].type, test_cases[i].font_size,
test_cases[i].viewport_width, test_cases[i].viewport_height, output);
EXPECT_EQ(test_cases[i].success, success);
if (success)
EXPECT_FLOAT_EQ(test_cases[i].output, output);
}
}
} // namespace blink