Source/WTF/ChangeLog

 12021-11-29 Simon Fraser <simon.fraser@apple.com>
 2
 3 Serialize CSS <number> values with rounding, limited decimal precision, and no exponents per-spec
 4 https://bugs.webkit.org/show_bug.cgi?id=218880
 5
 6 Reviewed by Darin Adler.
 7
 8 * wtf/dtoa.cpp:
 9 (WTF::truncateTrailingZeros):
 10 (WTF::numberToFixedPrecisionString):
 11 (WTF::numberToCSSString):
 12 * wtf/dtoa.h:
 13 * wtf/dtoa/double-conversion.cc:
 14 * wtf/dtoa/double-conversion.h:
 15 * wtf/text/StringConcatenateNumbers.h:
 16 (WTF::FormattedCSSNumber::create):
 17 (WTF::FormattedCSSNumber::length const):
 18 (WTF::FormattedCSSNumber::buffer const):
 19 (WTF::StringTypeAdapter<FormattedCSSNumber>::StringTypeAdapter):
 20 (WTF::StringTypeAdapter<FormattedCSSNumber>::length const):
 21 (WTF::StringTypeAdapter<FormattedCSSNumber>::is8Bit const):
 22 (WTF::StringTypeAdapter<FormattedCSSNumber>::writeTo const):
 23
1242022-01-10 Alex Christensen <achristensen@webkit.org>
225
326 Start using C++20

Source/WebCore/ChangeLog

 12021-11-29 Simon Fraser <simon.fraser@apple.com>
 2
 3 Serialize CSS <number> values with rounding, limited decimal precision, and no exponents per-spec
 4 https://bugs.webkit.org/show_bug.cgi?id=218880
 5
 6 Reviewed by Darin Adler.
 7
 8 * css/CSSComputedStyleDeclaration.cpp:
 9 (WebCore::valueForGridPosition):
 10 (WebCore::counterToCSSValue):
 11 (WebCore::ComputedStyleExtractor::valueForPropertyInStyle):
 12 * css/CSSPrimitiveValue.cpp:
 13 (WebCore::isValidCSSUnitTypeForDoubleConversion):
 14 (WebCore::isStringType):
 15 (WebCore::CSSPrimitiveValue::cleanup):
 16 (WebCore::CSSPrimitiveValue::doubleValueInternal const):
 17 (WebCore::CSSPrimitiveValue::formatNumberValue const):
 18 (WebCore::CSSPrimitiveValue::formatIntegerValue const):
 19 (WebCore::CSSPrimitiveValue::unitTypeString):
 20 (WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText const):
 21 (WebCore::CSSPrimitiveValue::equals const):
 22 * css/CSSPrimitiveValue.h:
 23 * css/CSSPrimitiveValueMappings.h:
 24 (WebCore::CSSPrimitiveValue::operator short const):
 25 (WebCore::CSSPrimitiveValue::operator unsigned short const):
 26 (WebCore::CSSPrimitiveValue::operator int const):
 27 (WebCore::CSSPrimitiveValue::operator unsigned const):
 28 (WebCore::CSSPrimitiveValue::operator float const):
 29 (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
 30 (WebCore::CSSPrimitiveValue::operator LineClampValue const):
 31 (WebCore::CSSPrimitiveValue::operator ColumnSpan const):
 32 * css/CSSUnits.cpp:
 33 (WebCore::unitCategory):
 34 (WebCore::operator<<):
 35 * css/CSSUnits.h:
 36 * css/DeprecatedCSSOMPrimitiveValue.cpp:
 37 (WebCore::DeprecatedCSSOMPrimitiveValue::primitiveType const):
 38 * css/MediaQueryEvaluator.cpp:
 39 (WebCore::doubleValue):
 40 (WebCore::evaluateResolution):
 41 (WebCore::devicePixelRatioEvaluate):
 42 (WebCore::computeLength):
 43 * css/MediaQueryExpression.cpp:
 44 (WebCore::featureWithValidPositiveLength):
 45 (WebCore::featureWithPositiveInteger):
 46 (WebCore::featureWithPositiveNumber):
 47 (WebCore::featureWithZeroOrOne):
 48 (WebCore::MediaQueryExpression::MediaQueryExpression):
 49 * css/StyleProperties.cpp:
 50 (WebCore::StyleProperties::getPropertyValue const):
 51 * css/calc/CSSCalcCategoryMapping.cpp:
 52 (WebCore::calcUnitCategory):
 53 (WebCore::calculationCategoryForCombination):
 54 (WebCore::hasDoubleValue):
 55 * css/calc/CSSCalcPrimitiveValueNode.cpp:
 56 (WebCore::CSSCalcPrimitiveValueNode::isNumericValue const):
 57 * css/parser/CSSParserImpl.cpp:
 58 (WebCore::CSSParserImpl::consumeFontPaletteValuesRule):
 59 * css/parser/CSSPropertyParser.cpp:
 60 (WebCore::consumeCounter):
 61 (WebCore::consumeCounterStyleRange):
 62 * css/parser/CSSPropertyParserHelpers.cpp:
 63 (WebCore::CSSPropertyParserHelpers::CalcParser::consumeInteger):
 64 (WebCore::CSSPropertyParserHelpers::consumeIntegerTypeCSSPrimitiveValueWithCalcWithKnownTokenTypeFunction):
 65 (WebCore::CSSPropertyParserHelpers::consumeIntegerTypeCSSPrimitiveValueWithCalcWithKnownTokenTypeNumber):
 66 * style/StyleBuilderConverter.h:
 67 (WebCore::Style::BuilderConverter::createGridPosition):
 68
1692022-01-10 Eric Carlson <eric.carlson@apple.com>
270
371 hasBrokenEncryptedMediaAPISupportQuirk and needsPreloadAutoQuirk have overly

Source/WTF/wtf/dtoa.cpp

@@const char* numberToString(double d, NumberToStringBuffer& buffer)
3838 return builder.Finalize();
3939}
4040
41 static inline void truncateTrailingZeros(NumberToStringBuffer& buffer, double_conversion::StringBuilder& builder)
 41static inline void truncateTrailingZeros(char* buffer, double_conversion::StringBuilder& builder)
4242{
4343 size_t length = builder.position();
4444 size_t decimalPointPosition = 0;

@@const char* numberToFixedPrecisionString(double d, unsigned significantFigures,
9393 auto& converter = double_conversion::DoubleToStringConverter::EcmaScriptConverter();
9494 converter.ToPrecision(d, significantFigures, &builder);
9595 if (shouldTruncateTrailingZeros)
96  truncateTrailingZeros(buffer, builder);
 96 truncateTrailingZeros(buffer.data(), builder);
9797 return builder.Finalize();
9898}
9999

@@const char* numberToFixedWidthString(double d, unsigned decimalPlaces, NumberToS
119119 return builder.Finalize();
120120}
121121
 122const char* numberToCSSString(double d, NumberToCSSStringBuffer& buffer)
 123{
 124 // Mimic sprintf("%.[precision]f", ...).
 125 // "f": Signed value having the form [ – ]dddd.dddd, where dddd is one or more decimal digits.
 126 // The number of digits before the decimal point depends on the magnitude of the number, and
 127 // the number of digits after the decimal point depends on the requested precision.
 128 // "precision": The precision value specifies the number of digits after the decimal point.
 129 // If a decimal point appears, at least one digit appears before it.
 130 // The value is rounded to the appropriate number of digits.
 131 double_conversion::StringBuilder builder(&buffer[0], sizeof(buffer));
 132 auto& converter = double_conversion::DoubleToStringConverter::CSSConverter();
 133 converter.ToFixedUncapped(d, 6, &builder);
 134 truncateTrailingZeros(buffer.data(), builder);
 135 // If we've truncated the trailing zeros and a trailing decimal, we may have a -0. Remove the negative sign in this case.
 136 if (builder.position() == 2 && buffer[0] == '-' && buffer[1] == '0')
 137 builder.RemoveCharacters(0, 1);
 138 return builder.Finalize();
 139}
 140
122141namespace Internal {
123142
124143double parseDoubleFromLongString(const UChar* string, size_t length, size_t& parsedLength)

Source/WTF/wtf/dtoa.h

@@namespace WTF {
3131// <-> + <21 digits> + decimal point + <100 digits> + null char = 124.
3232using NumberToStringBuffer = std::array<char, 124>;
3333
 34
 35// <-> + <320 digits> + decimal point + <6 digits> + null char = 329
 36using NumberToCSSStringBuffer = std::array<char, 329>;
 37
3438WTF_EXPORT_PRIVATE const char* numberToString(float, NumberToStringBuffer&);
3539WTF_EXPORT_PRIVATE const char* numberToFixedPrecisionString(float, unsigned significantFigures, NumberToStringBuffer&, bool truncateTrailingZeros = false);
3640WTF_EXPORT_PRIVATE const char* numberToFixedWidthString(float, unsigned decimalPlaces, NumberToStringBuffer&);

@@WTF_EXPORT_PRIVATE const char* numberToString(double, NumberToStringBuffer&);
3943WTF_EXPORT_PRIVATE const char* numberToFixedPrecisionString(double, unsigned significantFigures, NumberToStringBuffer&, bool truncateTrailingZeros = false);
4044WTF_EXPORT_PRIVATE const char* numberToFixedWidthString(double, unsigned decimalPlaces, NumberToStringBuffer&);
4145
 46// Fixed width with up to 6 decimal places, trailing zeros truncated.
 47WTF_EXPORT_PRIVATE const char* numberToCSSString(double, NumberToCSSStringBuffer&);
 48
4249double parseDouble(const LChar* string, size_t length, size_t& parsedLength);
4350double parseDouble(const UChar* string, size_t length, size_t& parsedLength);
4451double parseDouble(StringView, size_t& parsedLength);

Source/WTF/wtf/dtoa/double-conversion.cc

@@const DoubleToStringConverter& DoubleToStringConverter::EcmaScriptConverter() {
5656 return converter;
5757}
5858
 59const DoubleToStringConverter& DoubleToStringConverter::CSSConverter() {
 60 int flags = UNIQUE_ZERO | EMIT_POSITIVE_EXPONENT_SIGN;
 61 static DoubleToStringConverter converter(flags,
 62 "infinity",
 63 "NaN",
 64 'e',
 65 -6, 21,
 66 6, 0);
 67 return converter;
 68}
 69
5970
6071bool DoubleToStringConverter::HandleSpecialValues(
6172 double value,

@@bool DoubleToStringConverter::ToShortestIeeeNumber(
201212 return true;
202213}
203214
 215bool DoubleToStringConverter::ToFixedInternal(double value,
 216 int requested_digits,
 217 char* buffer,
 218 int buffer_length,
 219 StringBuilder* result_builder) const {
 220 // Find a sufficiently precise decimal representation of n.
 221 int decimal_point;
 222 bool sign;
 223 int decimal_rep_length;
 224 DoubleToAscii(value, FIXED, requested_digits,
 225 buffer, buffer_length,
 226 &sign, &decimal_rep_length, &decimal_point);
 227
 228 bool unique_zero = ((flags_ & UNIQUE_ZERO) != 0);
 229 if (sign && (value != 0.0 || !unique_zero)) {
 230 result_builder->AddCharacter('-');
 231 }
 232
 233 CreateDecimalRepresentation(buffer, decimal_rep_length, decimal_point,
 234 requested_digits, result_builder);
 235 return true;
 236}
 237
204238
205239bool DoubleToStringConverter::ToFixed(double value,
206240 int requested_digits,

@@bool DoubleToStringConverter::ToFixed(double value,
215249 if (requested_digits > kMaxFixedDigitsAfterPoint) return false;
216250 if (value >= kFirstNonFixed || value <= -kFirstNonFixed) return false;
217251
218  // Find a sufficiently precise decimal representation of n.
219  int decimal_point;
220  bool sign;
221252 // Add space for the '\0' byte.
222253 const int kDecimalRepCapacity =
223254 kMaxFixedDigitsBeforePoint + kMaxFixedDigitsAfterPoint + 1;
224255 char decimal_rep[kDecimalRepCapacity];
225  int decimal_rep_length;
226  DoubleToAscii(value, FIXED, requested_digits,
227  decimal_rep, kDecimalRepCapacity,
228  &sign, &decimal_rep_length, &decimal_point);
 256 return ToFixedInternal(value, requested_digits, decimal_rep, kDecimalRepCapacity, result_builder);
 257}
229258
230  bool unique_zero = ((flags_ & UNIQUE_ZERO) != 0);
231  if (sign && (value != 0.0 || !unique_zero)) {
232  result_builder->AddCharacter('-');
 259bool DoubleToStringConverter::ToFixedUncapped(double value,
 260 int requested_digits,
 261 StringBuilder* result_builder) const {
 262 // Max double is 1e308, so we could have 310 digits including a negative sign.
 263 const int kMaxPossibleDigitsBeforePoint = 310;
 264
 265 if (Double(value).IsSpecial()) {
 266 return HandleSpecialValues(value, result_builder);
233267 }
234268
235  CreateDecimalRepresentation(decimal_rep, decimal_rep_length, decimal_point,
236  requested_digits, result_builder);
237  return true;
 269 if (requested_digits > kMaxFixedDigitsAfterPoint) return false;
 270
 271 // Add space for the '\0' byte.
 272 const int kDecimalRepCapacity =
 273 kMaxPossibleDigitsBeforePoint + kMaxFixedDigitsAfterPoint + 1;
 274 char decimal_rep[kDecimalRepCapacity];
 275 return ToFixedInternal(value, requested_digits, decimal_rep, kDecimalRepCapacity, result_builder);
238276}
239277
240278

Source/WTF/wtf/dtoa/double-conversion.h

@@class DoubleToStringConverter {
132132 // Returns a converter following the EcmaScript specification.
133133 WTF_EXPORT_PRIVATE static const DoubleToStringConverter& EcmaScriptConverter();
134134
 135 WTF_EXPORT_PRIVATE static const DoubleToStringConverter& CSSConverter();
 136
135137 // Computes the shortest string of digits that correctly represent the input
136138 // number. Depending on decimal_in_shortest_low and decimal_in_shortest_high
137139 // (see constructor) it then either returns a decimal representation, or an

@@class DoubleToStringConverter {
201203 bool ToFixed(double value,
202204 int requested_digits,
203205 StringBuilder* result_builder) const;
 206 // The same as ToFixed, except without a limit on the maximum number
 207 // of digits before the decimal point.
 208 bool ToFixedUncapped(double value,
 209 int requested_digits,
 210 StringBuilder* result_builder) const;
204211
205212 // Computes a representation in exponential format with requested_digits
206213 // after the decimal point. The last emitted digit is rounded.

@@class DoubleToStringConverter {
370377 int decimal_point,
371378 int digits_after_point,
372379 StringBuilder* result_builder) const;
 380 bool ToFixedInternal(double value,
 381 int requested_digits,
 382 char* buffer,
 383 int buffer_length,
 384 StringBuilder* result_builder) const;
373385
374386 const int flags_;
375387 const char* const infinity_symbol_;

Source/WTF/wtf/text/StringConcatenateNumbers.h

@@private:
128128 const FormattedNumber& m_number;
129129};
130130
 131class FormattedCSSNumber {
 132 WTF_MAKE_FAST_ALLOCATED;
 133public:
 134 static FormattedCSSNumber create(double number)
 135 {
 136 FormattedCSSNumber numberFormatter;
 137 numberToCSSString(number, numberFormatter.m_buffer);
 138 numberFormatter.m_length = std::strlen(&numberFormatter.m_buffer[0]);
 139 return numberFormatter;
 140 }
 141
 142 unsigned length() const { return m_length; }
 143 const LChar* buffer() const { return reinterpret_cast<const LChar*>(&m_buffer[0]); }
 144
 145private:
 146 NumberToCSSStringBuffer m_buffer;
 147 unsigned m_length;
 148};
 149
 150template<> class StringTypeAdapter<FormattedCSSNumber> {
 151public:
 152 StringTypeAdapter(const FormattedCSSNumber& number)
 153 : m_number { number }
 154 {
 155 }
 156
 157 unsigned length() const { return m_number.length(); }
 158 bool is8Bit() const { return true; }
 159 template<typename CharacterType> void writeTo(CharacterType* destination) const { StringImpl::copyCharacters(destination, m_number.buffer(), m_number.length()); }
 160
 161private:
 162 const FormattedCSSNumber& m_number;
 163};
 164
131165}
132166
133167using WTF::FormattedNumber;
 168using WTF::FormattedCSSNumber;

Source/WebCore/css/CSSComputedStyleDeclaration.cpp

@@static Ref<CSSValue> valueForGridPosition(const GridPosition& position)
10691069 auto list = CSSValueList::createSpaceSeparated();
10701070 if (position.isSpan()) {
10711071 list->append(cssValuePool.createIdentifierValue(CSSValueSpan));
1072  list->append(cssValuePool.createValue(position.spanPosition(), CSSUnitType::CSS_NUMBER));
 1072 list->append(cssValuePool.createValue(position.spanPosition(), CSSUnitType::CSS_INTEGER));
10731073 } else
1074  list->append(cssValuePool.createValue(position.integerPosition(), CSSUnitType::CSS_NUMBER));
 1074 list->append(cssValuePool.createValue(position.integerPosition(), CSSUnitType::CSS_INTEGER));
10751075
10761076 if (!position.namedGridLine().isNull())
10771077 list->append(cssValuePool.createCustomIdent(position.namedGridLine()));

@@static Ref<CSSValue> counterToCSSValue(const RenderStyle& style, CSSPropertyID p
19401940 auto list = CSSValueList::createSpaceSeparated();
19411941 for (auto& keyValue : *map) {
19421942 list->append(cssValuePool.createCustomIdent(keyValue.key));
1943  double number = (propertyID == CSSPropertyCounterIncrement ? keyValue.value.incrementValue : keyValue.value.resetValue).value_or(0);
1944  list->append(cssValuePool.createValue(number, CSSUnitType::CSS_NUMBER));
 1943 int number = (propertyID == CSSPropertyCounterIncrement ? keyValue.value.incrementValue : keyValue.value.resetValue).value_or(0);
 1944 list->append(cssValuePool.createValue(number, CSSUnitType::CSS_INTEGER));
19451945 }
19461946 return list;
19471947}

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
29762976 case CSSPropertyWebkitBoxFlex:
29772977 return cssValuePool.createValue(style.boxFlex(), CSSUnitType::CSS_NUMBER);
29782978 case CSSPropertyWebkitBoxFlexGroup:
2979  return cssValuePool.createValue(style.boxFlexGroup(), CSSUnitType::CSS_NUMBER);
 2979 return cssValuePool.createValue(style.boxFlexGroup(), CSSUnitType::CSS_INTEGER);
29802980 case CSSPropertyWebkitBoxLines:
29812981 return cssValuePool.createValue(style.boxLines());
29822982 case CSSPropertyWebkitBoxOrdinalGroup:
2983  return cssValuePool.createValue(style.boxOrdinalGroup(), CSSUnitType::CSS_NUMBER);
 2983 return cssValuePool.createValue(style.boxOrdinalGroup(), CSSUnitType::CSS_INTEGER);
29842984 case CSSPropertyWebkitBoxOrient:
29852985 return cssValuePool.createValue(style.boxOrient());
29862986 case CSSPropertyWebkitBoxPack:

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
30973097 case CSSPropertyPlaceSelf:
30983098 return getCSSPropertyValuesForShorthandProperties(placeSelfShorthand());
30993099 case CSSPropertyOrder:
3100  return cssValuePool.createValue(style.order(), CSSUnitType::CSS_NUMBER);
 3100 return cssValuePool.createValue(style.order(), CSSUnitType::CSS_INTEGER);
31013101 case CSSPropertyFloat:
31023102 if (style.display() != DisplayType::None && style.hasOutOfFlowPosition())
31033103 return cssValuePool.createIdentifierValue(CSSValueNone);

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
32493249 case CSSPropertyWebkitLineClamp:
32503250 if (style.lineClamp().isNone())
32513251 return cssValuePool.createIdentifierValue(CSSValueNone);
3252  return cssValuePool.createValue(style.lineClamp().value(), style.lineClamp().isPercentage() ? CSSUnitType::CSS_PERCENTAGE : CSSUnitType::CSS_NUMBER);
 3252 return cssValuePool.createValue(style.lineClamp().value(), style.lineClamp().isPercentage() ? CSSUnitType::CSS_PERCENTAGE : CSSUnitType::CSS_INTEGER);
32533253 case CSSPropertyLineHeight:
32543254 return lineHeightFromStyle(style);
32553255 case CSSPropertyListStyleImage:

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
33353335 case CSSPropertyOrphans:
33363336 if (style.hasAutoOrphans())
33373337 return cssValuePool.createIdentifierValue(CSSValueAuto);
3338  return cssValuePool.createValue(style.orphans(), CSSUnitType::CSS_NUMBER);
 3338 return cssValuePool.createValue(style.orphans(), CSSUnitType::CSS_INTEGER);
33393339 case CSSPropertyOutlineColor:
33403340 return m_allowVisitedStyle ? cssValuePool.createColorValue(style.visitedDependentColor(CSSPropertyOutlineColor)) : currentColorOrValidColor(&style, style.outlineColor());
33413341 case CSSPropertyOutlineOffset:

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
35273527 case CSSPropertyWidows:
35283528 if (style.hasAutoWidows())
35293529 return cssValuePool.createIdentifierValue(CSSValueAuto);
3530  return cssValuePool.createValue(style.widows(), CSSUnitType::CSS_NUMBER);
 3530 return cssValuePool.createValue(style.widows(), CSSUnitType::CSS_INTEGER);
35313531 case CSSPropertyWidth:
35323532 if (renderer && !renderer->isRenderOrLegacyRenderSVGModelObject()) {
35333533 // According to http://www.w3.org/TR/CSS2/visudet.html#the-width-property,

@@RefPtr<CSSValue> ComputedStyleExtractor::valueForPropertyInStyle(const RenderSty
35693569 case CSSPropertyZIndex:
35703570 if (style.hasAutoSpecifiedZIndex())
35713571 return cssValuePool.createIdentifierValue(CSSValueAuto);
3572  return cssValuePool.createValue(style.specifiedZIndex(), CSSUnitType::CSS_NUMBER);
 3572 return cssValuePool.createValue(style.specifiedZIndex(), CSSUnitType::CSS_INTEGER);
35733573 case CSSPropertyZoom:
35743574 return cssValuePool.createValue(style.zoom(), CSSUnitType::CSS_NUMBER);
35753575 case CSSPropertyBoxSizing:

Source/WebCore/css/CSSPrimitiveValue.cpp

@@static inline bool isValidCSSUnitTypeForDoubleConversion(CSSUnitType unitType)
7878 case CSSUnitType::CSS_MM:
7979 case CSSUnitType::CSS_MS:
8080 case CSSUnitType::CSS_NUMBER:
 81 case CSSUnitType::CSS_INTEGER:
8182 case CSSUnitType::CSS_PC:
8283 case CSSUnitType::CSS_PERCENTAGE:
8384 case CSSUnitType::CSS_PT:

@@static inline bool isStringType(CSSUnitType type)
186187 case CSSUnitType::CSS_MM:
187188 case CSSUnitType::CSS_MS:
188189 case CSSUnitType::CSS_NUMBER:
 190 case CSSUnitType::CSS_INTEGER:
189191 case CSSUnitType::CSS_PAIR:
190192 case CSSUnitType::CSS_PC:
191193 case CSSUnitType::CSS_PERCENTAGE:

@@void CSSPrimitiveValue::cleanup()
545547 break;
546548 case CSSUnitType::CSS_DIMENSION:
547549 case CSSUnitType::CSS_NUMBER:
 550 case CSSUnitType::CSS_INTEGER:
548551 case CSSUnitType::CSS_PERCENTAGE:
549552 case CSSUnitType::CSS_EMS:
550553 case CSSUnitType::CSS_QUIRKY_EMS:

@@std::optional<double> CSSPrimitiveValue::doubleValueInternal(CSSUnitType request
11031106 return std::nullopt;
11041107 }
11051108
1106  if (sourceUnitType == CSSUnitType::CSS_NUMBER) {
 1109 if (sourceUnitType == CSSUnitType::CSS_NUMBER || sourceUnitType == CSSUnitType::CSS_INTEGER) {
11071110 // We interpret conversion from CSSUnitType::CSS_NUMBER in the same way as CSSParser::validUnit() while using non-strict mode.
11081111 sourceUnitType = canonicalUnitTypeForCategory(targetCategory);
11091112 if (sourceUnitType == CSSUnitType::CSS_UNKNOWN)

@@String CSSPrimitiveValue::stringValue() const
11431146}
11441147
11451148NEVER_INLINE String CSSPrimitiveValue::formatNumberValue(StringView suffix) const
 1149{
 1150 return makeString(FormattedCSSNumber::create(m_value.num), suffix);
 1151}
 1152
 1153NEVER_INLINE String CSSPrimitiveValue::formatIntegerValue(StringView suffix) const
11461154{
11471155 if (m_value.num == std::numeric_limits<double>::infinity())
11481156 return makeString("infinity", suffix);

@@String CSSPrimitiveValue::unitTypeString(CSSUnitType unitType)
12101218
12111219 case CSSUnitType::CSS_UNKNOWN:
12121220 case CSSUnitType::CSS_NUMBER:
 1221 case CSSUnitType::CSS_INTEGER:
12131222 case CSSUnitType::CSS_DIMENSION:
12141223 case CSSUnitType::CSS_STRING:
12151224 case CSSUnitType::CSS_URI:

@@ALWAYS_INLINE String CSSPrimitiveValue::formatNumberForCustomCSSText() const
12441253 return String();
12451254 case CSSUnitType::CSS_NUMBER:
12461255 return formatNumberValue("");
 1256 case CSSUnitType::CSS_INTEGER:
 1257 return formatIntegerValue("");
12471258 case CSSUnitType::CSS_PERCENTAGE:
12481259 return formatNumberValue("%");
12491260 case CSSUnitType::CSS_EMS:

@@bool CSSPrimitiveValue::equals(const CSSPrimitiveValue& other) const
14351446 case CSSUnitType::CSS_UNKNOWN:
14361447 return false;
14371448 case CSSUnitType::CSS_NUMBER:
 1449 case CSSUnitType::CSS_INTEGER:
14381450 case CSSUnitType::CSS_PERCENTAGE:
14391451 case CSSUnitType::CSS_EMS:
14401452 case CSSUnitType::CSS_QUIRKY_EMS:

Source/WebCore/css/CSSPrimitiveValue.h

@@public:
9090 bool isQuirkyEms() const { return primitiveType() == CSSUnitType::CSS_QUIRKY_EMS; }
9191 bool isLength() const { return isLength(static_cast<CSSUnitType>(primitiveType())); }
9292 bool isNumber() const { return primitiveType() == CSSUnitType::CSS_NUMBER; }
 93 bool isInteger() const { return primitiveType() == CSSUnitType::CSS_INTEGER; }
 94 bool isNumberOrInteger() const { return isNumber() || isInteger(); }
9395 bool isPercentage() const { return primitiveType() == CSSUnitType::CSS_PERCENTAGE; }
9496 bool isPx() const { return primitiveType() == CSSUnitType::CSS_PX; }
9597 bool isRect() const { return primitiveUnitType() == CSSUnitType::CSS_RECT; }

@@private:
252254
253255 ALWAYS_INLINE String formatNumberForCustomCSSText() const;
254256 NEVER_INLINE String formatNumberValue(StringView) const;
 257 NEVER_INLINE String formatIntegerValue(StringView) const;
255258 static constexpr bool isFontIndependentLength(CSSUnitType);
256259 static constexpr bool isFontRelativeLength(CSSUnitType);
257260 static constexpr bool isResolution(CSSUnitType);

Source/WebCore/css/CSSPrimitiveValueMappings.h

@@template<> inline CSSPrimitiveValue::CSSPrimitiveValue(short i)
5959
6060template<> inline CSSPrimitiveValue::operator short() const
6161{
62  if (primitiveUnitType() == CSSUnitType::CSS_NUMBER)
 62 if (primitiveType() == CSSUnitType::CSS_NUMBER || primitiveType() == CSSUnitType::CSS_INTEGER)
6363 return clampTo<short>(m_value.num);
6464
6565 ASSERT_NOT_REACHED();

@@template<> inline CSSPrimitiveValue::CSSPrimitiveValue(unsigned short i)
7575
7676template<> inline CSSPrimitiveValue::operator unsigned short() const
7777{
78  if (primitiveType() == CSSUnitType::CSS_NUMBER)
 78 if (primitiveType() == CSSUnitType::CSS_NUMBER || primitiveType() == CSSUnitType::CSS_INTEGER)
7979 return value<unsigned short>();
8080
8181 ASSERT_NOT_REACHED();

@@template<> inline CSSPrimitiveValue::operator unsigned short() const
8484
8585template<> inline CSSPrimitiveValue::operator int() const
8686{
87  if (primitiveType() == CSSUnitType::CSS_NUMBER)
 87 if (primitiveType() == CSSUnitType::CSS_NUMBER || primitiveType() == CSSUnitType::CSS_INTEGER)
8888 return value<int>();
8989
9090 ASSERT_NOT_REACHED();

@@template<> inline CSSPrimitiveValue::operator int() const
9393
9494template<> inline CSSPrimitiveValue::operator unsigned() const
9595{
96  if (primitiveType() == CSSUnitType::CSS_NUMBER)
 96 if (primitiveType() == CSSUnitType::CSS_NUMBER || primitiveType() == CSSUnitType::CSS_INTEGER)
9797 return value<unsigned>();
9898
9999 ASSERT_NOT_REACHED();

@@template<> inline CSSPrimitiveValue::CSSPrimitiveValue(float i)
110110
111111template<> inline CSSPrimitiveValue::operator float() const
112112{
113  if (primitiveType() == CSSUnitType::CSS_NUMBER)
 113 if (primitiveType() == CSSUnitType::CSS_NUMBER || primitiveType() == CSSUnitType::CSS_INTEGER)
114114 return value<float>();
115115
116116 ASSERT_NOT_REACHED();

@@template<> inline CSSPrimitiveValue::operator float() const
120120template<> inline CSSPrimitiveValue::CSSPrimitiveValue(LineClampValue i)
121121 : CSSValue(PrimitiveClass)
122122{
123  setPrimitiveUnitType(i.isPercentage() ? CSSUnitType::CSS_PERCENTAGE : CSSUnitType::CSS_NUMBER);
 123 setPrimitiveUnitType(i.isPercentage() ? CSSUnitType::CSS_PERCENTAGE : CSSUnitType::CSS_INTEGER);
124124 m_value.num = static_cast<double>(i.value());
125125}
126126
127127template<> inline CSSPrimitiveValue::operator LineClampValue() const
128128{
129  if (primitiveType() == CSSUnitType::CSS_NUMBER)
 129 if (primitiveType() == CSSUnitType::CSS_INTEGER)
130130 return LineClampValue(value<int>(), LineClamp::LineCount);
131131
132132 if (primitiveType() == CSSUnitType::CSS_PERCENTAGE)

@@template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ColumnSpan columnSpan)
219219template<> inline CSSPrimitiveValue::operator ColumnSpan() const
220220{
221221 // Map 1 to none for compatibility reasons.
222  if (primitiveUnitType() == CSSUnitType::CSS_NUMBER && m_value.num == 1)
 222 if ((primitiveUnitType() == CSSUnitType::CSS_NUMBER || primitiveUnitType() == CSSUnitType::CSS_INTEGER) && m_value.num == 1)
223223 return ColumnSpan::None;
224224
225225 ASSERT(isValueID());

Source/WebCore/css/CSSUnits.cpp

@@CSSUnitCategory unitCategory(CSSUnitType type)
2929{
3030 switch (type) {
3131 case CSSUnitType::CSS_NUMBER:
 32 case CSSUnitType::CSS_INTEGER:
3233 return CSSUnitCategory::Number;
3334 case CSSUnitType::CSS_PERCENTAGE:
3435 return CSSUnitCategory::Percent;

@@TextStream& operator<<(TextStream& ts, CSSUnitType unitType)
109110 switch (unitType) {
110111 case CSSUnitType::CSS_UNKNOWN: ts << "unknown"; break;
111112 case CSSUnitType::CSS_NUMBER: ts << "number"; break;
 113 case CSSUnitType::CSS_INTEGER: ts << "integer"; break;
112114 case CSSUnitType::CSS_PERCENTAGE: ts << "percentage"; break;
113115 case CSSUnitType::CSS_EMS: ts << "ems"; break;
114116 case CSSUnitType::CSS_EXS: ts << "exs"; break;

Source/WebCore/css/CSSUnits.h

@@namespace WebCore {
3131enum class CSSUnitType : uint8_t {
3232 CSS_UNKNOWN,
3333 CSS_NUMBER,
 34 CSS_INTEGER,
3435 CSS_PERCENTAGE,
3536 CSS_EMS,
3637 CSS_EXS,

Source/WebCore/css/DeprecatedCSSOMPrimitiveValue.cpp

@@unsigned short DeprecatedCSSOMPrimitiveValue::primitiveType() const
5959 case CSSUnitType::CSS_GRAD: return CSS_GRAD;
6060 case CSSUnitType::CSS_HZ: return CSS_HZ;
6161 case CSSUnitType::CSS_IDENT: return CSS_IDENT;
 62 case CSSUnitType::CSS_INTEGER: return CSS_NUMBER;
6263 case CSSUnitType::CustomIdent: return CSS_IDENT;
6364 case CSSUnitType::CSS_IN: return CSS_IN;
6465 case CSSUnitType::CSS_KHZ: return CSS_KHZ;

Source/WebCore/css/MediaQueryEvaluator.cpp

@@static bool compareAspectRatioValue(CSSValue* value, int width, int height, Medi
267267
268268static std::optional<double> doubleValue(CSSValue* value)
269269{
270  if (!is<CSSPrimitiveValue>(value) || !downcast<CSSPrimitiveValue>(*value).isNumber())
 270 if (!is<CSSPrimitiveValue>(value) || !downcast<CSSPrimitiveValue>(*value).isNumberOrInteger())
271271 return std::nullopt;
272272 return downcast<CSSPrimitiveValue>(*value).doubleValue(CSSUnitType::CSS_NUMBER);
273273}

@@static bool evaluateResolution(CSSValue* value, Frame& frame, MediaFeaturePrefix
435435 return false;
436436
437437 auto& resolution = downcast<CSSPrimitiveValue>(*value);
438  float resolutionValue = resolution.isNumber() ? resolution.floatValue() : resolution.floatValue(CSSUnitType::CSS_DPPX);
 438 float resolutionValue = resolution.isNumberOrInteger() ? resolution.floatValue() : resolution.floatValue(CSSUnitType::CSS_DPPX);
439439 bool result = compareValue(deviceScaleFactor, resolutionValue, op);
440440 LOG_WITH_STREAM(MediaQueries, stream << " evaluateResolution: " << op << " " << resolutionValue << " device scale factor " << deviceScaleFactor << ": " << result);
441441 return result;

@@static bool evaluateResolution(CSSValue* value, Frame& frame, MediaFeaturePrefix
443443
444444static bool devicePixelRatioEvaluate(CSSValue* value, const CSSToLengthConversionData&, Frame& frame, MediaFeaturePrefix op)
445445{
446  return (!value || (is<CSSPrimitiveValue>(*value) && downcast<CSSPrimitiveValue>(*value).isNumber())) && evaluateResolution(value, frame, op);
 446 return (!value || (is<CSSPrimitiveValue>(*value) && downcast<CSSPrimitiveValue>(*value).isNumberOrInteger())) && evaluateResolution(value, frame, op);
447447}
448448
449449static bool resolutionEvaluate(CSSValue* value, const CSSToLengthConversionData&, Frame& frame, MediaFeaturePrefix op)

@@static std::optional<double> computeLength(CSSValue* value, bool strict, const C
492492 return std::nullopt;
493493
494494 auto& primitiveValue = downcast<CSSPrimitiveValue>(*value);
495  if (primitiveValue.isNumber()) {
 495 if (primitiveValue.isNumberOrInteger()) {
496496 double value = primitiveValue.doubleValue();
497497 // The only unitless number value allowed in strict mode is zero.
498498 if (strict && value)

Source/WebCore/css/MediaQueryExpression.cpp

@@static inline bool featureWithValidDensity(const String& mediaFeature, const CSS
107107
108108static inline bool featureWithValidPositiveLength(const String& mediaFeature, const CSSPrimitiveValue& value)
109109{
110  if (!(value.isLength() || (value.isNumber() && !value.doubleValue())) || value.doubleValue() < 0)
 110 if (!(value.isLength() || (value.isNumberOrInteger() && !value.doubleValue())) || value.doubleValue() < 0)
111111 return false;
112112
113113 return mediaFeature == MediaFeatureNames::height

@@static inline bool featureExpectingPositiveInteger(const String& mediaFeature)
139139
140140static inline bool featureWithPositiveInteger(const String& mediaFeature, const CSSPrimitiveValue& value)
141141{
142  if (!value.isNumber())
 142 if (!value.isInteger())
143143 return false;
144144 return featureExpectingPositiveInteger(mediaFeature);
145145}
146146
147147static inline bool featureWithPositiveNumber(const String& mediaFeature, const CSSPrimitiveValue& value)
148148{
149  if (!value.isNumber())
 149 if (!value.isNumberOrInteger())
150150 return false;
151151
152152 return mediaFeature == MediaFeatureNames::transform3d

@@static inline bool featureWithPositiveNumber(const String& mediaFeature, const C
160160
161161static inline bool featureWithZeroOrOne(const String& mediaFeature, const CSSPrimitiveValue& value)
162162{
163  if (!value.isNumber() || !(value.doubleValue() == 1 || !value.doubleValue()))
 163 if (!value.isNumberOrInteger() || !(value.doubleValue() == 1 || !value.doubleValue()))
164164 return false;
165165
166166 return mediaFeature == MediaFeatureNames::grid;

@@MediaQueryExpression::MediaQueryExpression(const String& feature, CSSParserToken
249249 }
250250 // Create value for media query expression that must have 1 or more values.
251251 if (isAspectRatioFeature(m_mediaFeature)) {
252  if (!firstValue->isNumber() || !firstValue->doubleValue())
 252 if (!firstValue->isNumberOrInteger() || !firstValue->doubleValue())
253253 return;
254254 if (!CSSPropertyParserHelpers::consumeSlashIncludingWhitespace(range))
255255 return;

Source/WebCore/css/StyleProperties.cpp

@@String StyleProperties::getPropertyValue(CSSPropertyID propertyID) const
165165 case CSSPropertyOpacity:
166166 case CSSPropertyStopOpacity:
167167 case CSSPropertyStrokeOpacity:
168  // Opacity percentage values serialize as a fraction in the range 0-1, no "%".
 168 // Opacity percentage values serialize as a fraction in the range 0-1, not "%".
169169 if (is<CSSPrimitiveValue>(*value) && downcast<CSSPrimitiveValue>(*value).isPercentage())
170170 return makeString(downcast<CSSPrimitiveValue>(*value).doubleValue() / 100);
171171 FALLTHROUGH;

Source/WebCore/css/calc/CSSCalcCategoryMapping.cpp

@@CalculationCategory calcUnitCategory(CSSUnitType type)
3535{
3636 switch (type) {
3737 case CSSUnitType::CSS_NUMBER:
 38 case CSSUnitType::CSS_INTEGER:
3839 return CalculationCategory::Number;
3940 case CSSUnitType::CSS_EMS:
4041 case CSSUnitType::CSS_EXS:

@@CalculationCategory calculationCategoryForCombination(CSSUnitType type)
9798{
9899 switch (type) {
99100 case CSSUnitType::CSS_NUMBER:
 101 case CSSUnitType::CSS_INTEGER:
100102 return CalculationCategory::Number;
101103 case CSSUnitType::CSS_PX:
102104 case CSSUnitType::CSS_CM:

@@bool hasDoubleValue(CSSUnitType type)
177179{
178180 switch (type) {
179181 case CSSUnitType::CSS_NUMBER:
 182 case CSSUnitType::CSS_INTEGER:
180183 case CSSUnitType::CSS_PERCENTAGE:
181184 case CSSUnitType::CSS_EMS:
182185 case CSSUnitType::CSS_EXS:

Source/WebCore/css/calc/CSSCalcPrimitiveValueNode.cpp

@@CSSCalcPrimitiveValueNode::CSSCalcPrimitiveValueNode(Ref<CSSPrimitiveValue>&& va
6767// FIXME: Use calcUnitCategory?
6868bool CSSCalcPrimitiveValueNode::isNumericValue() const
6969{
70  return m_value->isLength() || m_value->isNumber() || m_value->isPercentage() || m_value->isAngle()
 70 return m_value->isLength() || m_value->isNumber() || m_value->isInteger() || m_value->isPercentage() || m_value->isAngle()
7171 || m_value->isTime() || m_value->isResolution() || m_value->isFlex() || m_value->isFrequency();
7272}
7373

Source/WebCore/css/parser/CSSParserImpl.cpp

@@RefPtr<StyleRuleFontPaletteValues> CSSParserImpl::consumeFontPaletteValuesRule(C
694694 std::optional<FontPaletteIndex> basePalette;
695695 if (auto basePaletteValue = properties->getPropertyCSSValue(CSSPropertyBasePalette)) {
696696 const auto& primitiveValue = downcast<CSSPrimitiveValue>(*basePaletteValue);
697  if (primitiveValue.isNumber())
 697 if (primitiveValue.isInteger())
698698 basePalette = FontPaletteIndex(primitiveValue.value<unsigned>());
699699 else if (primitiveValue.valueID() == CSSValueLight)
700700 basePalette = FontPaletteIndex(FontPaletteIndex::Type::Light);

@@RefPtr<StyleRuleFontPaletteValues> CSSParserImpl::consumeFontPaletteValuesRule(C
707707 const auto& list = downcast<CSSValueList>(*overrideColorsValue);
708708 for (const auto& item : list) {
709709 const auto& pair = downcast<CSSFontPaletteValuesOverrideColorsValue>(item.get());
710  if (!pair.key().isNumber())
 710 if (!pair.key().isInteger())
711711 continue;
712712 unsigned key = pair.key().value<unsigned>();
713713 Color color = pair.color().isRGBColor() ? pair.color().color() : StyleColor::colorFromKeyword(pair.color().valueID(), { });

Source/WebCore/css/parser/CSSPropertyParser.cpp

@@static RefPtr<CSSValue> consumeCounter(CSSParserTokenRange& range, int defaultVa
11111111 int i = defaultValue;
11121112 if (auto counterValue = consumeIntegerRaw(range))
11131113 i = *counterValue;
1114  list->append(createPrimitiveValuePair(counterName.releaseNonNull(), CSSPrimitiveValue::create(i, CSSUnitType::CSS_NUMBER), Pair::IdenticalValueEncoding::Coalesce));
 1114 list->append(createPrimitiveValuePair(counterName.releaseNonNull(), CSSPrimitiveValue::create(i, CSSUnitType::CSS_INTEGER), Pair::IdenticalValueEncoding::Coalesce));
11151115 } while (!range.atEnd());
11161116 return list;
11171117}

@@static RefPtr<CSSValue> consumeCounterStyleRange(CSSParserTokenRange& range)
48014801
48024802 // If the lower bound of any range is higher than the upper bound, the entire descriptor is invalid and must be
48034803 // ignored.
4804  if (lowerBound->isNumber() && upperBound->isNumber() && lowerBound->intValue() > upperBound->intValue())
 4804 if (lowerBound->isInteger() && upperBound->isInteger() && lowerBound->intValue() > upperBound->intValue())
48054805 return nullptr;
48064806 rangeList->append(createPrimitiveValuePair(lowerBound.releaseNonNull(), upperBound.releaseNonNull(), Pair::IdenticalValueEncoding::DoNotCoalesce));
48074807 } while (consumeCommaIncludingWhitespace(range));

Source/WebCore/css/parser/CSSPropertyParserHelpers.cpp

@@struct IntegerTypeKnownTokenTypeFunctionConsumer {
234234 ASSERT(range.peek().type() == FunctionToken);
235235
236236 if (auto integer = IntegerTypeRawKnownTokenTypeFunctionConsumer<IntType, integerRange>::consume(range, symbolTable, valueRange, parserMode, unitless, unitlessZero))
237  return pool.createValue(*integer, CSSUnitType::CSS_NUMBER);
 237 return pool.createValue(*integer, CSSUnitType::CSS_INTEGER);
238238 return nullptr;
239239 }
240240};

@@struct IntegerTypeKnownTokenTypeNumberConsumer {
247247 ASSERT(range.peek().type() == NumberToken);
248248
249249 if (auto integer = IntegerTypeRawKnownTokenTypeNumberConsumer<IntType, integerRange>::consume(range, symbolTable, valueRange, parserMode, unitless, unitlessZero))
250  return pool.createValue(*integer, CSSUnitType::CSS_NUMBER);
 250 return pool.createValue(*integer, CSSUnitType::CSS_INTEGER);
251251 return nullptr;
252252 }
253253};

Source/WebCore/style/StyleBuilderConverter.h

@@inline bool BuilderConverter::createGridPosition(const CSSValue& value, GridPosi
10891089 }
10901090
10911091 int gridLineNumber = 0;
1092  if (currentValue && currentValue->isNumber()) {
 1092 if (currentValue && currentValue->isInteger()) {
10931093 gridLineNumber = currentValue->intValue();
10941094 ++it;
10951095 currentValue = it != values.end() ? &downcast<CSSPrimitiveValue>(it->get()) : nullptr;

LayoutTests/ChangeLog

 12021-11-29 Simon Fraser <simon.fraser@apple.com>
 2
 3 Serialize CSS <number> values with rounding, limited decimal precision, and no exponents per-spec
 4 https://bugs.webkit.org/show_bug.cgi?id=218880
 5
 6 Reviewed by Darin Adler.
 7
 8 * css3/calc/font-size-fractional-expected.txt:
 9 * css3/calc/simplification-expected.txt:
 10 * css3/color-filters/color-filter-parsing.html:
 11 * css3/filters/backdrop/backdropfilter-property-computed-style-expected.txt:
 12 * css3/filters/backdrop/backdropfilter-property-computed-style.html:
 13 * css3/filters/filter-property-computed-style-expected.txt:
 14 * css3/filters/filter-property-computed-style.html:
 15 * css3/filters/unprefixed-expected.txt:
 16 * css3/filters/unprefixed.html:
 17 * css3/scroll-snap/scroll-snap-property-computed-style-expected.txt:
 18 * css3/scroll-snap/scroll-snap-property-computed-style.js:
 19 * fast/css/calc-parsing-expected.txt:
 20 * fast/css/calc-parsing-limits-expected.txt:
 21 * fast/css/calc-parsing-limits.html:
 22 * fast/css/calc-parsing.html:
 23 * fast/css/calc-with-angle-time-frequency-expected.txt:
 24 * fast/css/calc-with-angle-time-frequency.html:
 25 * fast/css/large-value-csstext-expected.txt:
 26 * fast/css/line-height-get-computed-style-expected.txt:
 27 * fast/css/line-height-get-computed-style.html:
 28 * fast/css/parsing-stroke-width-expected.txt:
 29 * fast/css/round-trip-values-expected.txt:
 30 * media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-volume-styles-expected.txt:
 31 * media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-volume-styles.html:
 32 * platform/ios-wk2/imported/w3c/web-platform-tests/html/rendering/pixel-length-attributes-expected.txt:
 33 * platform/ios/fast/forms/search/search-zoom-computed-style-height-expected.txt:
 34 * svg/css/parse-height-expected.txt:
 35 * svg/css/parse-height.html:
 36 * svg/css/parse-length-expected.txt:
 37 * svg/css/parse-length.html:
 38 * transitions/frames-timing-function-expected.txt:
 39
1402022-01-10 Chris Dumez <cdumez@apple.com>
241
342 https://brianpeiris.github.io/spatial-audio-test/?ramped stops playing after a few seconds

LayoutTests/imported/w3c/ChangeLog

 12021-11-29 Simon Fraser <simon.fraser@apple.com>
 2
 3 Serialize CSS <number> values with rounding, limited decimal precision, and no exponents per-spec
 4 https://bugs.webkit.org/show_bug.cgi?id=218880
 5
 6 Reviewed by Darin Adler.
 7
 8 * web-platform-tests/css/css-cascade/revert-val-006-expected.txt:
 9 * web-platform-tests/css/css-cascade/revert-val-007-expected.txt:
 10 * web-platform-tests/css/css-easing/cubic-bezier-timing-functions-output-expected.txt:
 11 * web-platform-tests/css/css-fonts/parsing/font-computed-expected.txt:
 12 * web-platform-tests/css/css-fonts/variations/at-font-face-descriptors-expected.txt:
 13 * web-platform-tests/css/css-masking/clip-path/interpolation-expected.txt:
 14 * web-platform-tests/css/css-shapes/basic-shape-interpolation-expected.txt:
 15 * web-platform-tests/css/css-transforms/2d-rotate-js-expected.txt:
 16 * web-platform-tests/css/css-transforms/animation/transform-interpolation-001-expected.txt:
 17 * web-platform-tests/css/css-transforms/animation/transform-interpolation-inline-value-expected.txt:
 18 * web-platform-tests/css/css-transforms/animation/transform-matrix-composition-expected.txt:
 19 * web-platform-tests/css/css-values/acos-asin-atan-atan2-serialize-expected.txt:
 20 * web-platform-tests/css/css-values/calc-numbers-expected.txt:
 21 * web-platform-tests/css/css-values/hypot-pow-sqrt-invalid-expected.txt:
 22 * web-platform-tests/css/css-values/minmax-angle-serialize-expected.txt:
 23 * web-platform-tests/css/css-values/minmax-number-computed-expected.txt:
 24 * web-platform-tests/css/css-values/minmax-number-serialize-expected.txt:
 25 * web-platform-tests/css/css-variables/variable-presentation-attribute-expected.txt:
 26 * web-platform-tests/css/cssom/getComputedStyle-line-height-expected.txt:
 27 * web-platform-tests/css/motion/animation/offset-rotate-interpolation-expected.txt:
 28 * web-platform-tests/html/rendering/dimension-attributes-expected.txt:
 29 * web-platform-tests/html/rendering/pixel-length-attributes-expected.txt:
 30 * web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt:
 31 * web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt:
 32 * web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt:
 33 * web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt:
 34 * web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt:
 35 * web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt:
 36 * web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation-expected.txt:
 37
1382022-01-10 Chris Dumez <cdumez@apple.com>
239
340 Resync web-platform-tests/html from upstream

LayoutTests/css3/calc/font-size-fractional-expected.txt

@@On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
44
55
66PASS getComputedStyle(document.getElementById("calc-reduce"), null).lineHeight is "24px"
7 PASS getComputedStyle(document.getElementById("calc-reduce"), null).fontSize is "9.600000381469727px"
 7PASS getComputedStyle(document.getElementById("calc-reduce"), null).fontSize is "9.6px"
88PASS successfullyParsed is true
99
1010TEST COMPLETE

LayoutTests/css3/calc/simplification-expected.txt

@@This tests parse time simplification in calc()
33100px * (25 + 5) => calc(3000px)
44100em * (25 - 5) => calc(2000em)
55100ex * (2 * 5 - 5) => calc(500ex)
6 100cm * (5 - 4 / 5) => calc(15874.015748031496px)
7 100mm * (2.4 * 5 - 8 / 5) => calc(3930.708661417323px)
 6100cm * (5 - 4 / 5) => calc(15874.015748px)
 7100mm * (2.4 * 5 - 8 / 5) => calc(3930.708661px)
88100in * (6 * (5 - 4) / 8) => calc(7200px)
9 1px * (3 + 1/(7 + 1/(15 + 1/(1 + 1/(292 + 1/(1 + 1/(1 + 1/(1 + 1)))))))) => calc(3.1415926535583574px)
 91px * (3 + 1/(7 + 1/(15 + 1/(1 + 1/(292 + 1/(1 + 1/(1 + 1/(1 + 1)))))))) => calc(3.141593px)
1010100pc * 20 + 100rem * 10 - 100ch * 5 + 100pc => calc(-500ch + 33600px + 1000rem)
1111((100px + 20 * 5px) * 10 - 5 * (10em * 5 + 10em)) * 2 => calc(-600em + 4000px)
1212100px + 1in => calc(196px)
131310 * 10px + 0.5 * 2in => calc(196px)
1414100px + 1in + 10% => calc(10% + 196px)
1515100px - 1in => calc(4px)
16 50cm + 50cm => calc(3779.5275590551178px)
17 50cm + 10in + 100mm => calc(3227.7165354330705px)
 1650cm + 50cm => calc(3779.527559px)
 1750cm + 10in + 100mm => calc(3227.716535px)
1818100px + 1em => calc(1em + 100px)
1919100px + 1em + 100px => calc(1em + 200px)
20201em + 1rem => calc(1em + 1rem)

LayoutTests/css3/color-filters/color-filter-parsing.html

@@testColorFilterParsing("blur(10px)", "none", "blur() is not allowed in -apple-co
4141
4242// Argument canonicalization.
4343testColorFilterParsing("grayscale(30%)", "grayscale(0.3)", "Canonicalize grayscale() argument");
44 testColorFilterParsing("hue-rotate(1.2rad)", "hue-rotate(68.75493541569878deg)", "Canonicalize hue-rotate() argument");
 44testColorFilterParsing("hue-rotate(1.2rad)", "hue-rotate(68.754935deg)", "Canonicalize hue-rotate() argument");
4545
4646// Negative values.
4747testColorFilterParsing("brightness(-0.4)", "none", "Negative value for brightness() is invalid");

LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style-expected.txt

@@PASS subRule.cssText is "hue-rotate(10deg)"
105105
106106Radians value : hue-rotate(10rad)
107107PASS filterStyle.length is 1
108 PASS subRule.cssText is "hue-rotate(572.9577951308232deg)"
 108PASS subRule.cssText is "hue-rotate(572.957795deg)"
109109
110110Gradians value : hue-rotate(10grad)
111111PASS filterStyle.length is 1

LayoutTests/css3/filters/backdrop/backdropfilter-property-computed-style.html

@@testComputedFilterRule("Degrees float value converts to integer",
124124
125125testComputedFilterRule("Radians value",
126126 "hue-rotate(10rad)", 1,
127  ["hue-rotate(572.9577951308232deg)"]);
 127 ["hue-rotate(572.957795deg)"]);
128128
129129testComputedFilterRule("Gradians value",
130130 "hue-rotate(10grad)", 1,

LayoutTests/css3/filters/filter-property-computed-style-expected.txt

@@PASS subRule.cssText is "hue-rotate(10deg)"
105105
106106Radians value : hue-rotate(10rad)
107107PASS filterStyle.length is 1
108 PASS subRule.cssText is "hue-rotate(572.9577951308232deg)"
 108PASS subRule.cssText is "hue-rotate(572.957795deg)"
109109
110110Gradians value : hue-rotate(10grad)
111111PASS filterStyle.length is 1

LayoutTests/css3/filters/filter-property-computed-style.html

@@testComputedFilterRule("Degrees float value converts to integer",
125125
126126testComputedFilterRule("Radians value",
127127 "hue-rotate(10rad)", 1,
128  ["hue-rotate(572.9577951308232deg)"]);
 128 ["hue-rotate(572.957795deg)"]);
129129
130130testComputedFilterRule("Gradians value",
131131 "hue-rotate(10grad)", 1,

LayoutTests/css3/filters/unprefixed-expected.txt

@@PASS subRule.cssText is "hue-rotate(10deg)"
105105
106106Radians value : hue-rotate(10rad)
107107PASS filterStyle.length is 1
108 PASS subRule.cssText is "hue-rotate(572.9577951308232deg)"
 108PASS subRule.cssText is "hue-rotate(572.957795deg)"
109109
110110Gradians value : hue-rotate(10grad)
111111PASS filterStyle.length is 1

LayoutTests/css3/filters/unprefixed.html

@@testComputedFilterRule("Degrees float value converts to integer",
125125
126126testComputedFilterRule("Radians value",
127127 "hue-rotate(10rad)", 1,
128  ["hue-rotate(572.9577951308232deg)"]);
 128 ["hue-rotate(572.957795deg)"]);
129129
130130testComputedFilterRule("Gradians value",
131131 "hue-rotate(10grad)", 1,

LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style-expected.txt

@@PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding-rig
134134PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding-bottom') is 'calc(10% + 50px)'
135135
136136various units: `1em 5mm 2in 4cm`
137 PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding') is '16px 18.89763832092285px 192px 151.1811065673828px'
 137PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding') is '16px 18.897638px 192px 151.181107px'
138138PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding-top') is '16px'
139 PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding-left') is '151.1811065673828px'
140 PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding-right') is '18.89763832092285px'
 139PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding-left') is '151.181107px'
 140PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding-right') is '18.897638px'
141141PASS window.getComputedStyle(document.body).getPropertyValue('scroll-padding-bottom') is '192px'
142142
143143subpixel values: `10.4375px 6.5px`

@@PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin
218218PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin-bottom') is '20px'
219219
220220various units: `1em 5mm 2in 4cm`
221 PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin') is '16px 18.89763832092285px 192px 151.1811065673828px'
 221PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin') is '16px 18.897638px 192px 151.181107px'
222222PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin-top') is '16px'
223 PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin-left') is '151.1811065673828px'
224 PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin-right') is '18.89763832092285px'
 223PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin-left') is '151.181107px'
 224PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin-right') is '18.897638px'
225225PASS window.getComputedStyle(document.body).getPropertyValue('scroll-snap-margin-bottom') is '192px'
226226
227227subpixel values: `10.4375px 6.5px`

LayoutTests/css3/scroll-snap/scroll-snap-property-computed-style.js

@@testComputedScrollSnapRule("two percentages", "scroll-padding", "10% 20%", "10%
6060testComputedScrollSnapRule("three lengths", "scroll-padding", "1px 2px 3px", "1px 2px 3px", { top: "1px", left: "2px", right: "2px", bottom: "3px" });
6161testComputedScrollSnapRule("four values", "scroll-padding", "50px 10% 20% 50px", "50px 10% 20% 50px", { top: "50px", left: "50px", right: "10%", bottom: "20%" });
6262testComputedScrollSnapRule("calc expression", "scroll-padding", "calc(50px + 10%) 20px", "calc(10% + 50px) 20px", { top: "calc(10% + 50px)", left: "20px", right: "20px", bottom: "calc(10% + 50px)" });
63 testComputedScrollSnapRule("various units", "scroll-padding", "1em 5mm 2in 4cm", "16px 18.89763832092285px 192px 151.1811065673828px", { top: "16px", left: "151.1811065673828px", right: "18.89763832092285px", bottom: "192px" });
 63testComputedScrollSnapRule("various units", "scroll-padding", "1em 5mm 2in 4cm", "16px 18.897638px 192px 151.181107px", { top: "16px", left: "151.181107px", right: "18.897638px", bottom: "192px" });
6464testComputedScrollSnapRule("subpixel values", "scroll-padding", "10.4375px 6.5px", "10.4375px 6.5px", { top: "10.4375px", left: "6.5px", right: "6.5px", bottom: "10.4375px" });
6565
6666// Test the scroll-snap-margin property

@@testComputedScrollSnapRule("single length", "scroll-snap-margin", "10px", "10px"
7676testComputedScrollSnapRule("two lengths", "scroll-snap-margin", "10px 20px", "10px 20px", { top: "10px", left: "20px", right: "20px", bottom: "10px" });
7777testComputedScrollSnapRule("three lengths", "scroll-snap-margin", "1px 2px 3px", "1px 2px 3px", { top: "1px", left: "2px", right: "2px", bottom: "3px" });
7878testComputedScrollSnapRule("four lengths", "scroll-snap-margin", "50px 10px 20px 50px", "50px 10px 20px 50px", { top: "50px", left: "50px", right: "10px", bottom: "20px" });
79 testComputedScrollSnapRule("various units", "scroll-snap-margin", "1em 5mm 2in 4cm", "16px 18.89763832092285px 192px 151.1811065673828px", { top: "16px", left: "151.1811065673828px", right: "18.89763832092285px", bottom: "192px" });
 79testComputedScrollSnapRule("various units", "scroll-snap-margin", "1em 5mm 2in 4cm", "16px 18.897638px 192px 151.181107px", { top: "16px", left: "151.181107px", right: "18.897638px", bottom: "192px" });
8080testComputedScrollSnapRule("subpixel values", "scroll-snap-margin", "10.4375px 6.5px", "10.4375px 6.5px", { top: "10.4375px", left: "6.5px", right: "6.5px", bottom: "10.4375px" });
8181
8282successfullyParsed = true;

LayoutTests/fast/css/calc-parsing-expected.txt

@@PASS element.style['width'] is "calc(1000px)"
6565PASS getComputedStyle(element).getPropertyValue('width') is "1000px"
6666
6767element.style["width"] = "calc(1px * sqrt(999))"
68 PASS element.style['width'] is "calc(31.606961258558215px)"
 68PASS element.style['width'] is "calc(31.606961px)"
6969PASS getComputedStyle(element).getPropertyValue('width') is "31.59375px"
7070
7171element.style["width"] = "calc(1px * pow(2, sqrt(100))"

@@PASS element.style['width'] is "calc(1024px)"
7373PASS getComputedStyle(element).getPropertyValue('width') is "1024px"
7474
7575element.style["width"] = "hypot(4px, 5px, 7px, 9px)"
76 PASS element.style['width'] is "hypot(13.076696830622021px)"
 76PASS element.style['width'] is "hypot(13.076697px)"
7777PASS getComputedStyle(element).getPropertyValue('width') is "13.0625px"
7878
7979element.style["width"] = "hypot(3px, 4px)"

@@PASS element.style['min-width'] is "calc(1000px)"
325325PASS getComputedStyle(element).getPropertyValue('min-width') is "1000px"
326326
327327element.style["min-width"] = "calc(1px * sqrt(999))"
328 PASS element.style['min-width'] is "calc(31.606961258558215px)"
329 PASS getComputedStyle(element).getPropertyValue('min-width') is "31.606962203979492px"
 328PASS element.style['min-width'] is "calc(31.606961px)"
 329PASS getComputedStyle(element).getPropertyValue('min-width') is "31.606962px"
330330
331331element.style["min-width"] = "calc(1px * pow(2, sqrt(100))"
332332PASS element.style['min-width'] is "calc(1024px)"
333333PASS getComputedStyle(element).getPropertyValue('min-width') is "1024px"
334334
335335element.style["min-width"] = "hypot(4px, 5px, 7px, 9px)"
336 PASS element.style['min-width'] is "hypot(13.076696830622021px)"
337 PASS getComputedStyle(element).getPropertyValue('min-width') is "13.076696395874023px"
 336PASS element.style['min-width'] is "hypot(13.076697px)"
 337PASS getComputedStyle(element).getPropertyValue('min-width') is "13.076696px"
338338
339339element.style["min-width"] = "hypot(3px, 4px)"
340340PASS element.style['min-width'] is "hypot(5px)"

LayoutTests/fast/css/calc-parsing-limits-expected.txt

@@PASS testDiv.style['width'] is "calc(898px)"
1717PASS window.getComputedStyle(testDiv).getPropertyValue('width') is "898px"
1818
1919testDiv.style["width"] = "calc( 1000px / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01 / 1.01)"
20 PASS testDiv.style['width'] is "calc(362.42644086767854px)"
 20PASS testDiv.style['width'] is "calc(362.426441px)"
2121PASS window.getComputedStyle(testDiv).getPropertyValue('width') is "362.421875px"
2222PASS successfullyParsed is true
2323

LayoutTests/fast/css/calc-parsing-limits.html

5555 testExpression(calcWithNestedParens('100px', 102), '999px', '999px');
5656
5757 testExpression(calcWithManySubtractions('1000px', '1px', 102), 'calc(898px)', '898px');
58  testExpression(calcWithManyDivisions('1000px', '1.01', 102), 'calc(362.42644086767854px)', '362.421875px');
 58 testExpression(calcWithManyDivisions('1000px', '1.01', 102), 'calc(362.426441px)', '362.421875px');
5959 </script>
6060 <script src="../../resources/js-test-post.js"></script>
6161 </body>

LayoutTests/fast/css/calc-parsing.html

4545 testExpression('calc(100px * pow(2, pow(2, 2)))', 'calc(1600px)', '1600px');
4646 testExpression('calc(1px * pow(2, 3))', 'calc(8px)', '8px')
4747 testExpression('calc(100px * sqrt(100))', 'calc(1000px)', '1000px');
48  testExpression('calc(1px * sqrt(999))', 'calc(31.606961258558215px)', propertyName == 'width' ? '31.59375px' : '31.606962203979492px');
 48 testExpression('calc(1px * sqrt(999))', 'calc(31.606961px)', propertyName == 'width' ? '31.59375px' : '31.606962px');
4949 testExpression('calc(1px * pow(2, sqrt(100))', 'calc(1024px)', '1024px');
50  testExpression('hypot(4px, 5px, 7px, 9px)', 'hypot(13.076696830622021px)', propertyName == 'width' ? '13.0625px' : '13.076696395874023px');
 50 testExpression('hypot(4px, 5px, 7px, 9px)', 'hypot(13.076697px)', propertyName == 'width' ? '13.0625px' : '13.076696px');
5151 testExpression('hypot(3px, 4px)', 'hypot(5px)', '5px');
5252 testExpression('calc(100px * hypot(3, 4))', 'calc(500px)', '500px');
5353 testExpression('hypot(-5px)', 'hypot(5px)', '5px');

LayoutTests/fast/css/calc-with-angle-time-frequency-expected.txt

@@testDiv.style['-webkit-filter'] = 'hue-rotate(calc(300deg/2))'
77PASS testDiv.style['-webkit-filter'] is "hue-rotate(calc(150deg))"
88PASS window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter') is "hue-rotate(150deg)"
99testDiv.style['-webkit-filter'] = 'hue-rotate(calc(300rad/2))'
10 PASS testDiv.style['-webkit-filter'] is "hue-rotate(calc(8594.366926962348deg))"
11 PASS window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter') is "hue-rotate(8594.366926962348deg)"
 10PASS testDiv.style['-webkit-filter'] is "hue-rotate(calc(8594.366927deg))"
 11PASS window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter') is "hue-rotate(8594.366927deg)"
1212testDiv.style['-webkit-filter'] = 'hue-rotate(calc(300grad/2))'
1313PASS testDiv.style['-webkit-filter'] is "hue-rotate(calc(135deg))"
1414PASS window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter') is "hue-rotate(135deg)"

LayoutTests/fast/css/calc-with-angle-time-frequency.html

1414 shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter')", "hue-rotate(150deg)");
1515
1616 evalAndLog("testDiv.style['-webkit-filter'] = 'hue-rotate(calc(300rad/2))'");
17  shouldBeEqualToString("testDiv.style['-webkit-filter']", "hue-rotate(calc(8594.366926962348deg))");
18  shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter')", "hue-rotate(8594.366926962348deg)");
 17 shouldBeEqualToString("testDiv.style['-webkit-filter']", "hue-rotate(calc(8594.366927deg))");
 18 shouldBeEqualToString("window.getComputedStyle(testDiv).getPropertyValue('-webkit-filter')", "hue-rotate(8594.366927deg)");
1919
2020 evalAndLog("testDiv.style['-webkit-filter'] = 'hue-rotate(calc(300grad/2))'");
2121 shouldBeEqualToString("testDiv.style['-webkit-filter']", "hue-rotate(calc(135deg))");

LayoutTests/fast/css/large-value-csstext-expected.txt

11This test should not crash.
22
3 1e+254%
4 9e-249%
 399999999999999993635870693776759177364257073275700735648394407233581562780527075488933869945869475779810351826094056924551506641653143357437722624094200055601817197027212385681288624374039982763538319739206631507774359582937997162411679696940490282762240%
 40%

LayoutTests/fast/css/line-height-get-computed-style-expected.txt

11
2 PASS with font-size: 10px, #target.style['line-height'] = 1e+26 should result in a used line-height of 9.999999146971785e+26px
3 PASS with font-size: 10px, #target.style['line-height'] = 2.53821 should result in a used line-height of 25.382099151611328px
4 PASS with font-size: 10px, #target.style['line-height'] = 2.6666667 should result in a used line-height of 26.666664123535156px
5 PASS with font-size: 10px, #target.style['line-height'] = 2.123456789123457 should result in a used line-height of 21.234567642211914px
 2PASS with font-size: 10px, #target.style['line-height'] = 1e+26 should result in a used line-height of 999999914697178458896728064px
 3PASS with font-size: 10px, #target.style['line-height'] = 2.53821 should result in a used line-height of 25.382099px
 4PASS with font-size: 10px, #target.style['line-height'] = 2.6666667 should result in a used line-height of 26.666664px
 5PASS with font-size: 10px, #target.style['line-height'] = 2.123456789123457 should result in a used line-height of 21.234568px
66PASS with font-size: 10px, #target.style['line-height'] = 2.5 should result in a used line-height of 25px
77PASS with font-size: 10px, #target.style['line-height'] = 2 should result in a used line-height of 20px
88PASS with font-size: 10px, #target.style['line-height'] = 1.05 should result in a used line-height of 10.5px
9 PASS with font-size: 10px, #target.style['line-height'] = 1.049 should result in a used line-height of 10.489999771118164px
10 PASS with font-size: 10px, #target.style['line-height'] = 1.0491 should result in a used line-height of 10.49100112915039px
 9PASS with font-size: 10px, #target.style['line-height'] = 1.049 should result in a used line-height of 10.49px
 10PASS with font-size: 10px, #target.style['line-height'] = 1.0491 should result in a used line-height of 10.491001px
1111PASS with font-size: 10px, #target.style['line-height'] = 0 should result in a used line-height of 0px
1212PASS with font-size: 10px, #target.style['line-height'] = 1 should result in a used line-height of 10px
1313

LayoutTests/fast/css/line-height-get-computed-style.html

2323 }, `with font-size: 10px, #target.style['line-height'] = ${line_height_percent} should result in a used line-height of ${expected_line_height}`)
2424 }
2525
26  // Per spec, CSS numbers shouldn't serialize with exponents. When the following bug is fixed, this expectation will
27  // need to be updated. https://bugs.webkit.org/show_bug.cgi?id=218880
28  test_line_height(1e+26, '9.999999146971785e+26px')
 26 test_line_height(1e+26, '999999914697178458896728064px')
2927
30  // Per spec, CSS numbers shouldn't serialize with more than 6 digits. When the following bug is fixed, the
31  // offending expectations below will need to be updated. https://bugs.webkit.org/show_bug.cgi?id=218880
32  test_line_height(2.53821, '25.382099151611328px')
33  test_line_height(2.6666667, '26.666664123535156px')
 28 // Per spec, CSS numbers shouldn't serialize with more than 6 decimal places.
 29 test_line_height(2.53821, '25.382099px')
 30 test_line_height(2.6666667, '26.666664px')
3431 // 20 decimals.
35  test_line_height(2.12345678912345678912, '21.234567642211914px')
 32 test_line_height(2.12345678912345678912, '21.234568px')
3633 test_line_height(2.5, '25px')
3734 test_line_height(2, '20px')
3835 test_line_height(1.05, '10.5px')
39  test_line_height(1.049, '10.489999771118164px')
40  test_line_height(1.0491, '10.49100112915039px')
 36 test_line_height(1.049, '10.49px')
 37 test_line_height(1.0491, '10.491001px')
4138 test_line_height(0, '0px')
4239 test_line_height(1, '10px')
4340

LayoutTests/fast/css/parsing-stroke-width-expected.txt

@@On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
44
55
66PASS testComputedStyleInherited("stroke-width: 4px;") is "4px"
7 FAIL testComputedStyleInherited("stroke-width: 0.01em;") should be 0.01em. Was 0.1599999964237213px.
 7FAIL testComputedStyleInherited("stroke-width: 0.01em;") should be 0.01em. Was 0.16px.
88PASS testComputedStyleInherited("stroke-width: 10%;") is "10%"
99PASS testComputedStyle(";") is "1px"
1010PASS test("stroke-width: 4px;") is "4px"

LayoutTests/fast/css/round-trip-values-expected.txt

@@Basic floats
44'0.0001' 0.0001 pass
550.0001 0.0001 pass
66'123456.123456' 123456.123456 pass
7 '1234567.1234567' 1234567.1234567 pass
8 '12345678.12345678' 12345678.12345678 pass
 7'1234567.1234567' 1234567.123457 pass
 8'12345678.12345678' 12345678.123457 pass
99Trailing zeros
1010'0.00100000' 0.001 pass
11 '0.001000001' 0.001000001 pass
12 '0.12345000001' 0.12345000001 pass
13 '0.12304567' 0.12304567 pass
14 '0.12340567' 0.12340567 pass
15 '0.12345067' 0.12345067 pass
16 '0.12345607' 0.12345607 pass
17 '0.12345670' 0.1234567 pass
 11'0.001000001' 0.001 pass
 12'0.12345000001' 0.12345 pass
 13'0.12304567' 0.123046 pass
 14'0.12340567' 0.123406 pass
 15'0.12345067' 0.123451 pass
 16'0.12345607' 0.123456 pass
 17'0.12345670' 0.123457 pass
1818Repeating decimals
19 1/3 0.3333333333333333 pass
20 123 + 1/3 123.33333333333333 pass
21 13/99 0.13131313131313133 pass
22 123 + 13/99 123.13131313131314 pass
23 100/999 0.1001001001001001 pass
24 123 + 100/999 123.10010010010011 pass
 191/3 0.333333 pass
 20123 + 1/3 123.333333 pass
 2113/99 0.131313 pass
 22123 + 13/99 123.131313 pass
 23100/999 0.1001 pass
 24123 + 100/999 123.1001 pass
2525Large numbers
262612345678 12345678 pass
2727123456789 123456789 pass

@@Weird numbers
3737Number.NaN 12345678901234568 pass
38381/0 12345678901234568 pass
3939Math.sqrt(-1) 12345678901234568 pass
40 1/0.9999 1.000100010001 pass
41 1/0.99999 1.000010000100001 pass
42 1/0.999999 1.000001000001 pass
43 1/0.9999999 1.00000010000001 pass
44 1/0.99999999 1.0000000100000002 pass
 401/0.9999 1.0001 pass
 411/0.99999 1.00001 pass
 421/0.999999 1.000001 pass
 431/0.9999999 1 pass
 441/0.99999999 1 pass

LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-val-006-expected.txt

11
2 FAIL The revert keyword works with @keyframes assert_equals: expected "21.440000534057617px" but got "0px"
 2FAIL The revert keyword works with @keyframes assert_equals: expected "21.440001px" but got "0px"
33

LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-val-007-expected.txt

11
2 FAIL A @keyframe animation with revert works when applied to multiple identical elements assert_equals: expected "21.440000534057617px" but got "0px"
 2FAIL A @keyframe animation with revert works when applied to multiple identical elements assert_equals: expected "21.440001px" but got "0px"
33

LayoutTests/imported/w3c/web-platform-tests/css/css-easing/cubic-bezier-timing-functions-output-expected.txt

11
2 FAIL cubic-bezier easing with input progress greater than 1 assert_approx_equals: The left of the animation should be approximately 98.8706654939602 at 230ms expected 98.8706654939602 +/- 0.01 but got 98.89859008789062
3 FAIL cubic-bezier easing with input progress greater than 1 and where the tangent on the upper boundary is infinity assert_approx_equals: The left of the animation should be approximately 106.31755608768113 at 230ms expected 106.31755608768113 +/- 0.01 but got 106.3595962524414
4 FAIL cubic-bezier easing with input progress less than 0 assert_approx_equals: The left of the animation should be approximately -16.589193103032184 at 10ms expected -16.589193103032184 +/- 0.01 but got -17.50836753845215
5 FAIL cubic-bezier easing with input progress less than 0 and where the tangent on the lower boundary is infinity assert_approx_equals: The left of the animation should be approximately 0 at 300ms expected 0 +/- 0.01 but got 512.0774536132812
 2FAIL cubic-bezier easing with input progress greater than 1 assert_approx_equals: The left of the animation should be approximately 98.8706654939602 at 230ms expected 98.8706654939602 +/- 0.01 but got 98.89859
 3FAIL cubic-bezier easing with input progress greater than 1 and where the tangent on the upper boundary is infinity assert_approx_equals: The left of the animation should be approximately 106.31755608768113 at 230ms expected 106.31755608768113 +/- 0.01 but got 106.359596
 4FAIL cubic-bezier easing with input progress less than 0 assert_approx_equals: The left of the animation should be approximately -16.589193103032184 at 10ms expected -16.589193103032184 +/- 0.01 but got -17.508368
 5FAIL cubic-bezier easing with input progress less than 0 and where the tangent on the lower boundary is infinity assert_approx_equals: The left of the animation should be approximately 0 at 300ms expected 0 +/- 0.01 but got 512.077454
66

LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/parsing/font-computed-expected.txt

@@PASS small-caption should be a supported system font.
77PASS status-bar should be a supported system font.
88FAIL Property font value 'xx-small serif' assert_equals: expected "9px serif" but got "normal normal normal normal 9px/normal serif"
99FAIL Property font value 'normal medium/normal sans-serif' assert_equals: expected "16px sans-serif" but got "normal normal normal normal 16px/normal sans-serif"
10 FAIL Property font value 'normal normal xx-large/1.2 cursive' assert_equals: expected "32px / 38.400001525878906px cursive" but got "normal normal normal normal 32px/38.400001525878906px cursive"
 10FAIL Property font value 'normal normal xx-large/1.2 cursive' assert_equals: expected "32px / 38.400002px cursive" but got "normal normal normal normal 32px/38.400002px cursive"
1111FAIL Property font value 'normal normal normal larger/calc(120% + 1.2em) fantasy' assert_equals: expected "48px / normal fantasy" but got "normal normal normal normal 48px/normal fantasy"
12 FAIL Property font value 'normal normal normal normal smaller monospace' assert_equals: expected "33.33333206176758px monospace" but got "normal normal normal normal 33.33333206176758px/normal monospace"
 12FAIL Property font value 'normal normal normal normal smaller monospace' assert_equals: expected "33.333332px monospace" but got "normal normal normal normal 33.333332px/normal monospace"
1313FAIL Property font value 'normal normal normal italic 10px/normal Menu' assert_true: 'normal normal normal italic 10px/normal Menu' is a supported value for font. expected true got false
1414FAIL Property font value 'normal normal normal small-caps 20%/1.2 "Non-Generic Example Family Name"' assert_true: 'normal normal normal small-caps 20%/1.2 "Non-Generic Example Family Name"' is a supported value for font. expected true got false
1515FAIL Property font value 'normal normal normal bold calc(30% - 40px)/calc(120% + 1.2em) serif' assert_true: 'normal normal normal bold calc(30% - 40px)/calc(120% + 1.2em) serif' is a supported value for font. expected true got false

@@FAIL Property font value 'normal normal small-caps italic xx-small cursive' asse
2525FAIL Property font value 'normal normal small-caps lighter medium/normal fantasy' assert_true: 'normal normal small-caps lighter medium/normal fantasy' is a supported value for font. expected true got false
2626FAIL Property font value 'normal normal small-caps condensed xx-large/1.2 monospace' assert_true: 'normal normal small-caps condensed xx-large/1.2 monospace' is a supported value for font. expected true got false
2727FAIL Property font value 'normal normal 100 larger/calc(120% + 1.2em) Menu' assert_equals: expected "100 48px / normal Menu" but got "normal normal 100 normal 48px/normal Menu"
28 FAIL Property font value 'normal normal 900 normal smaller "Non-Generic Example Family Name"' assert_equals: expected "900 33.33333206176758px \"Non-Generic Example Family Name\"" but got "normal normal 900 normal 33.33333206176758px/normal \"Non-Generic Example Family Name\""
 28FAIL Property font value 'normal normal 900 normal smaller "Non-Generic Example Family Name"' assert_equals: expected "900 33.333332px \"Non-Generic Example Family Name\"" but got "normal normal 900 normal 33.333332px/normal \"Non-Generic Example Family Name\""
2929FAIL Property font value 'normal normal bold italic 10px/normal serif' assert_true: 'normal normal bold italic 10px/normal serif' is a supported value for font. expected true got false
3030FAIL Property font value 'normal normal bolder small-caps 20%/1.2 sans-serif' assert_true: 'normal normal bolder small-caps 20%/1.2 sans-serif' is a supported value for font. expected true got false
3131FAIL Property font value 'normal normal lighter semi-condensed calc(30% - 40px)/calc(120% + 1.2em) cursive' assert_equals: expected "700 semi-condensed 0px / normal cursive" but got "normal normal bold semi-condensed 0px/normal cursive"

@@FAIL Property font value 'normal normal semi-expanded xx-small fantasy' assert_e
3333FAIL Property font value 'normal normal expanded normal medium/normal monospace' assert_equals: expected "expanded 13px monospace" but got "normal normal normal expanded 13px/normal monospace"
3434FAIL Property font value 'normal normal extra-expanded italic xx-large/1.2 Menu' assert_true: 'normal normal extra-expanded italic xx-large/1.2 Menu' is a supported value for font. expected true got false
3535FAIL Property font value 'normal normal ultra-expanded small-caps larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_true: 'normal normal ultra-expanded small-caps larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' is a supported value for font. expected true got false
36 FAIL Property font value 'normal normal ultra-condensed 100 smaller serif' assert_equals: expected "100 ultra-condensed 33.33333206176758px serif" but got "normal normal 100 ultra-condensed 33.33333206176758px/normal serif"
 36FAIL Property font value 'normal normal ultra-condensed 100 smaller serif' assert_equals: expected "100 ultra-condensed 33.333332px serif" but got "normal normal 100 ultra-condensed 33.333332px/normal serif"
3737FAIL Property font value 'normal italic 10px/normal sans-serif' assert_true: 'normal italic 10px/normal sans-serif' is a supported value for font. expected true got false
3838FAIL Property font value 'normal italic normal 20%/1.2 cursive' assert_true: 'normal italic normal 20%/1.2 cursive' is a supported value for font. expected true got false
3939FAIL Property font value 'normal italic normal normal calc(30% - 40px)/calc(120% + 1.2em) fantasy' assert_true: 'normal italic normal normal calc(30% - 40px)/calc(120% + 1.2em) fantasy' is a supported value for font. expected true got false

@@FAIL Property font value 'normal small-caps normal xx-small "Non-Generic Example
5757FAIL Property font value 'normal small-caps normal normal medium/normal serif' assert_equals: expected "small-caps 16px serif" but got "normal small-caps normal normal 16px/normal serif"
5858FAIL Property font value 'normal small-caps normal italic xx-large/1.2 sans-serif' assert_true: 'normal small-caps normal italic xx-large/1.2 sans-serif' is a supported value for font. expected true got false
5959FAIL Property font value 'normal small-caps normal bolder larger/calc(120% + 1.2em) cursive' assert_true: 'normal small-caps normal bolder larger/calc(120% + 1.2em) cursive' is a supported value for font. expected true got false
60 FAIL Property font value 'normal small-caps normal ultra-condensed smaller fantasy' assert_equals: expected "small-caps ultra-condensed 33.33333206176758px fantasy" but got "normal small-caps normal ultra-condensed 33.33333206176758px/normal fantasy"
 60FAIL Property font value 'normal small-caps normal ultra-condensed smaller fantasy' assert_equals: expected "small-caps ultra-condensed 33.333332px fantasy" but got "normal small-caps normal ultra-condensed 33.333332px/normal fantasy"
6161FAIL Property font value 'normal small-caps italic 10px/normal monospace' assert_true: 'normal small-caps italic 10px/normal monospace' is a supported value for font. expected true got false
6262FAIL Property font value 'normal small-caps italic normal 20%/1.2 Menu' assert_true: 'normal small-caps italic normal 20%/1.2 Menu' is a supported value for font. expected true got false
6363FAIL Property font value 'normal small-caps italic lighter calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_true: 'normal small-caps italic lighter calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' is a supported value for font. expected true got false
6464FAIL Property font value 'normal small-caps italic extra-condensed xx-small serif' assert_true: 'normal small-caps italic extra-condensed xx-small serif' is a supported value for font. expected true got false
6565FAIL Property font value 'normal small-caps 100 medium/normal sans-serif' assert_equals: expected "small-caps 100 16px sans-serif" but got "normal small-caps 100 normal 16px/normal sans-serif"
66 FAIL Property font value 'normal small-caps 900 normal xx-large/1.2 cursive' assert_equals: expected "small-caps 900 32px / 38.400001525878906px cursive" but got "normal small-caps 900 normal 32px/38.400001525878906px cursive"
 66FAIL Property font value 'normal small-caps 900 normal xx-large/1.2 cursive' assert_equals: expected "small-caps 900 32px / 38.400002px cursive" but got "normal small-caps 900 normal 32px/38.400002px cursive"
6767FAIL Property font value 'normal small-caps bold italic larger/calc(120% + 1.2em) fantasy' assert_true: 'normal small-caps bold italic larger/calc(120% + 1.2em) fantasy' is a supported value for font. expected true got false
68 FAIL Property font value 'normal small-caps bolder condensed smaller monospace' assert_equals: expected "small-caps 900 condensed 33.33333206176758px monospace" but got "normal small-caps 900 condensed 33.33333206176758px/normal monospace"
 68FAIL Property font value 'normal small-caps bolder condensed smaller monospace' assert_equals: expected "small-caps 900 condensed 33.333332px monospace" but got "normal small-caps 900 condensed 33.333332px/normal monospace"
6969FAIL Property font value 'normal small-caps semi-condensed 10px/normal Menu' assert_equals: expected "small-caps semi-condensed 10px Menu" but got "normal small-caps normal semi-condensed 10px/normal Menu"
70 FAIL Property font value 'normal small-caps semi-expanded normal 20%/1.2 "Non-Generic Example Family Name"' assert_equals: expected "small-caps semi-expanded 8px / 9.600000381469727px \"Non-Generic Example Family Name\"" but got "normal small-caps normal semi-expanded 8px/9.600000381469727px \"Non-Generic Example Family Name\""
 70FAIL Property font value 'normal small-caps semi-expanded normal 20%/1.2 "Non-Generic Example Family Name"' assert_equals: expected "small-caps semi-expanded 8px / 9.6px \"Non-Generic Example Family Name\"" but got "normal small-caps normal semi-expanded 8px/9.6px \"Non-Generic Example Family Name\""
7171FAIL Property font value 'normal small-caps expanded italic calc(30% - 40px)/calc(120% + 1.2em) serif' assert_true: 'normal small-caps expanded italic calc(30% - 40px)/calc(120% + 1.2em) serif' is a supported value for font. expected true got false
7272FAIL Property font value 'normal small-caps extra-expanded lighter xx-small sans-serif' assert_equals: expected "small-caps 700 extra-expanded 9px sans-serif" but got "normal small-caps bold extra-expanded 9px/normal sans-serif"
7373FAIL Property font value 'normal 100 medium/normal cursive' assert_equals: expected "100 16px cursive" but got "normal normal 100 normal 16px/normal cursive"
74 FAIL Property font value 'normal 900 normal xx-large/1.2 fantasy' assert_equals: expected "900 32px / 38.400001525878906px fantasy" but got "normal normal 900 normal 32px/38.400001525878906px fantasy"
 74FAIL Property font value 'normal 900 normal xx-large/1.2 fantasy' assert_equals: expected "900 32px / 38.400002px fantasy" but got "normal normal 900 normal 32px/38.400002px fantasy"
7575FAIL Property font value 'normal bold normal normal larger/calc(120% + 1.2em) monospace' assert_equals: expected "700 48px / normal monospace" but got "normal normal bold normal 48px/normal monospace"
7676FAIL Property font value 'normal bolder normal italic smaller Menu' assert_true: 'normal bolder normal italic smaller Menu' is a supported value for font. expected true got false
7777FAIL Property font value 'normal lighter normal small-caps 10px/normal "Non-Generic Example Family Name"' assert_true: 'normal lighter normal small-caps 10px/normal "Non-Generic Example Family Name"' is a supported value for font. expected true got false
78 FAIL Property font value 'normal 100 normal ultra-expanded 20%/1.2 serif' assert_equals: expected "100 ultra-expanded 8px / 9.600000381469727px serif" but got "normal normal 100 ultra-expanded 8px/9.600000381469727px serif"
 78FAIL Property font value 'normal 100 normal ultra-expanded 20%/1.2 serif' assert_equals: expected "100 ultra-expanded 8px / 9.6px serif" but got "normal normal 100 ultra-expanded 8px/9.6px serif"
7979FAIL Property font value 'normal 900 italic calc(30% - 40px)/calc(120% + 1.2em) sans-serif' assert_true: 'normal 900 italic calc(30% - 40px)/calc(120% + 1.2em) sans-serif' is a supported value for font. expected true got false
8080FAIL Property font value 'normal bold italic normal xx-small cursive' assert_true: 'normal bold italic normal xx-small cursive' is a supported value for font. expected true got false
8181FAIL Property font value 'normal bolder italic small-caps medium/normal fantasy' assert_true: 'normal bolder italic small-caps medium/normal fantasy' is a supported value for font. expected true got false
8282FAIL Property font value 'normal lighter italic ultra-condensed xx-large/1.2 monospace' assert_true: 'normal lighter italic ultra-condensed xx-large/1.2 monospace' is a supported value for font. expected true got false
8383FAIL Property font value 'normal 100 small-caps larger/calc(120% + 1.2em) Menu' assert_equals: expected "small-caps 100 48px / normal Menu" but got "normal small-caps 100 normal 48px/normal Menu"
84 FAIL Property font value 'normal 900 small-caps normal smaller "Non-Generic Example Family Name"' assert_equals: expected "small-caps 900 33.33333206176758px \"Non-Generic Example Family Name\"" but got "normal small-caps 900 normal 33.33333206176758px/normal \"Non-Generic Example Family Name\""
 84FAIL Property font value 'normal 900 small-caps normal smaller "Non-Generic Example Family Name"' assert_equals: expected "small-caps 900 33.333332px \"Non-Generic Example Family Name\"" but got "normal small-caps 900 normal 33.333332px/normal \"Non-Generic Example Family Name\""
8585FAIL Property font value 'normal bold small-caps italic 10px/normal serif' assert_true: 'normal bold small-caps italic 10px/normal serif' is a supported value for font. expected true got false
86 FAIL Property font value 'normal bolder small-caps extra-condensed 20%/1.2 sans-serif' assert_equals: expected "small-caps 900 extra-condensed 8px / 9.600000381469727px sans-serif" but got "normal small-caps 900 extra-condensed 8px/9.600000381469727px sans-serif"
 86FAIL Property font value 'normal bolder small-caps extra-condensed 20%/1.2 sans-serif' assert_equals: expected "small-caps 900 extra-condensed 8px / 9.6px sans-serif" but got "normal small-caps 900 extra-condensed 8px/9.6px sans-serif"
8787FAIL Property font value 'normal lighter condensed calc(30% - 40px)/calc(120% + 1.2em) cursive' assert_equals: expected "700 condensed 0px / normal cursive" but got "normal normal bold condensed 0px/normal cursive"
8888FAIL Property font value 'normal 100 semi-condensed normal xx-small fantasy' assert_equals: expected "100 semi-condensed 9px fantasy" but got "normal normal 100 semi-condensed 9px/normal fantasy"
8989FAIL Property font value 'normal 900 semi-expanded italic medium/normal monospace' assert_true: 'normal 900 semi-expanded italic medium/normal monospace' is a supported value for font. expected true got false
90 FAIL Property font value 'normal bold expanded small-caps xx-large/1.2 Menu' assert_equals: expected "small-caps 700 expanded 32px / 38.400001525878906px Menu" but got "normal small-caps bold expanded 32px/38.400001525878906px Menu"
 90FAIL Property font value 'normal bold expanded small-caps xx-large/1.2 Menu' assert_equals: expected "small-caps 700 expanded 32px / 38.400002px Menu" but got "normal small-caps bold expanded 32px/38.400002px Menu"
9191FAIL Property font value 'normal extra-expanded larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_equals: expected "extra-expanded 48px / normal \"Non-Generic Example Family Name\"" but got "normal normal normal extra-expanded 48px/normal \"Non-Generic Example Family Name\""
92 FAIL Property font value 'normal ultra-expanded normal smaller serif' assert_equals: expected "ultra-expanded 33.33333206176758px serif" but got "normal normal normal ultra-expanded 33.33333206176758px/normal serif"
 92FAIL Property font value 'normal ultra-expanded normal smaller serif' assert_equals: expected "ultra-expanded 33.333332px serif" but got "normal normal normal ultra-expanded 33.333332px/normal serif"
9393FAIL Property font value 'normal ultra-condensed normal normal 10px/normal sans-serif' assert_equals: expected "ultra-condensed 10px sans-serif" but got "normal normal normal ultra-condensed 10px/normal sans-serif"
9494FAIL Property font value 'normal extra-condensed normal italic 20%/1.2 cursive' assert_true: 'normal extra-condensed normal italic 20%/1.2 cursive' is a supported value for font. expected true got false
9595FAIL Property font value 'normal condensed normal small-caps calc(30% - 40px)/calc(120% + 1.2em) fantasy' assert_true: 'normal condensed normal small-caps calc(30% - 40px)/calc(120% + 1.2em) fantasy' is a supported value for font. expected true got false

@@FAIL Property font value 'normal expanded italic normal xx-large/1.2 "Non-Generi
9999FAIL Property font value 'normal extra-expanded italic small-caps larger/calc(120% + 1.2em) serif' assert_true: 'normal extra-expanded italic small-caps larger/calc(120% + 1.2em) serif' is a supported value for font. expected true got false
100100FAIL Property font value 'normal ultra-expanded italic lighter smaller sans-serif' assert_true: 'normal ultra-expanded italic lighter smaller sans-serif' is a supported value for font. expected true got false
101101FAIL Property font value 'normal ultra-condensed small-caps 10px/normal cursive' assert_equals: expected "small-caps ultra-condensed 10px cursive" but got "normal small-caps normal ultra-condensed 10px/normal cursive"
102 FAIL Property font value 'normal extra-condensed small-caps normal 20%/1.2 fantasy' assert_equals: expected "small-caps extra-condensed 8px / 9.600000381469727px fantasy" but got "normal small-caps normal extra-condensed 8px/9.600000381469727px fantasy"
 102FAIL Property font value 'normal extra-condensed small-caps normal 20%/1.2 fantasy' assert_equals: expected "small-caps extra-condensed 8px / 9.6px fantasy" but got "normal small-caps normal extra-condensed 8px/9.6px fantasy"
103103FAIL Property font value 'normal condensed small-caps italic calc(30% - 40px)/calc(120% + 1.2em) monospace' assert_true: 'normal condensed small-caps italic calc(30% - 40px)/calc(120% + 1.2em) monospace' is a supported value for font. expected true got false
104104FAIL Property font value 'normal semi-condensed small-caps 100 xx-small Menu' assert_equals: expected "small-caps 100 semi-condensed 9px Menu" but got "normal small-caps 100 semi-condensed 9px/normal Menu"
105105FAIL Property font value 'normal semi-expanded 900 medium/normal "Non-Generic Example Family Name"' assert_equals: expected "900 semi-expanded 16px \"Non-Generic Example Family Name\"" but got "normal normal 900 semi-expanded 16px/normal \"Non-Generic Example Family Name\""
106 FAIL Property font value 'normal expanded bold normal xx-large/1.2 serif' assert_equals: expected "700 expanded 32px / 38.400001525878906px serif" but got "normal normal bold expanded 32px/38.400001525878906px serif"
 106FAIL Property font value 'normal expanded bold normal xx-large/1.2 serif' assert_equals: expected "700 expanded 32px / 38.400002px serif" but got "normal normal bold expanded 32px/38.400002px serif"
107107FAIL Property font value 'normal extra-expanded bolder italic larger/calc(120% + 1.2em) sans-serif' assert_true: 'normal extra-expanded bolder italic larger/calc(120% + 1.2em) sans-serif' is a supported value for font. expected true got false
108 FAIL Property font value 'normal ultra-expanded lighter small-caps smaller cursive' assert_equals: expected "small-caps 700 ultra-expanded 33.33333206176758px cursive" but got "normal small-caps bold ultra-expanded 33.33333206176758px/normal cursive"
 108FAIL Property font value 'normal ultra-expanded lighter small-caps smaller cursive' assert_equals: expected "small-caps 700 ultra-expanded 33.333332px cursive" but got "normal small-caps bold ultra-expanded 33.333332px/normal cursive"
109109FAIL Property font value 'italic 10px/normal fantasy' assert_equals: expected "italic 10px fantasy" but got "italic normal normal normal 10px/normal fantasy"
110 FAIL Property font value 'italic normal 20%/1.2 monospace' assert_equals: expected "italic 8px / 9.600000381469727px monospace" but got "italic normal normal normal 8px/9.600000381469727px monospace"
 110FAIL Property font value 'italic normal 20%/1.2 monospace' assert_equals: expected "italic 8px / 9.6px monospace" but got "italic normal normal normal 8px/9.6px monospace"
111111FAIL Property font value 'italic normal normal calc(30% - 40px)/calc(120% + 1.2em) Menu' assert_equals: expected "italic 0px / normal Menu" but got "italic normal normal normal 0px/normal Menu"
112112FAIL Property font value 'italic normal normal normal xx-small "Non-Generic Example Family Name"' assert_equals: expected "italic 9px \"Non-Generic Example Family Name\"" but got "italic normal normal normal 9px/normal \"Non-Generic Example Family Name\""
113113FAIL Property font value 'italic normal normal small-caps medium/normal serif' assert_true: 'italic normal normal small-caps medium/normal serif' is a supported value for font. expected true got false

@@FAIL Property font value 'italic normal bold xx-small serif' assert_equals: expe
121121FAIL Property font value 'italic normal bolder normal medium/normal sans-serif' assert_equals: expected "italic 900 16px sans-serif" but got "italic normal 900 normal 16px/normal sans-serif"
122122FAIL Property font value 'italic normal lighter small-caps xx-large/1.2 cursive' assert_true: 'italic normal lighter small-caps xx-large/1.2 cursive' is a supported value for font. expected true got false
123123FAIL Property font value 'italic normal 100 condensed larger/calc(120% + 1.2em) fantasy' assert_equals: expected "italic 100 condensed 48px / normal fantasy" but got "italic normal 100 condensed 48px/normal fantasy"
124 FAIL Property font value 'italic normal semi-condensed smaller monospace' assert_equals: expected "italic semi-condensed 33.33333206176758px monospace" but got "italic normal normal semi-condensed 33.33333206176758px/normal monospace"
 124FAIL Property font value 'italic normal semi-condensed smaller monospace' assert_equals: expected "italic semi-condensed 33.333332px monospace" but got "italic normal normal semi-condensed 33.333332px/normal monospace"
125125FAIL Property font value 'italic normal semi-expanded normal 10px/normal Menu' assert_equals: expected "italic semi-expanded 10px Menu" but got "italic normal normal semi-expanded 10px/normal Menu"
126126FAIL Property font value 'italic normal expanded small-caps 20%/1.2 "Non-Generic Example Family Name"' assert_true: 'italic normal expanded small-caps 20%/1.2 "Non-Generic Example Family Name"' is a supported value for font. expected true got false
127127FAIL Property font value 'italic normal extra-expanded 900 calc(30% - 40px)/calc(120% + 1.2em) serif' assert_equals: expected "italic 900 extra-expanded 0px / normal serif" but got "italic normal 900 extra-expanded 0px/normal serif"
128128FAIL Property font value 'italic small-caps xx-small sans-serif' assert_equals: expected "italic small-caps 9px sans-serif" but got "italic small-caps normal normal 9px/normal sans-serif"
129129FAIL Property font value 'italic small-caps normal medium/normal cursive' assert_equals: expected "italic small-caps 16px cursive" but got "italic small-caps normal normal 16px/normal cursive"
130 FAIL Property font value 'italic small-caps normal normal xx-large/1.2 fantasy' assert_equals: expected "italic small-caps 32px / 38.400001525878906px fantasy" but got "italic small-caps normal normal 32px/38.400001525878906px fantasy"
 130FAIL Property font value 'italic small-caps normal normal xx-large/1.2 fantasy' assert_equals: expected "italic small-caps 32px / 38.400002px fantasy" but got "italic small-caps normal normal 32px/38.400002px fantasy"
131131FAIL Property font value 'italic small-caps normal bold larger/calc(120% + 1.2em) monospace' assert_true: 'italic small-caps normal bold larger/calc(120% + 1.2em) monospace' is a supported value for font. expected true got false
132 FAIL Property font value 'italic small-caps normal ultra-expanded smaller Menu' assert_equals: expected "italic small-caps ultra-expanded 33.33333206176758px Menu" but got "italic small-caps normal ultra-expanded 33.33333206176758px/normal Menu"
 132FAIL Property font value 'italic small-caps normal ultra-expanded smaller Menu' assert_equals: expected "italic small-caps ultra-expanded 33.333332px Menu" but got "italic small-caps normal ultra-expanded 33.333332px/normal Menu"
133133FAIL Property font value 'italic small-caps bolder 10px/normal "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps 900 10px \"Non-Generic Example Family Name\"" but got "italic small-caps 900 normal 10px/normal \"Non-Generic Example Family Name\""
134 FAIL Property font value 'italic small-caps lighter normal 20%/1.2 serif' assert_equals: expected "italic small-caps 700 8px / 9.600000381469727px serif" but got "italic small-caps bold normal 8px/9.600000381469727px serif"
 134FAIL Property font value 'italic small-caps lighter normal 20%/1.2 serif' assert_equals: expected "italic small-caps 700 8px / 9.6px serif" but got "italic small-caps bold normal 8px/9.6px serif"
135135FAIL Property font value 'italic small-caps 100 ultra-condensed calc(30% - 40px)/calc(120% + 1.2em) sans-serif' assert_equals: expected "italic small-caps 100 ultra-condensed 0px / normal sans-serif" but got "italic small-caps 100 ultra-condensed 0px/normal sans-serif"
136136FAIL Property font value 'italic small-caps extra-condensed xx-small cursive' assert_equals: expected "italic small-caps extra-condensed 9px cursive" but got "italic small-caps normal extra-condensed 9px/normal cursive"
137137FAIL Property font value 'italic small-caps condensed normal medium/normal fantasy' assert_equals: expected "italic small-caps condensed 16px fantasy" but got "italic small-caps normal condensed 16px/normal fantasy"
138 FAIL Property font value 'italic small-caps semi-condensed 900 xx-large/1.2 monospace' assert_equals: expected "italic small-caps 900 semi-condensed 26px / 31.200000762939453px monospace" but got "italic small-caps 900 semi-condensed 26px/31.200000762939453px monospace"
 138FAIL Property font value 'italic small-caps semi-condensed 900 xx-large/1.2 monospace' assert_equals: expected "italic small-caps 900 semi-condensed 26px / 31.200001px monospace" but got "italic small-caps 900 semi-condensed 26px/31.200001px monospace"
139139FAIL Property font value 'italic bold larger/calc(120% + 1.2em) Menu' assert_equals: expected "italic 700 48px / normal Menu" but got "italic normal bold normal 48px/normal Menu"
140 FAIL Property font value 'italic bolder normal smaller "Non-Generic Example Family Name"' assert_equals: expected "italic 900 33.33333206176758px \"Non-Generic Example Family Name\"" but got "italic normal 900 normal 33.33333206176758px/normal \"Non-Generic Example Family Name\""
 140FAIL Property font value 'italic bolder normal smaller "Non-Generic Example Family Name"' assert_equals: expected "italic 900 33.333332px \"Non-Generic Example Family Name\"" but got "italic normal 900 normal 33.333332px/normal \"Non-Generic Example Family Name\""
141141FAIL Property font value 'italic lighter normal normal 10px/normal serif' assert_equals: expected "italic 700 10px serif" but got "italic normal bold normal 10px/normal serif"
142142FAIL Property font value 'italic 100 normal small-caps 20%/1.2 sans-serif' assert_true: 'italic 100 normal small-caps 20%/1.2 sans-serif' is a supported value for font. expected true got false
143143FAIL Property font value 'italic 900 normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) cursive' assert_equals: expected "italic 900 semi-expanded 0px / normal cursive" but got "italic normal 900 semi-expanded 0px/normal cursive"
144144FAIL Property font value 'italic bold small-caps xx-small fantasy' assert_equals: expected "italic small-caps 700 9px fantasy" but got "italic small-caps bold normal 9px/normal fantasy"
145145FAIL Property font value 'italic bolder small-caps normal medium/normal monospace' assert_equals: expected "italic small-caps 900 13px monospace" but got "italic small-caps 900 normal 13px/normal monospace"
146 FAIL Property font value 'italic lighter small-caps expanded xx-large/1.2 Menu' assert_equals: expected "italic small-caps 700 expanded 32px / 38.400001525878906px Menu" but got "italic small-caps bold expanded 32px/38.400001525878906px Menu"
 146FAIL Property font value 'italic lighter small-caps expanded xx-large/1.2 Menu' assert_equals: expected "italic small-caps 700 expanded 32px / 38.400002px Menu" but got "italic small-caps bold expanded 32px/38.400002px Menu"
147147FAIL Property font value 'italic 100 extra-expanded larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_equals: expected "italic 100 extra-expanded 48px / normal \"Non-Generic Example Family Name\"" but got "italic normal 100 extra-expanded 48px/normal \"Non-Generic Example Family Name\""
148 FAIL Property font value 'italic 900 ultra-expanded normal smaller serif' assert_equals: expected "italic 900 ultra-expanded 33.33333206176758px serif" but got "italic normal 900 ultra-expanded 33.33333206176758px/normal serif"
 148FAIL Property font value 'italic 900 ultra-expanded normal smaller serif' assert_equals: expected "italic 900 ultra-expanded 33.333332px serif" but got "italic normal 900 ultra-expanded 33.333332px/normal serif"
149149FAIL Property font value 'italic bold ultra-condensed small-caps 10px/normal sans-serif' assert_equals: expected "italic small-caps 700 ultra-condensed 10px sans-serif" but got "italic small-caps bold ultra-condensed 10px/normal sans-serif"
150 FAIL Property font value 'italic extra-condensed 20%/1.2 cursive' assert_equals: expected "italic extra-condensed 8px / 9.600000381469727px cursive" but got "italic normal normal extra-condensed 8px/9.600000381469727px cursive"
 150FAIL Property font value 'italic extra-condensed 20%/1.2 cursive' assert_equals: expected "italic extra-condensed 8px / 9.6px cursive" but got "italic normal normal extra-condensed 8px/9.6px cursive"
151151FAIL Property font value 'italic condensed normal calc(30% - 40px)/calc(120% + 1.2em) fantasy' assert_equals: expected "italic condensed 0px / normal fantasy" but got "italic normal normal condensed 0px/normal fantasy"
152152FAIL Property font value 'italic semi-condensed normal normal xx-small monospace' assert_equals: expected "italic semi-condensed 9px monospace" but got "italic normal normal semi-condensed 9px/normal monospace"
153153FAIL Property font value 'italic semi-expanded normal small-caps medium/normal Menu' assert_true: 'italic semi-expanded normal small-caps medium/normal Menu' is a supported value for font. expected true got false
154 FAIL Property font value 'italic expanded normal bolder xx-large/1.2 "Non-Generic Example Family Name"' assert_equals: expected "italic 900 expanded 32px / 38.400001525878906px \"Non-Generic Example Family Name\"" but got "italic normal 900 expanded 32px/38.400001525878906px \"Non-Generic Example Family Name\""
 154FAIL Property font value 'italic expanded normal bolder xx-large/1.2 "Non-Generic Example Family Name"' assert_equals: expected "italic 900 expanded 32px / 38.400002px \"Non-Generic Example Family Name\"" but got "italic normal 900 expanded 32px/38.400002px \"Non-Generic Example Family Name\""
155155FAIL Property font value 'italic extra-expanded small-caps larger/calc(120% + 1.2em) serif' assert_equals: expected "italic small-caps extra-expanded 48px / normal serif" but got "italic small-caps normal extra-expanded 48px/normal serif"
156 FAIL Property font value 'italic ultra-expanded small-caps normal smaller sans-serif' assert_equals: expected "italic small-caps ultra-expanded 33.33333206176758px sans-serif" but got "italic small-caps normal ultra-expanded 33.33333206176758px/normal sans-serif"
 156FAIL Property font value 'italic ultra-expanded small-caps normal smaller sans-serif' assert_equals: expected "italic small-caps ultra-expanded 33.333332px sans-serif" but got "italic small-caps normal ultra-expanded 33.333332px/normal sans-serif"
157157FAIL Property font value 'italic ultra-condensed small-caps lighter 10px/normal cursive' assert_equals: expected "italic small-caps 700 ultra-condensed 10px cursive" but got "italic small-caps bold ultra-condensed 10px/normal cursive"
158 FAIL Property font value 'italic extra-condensed 100 20%/1.2 fantasy' assert_equals: expected "italic 100 extra-condensed 8px / 9.600000381469727px fantasy" but got "italic normal 100 extra-condensed 8px/9.600000381469727px fantasy"
 158FAIL Property font value 'italic extra-condensed 100 20%/1.2 fantasy' assert_equals: expected "italic 100 extra-condensed 8px / 9.6px fantasy" but got "italic normal 100 extra-condensed 8px/9.6px fantasy"
159159FAIL Property font value 'italic condensed 900 normal calc(30% - 40px)/calc(120% + 1.2em) monospace' assert_equals: expected "italic 900 condensed 0px / normal monospace" but got "italic normal 900 condensed 0px/normal monospace"
160160FAIL Property font value 'italic semi-condensed bold small-caps xx-small Menu' assert_equals: expected "italic small-caps 700 semi-condensed 9px Menu" but got "italic small-caps bold semi-condensed 9px/normal Menu"
161161FAIL Property font value 'small-caps medium/normal "Non-Generic Example Family Name"' assert_equals: expected "small-caps 16px \"Non-Generic Example Family Name\"" but got "normal small-caps normal normal 16px/normal \"Non-Generic Example Family Name\""
162 FAIL Property font value 'small-caps normal xx-large/1.2 serif' assert_equals: expected "small-caps 32px / 38.400001525878906px serif" but got "normal small-caps normal normal 32px/38.400001525878906px serif"
 162FAIL Property font value 'small-caps normal xx-large/1.2 serif' assert_equals: expected "small-caps 32px / 38.400002px serif" but got "normal small-caps normal normal 32px/38.400002px serif"
163163FAIL Property font value 'small-caps normal normal larger/calc(120% + 1.2em) sans-serif' assert_equals: expected "small-caps 48px / normal sans-serif" but got "normal small-caps normal normal 48px/normal sans-serif"
164 FAIL Property font value 'small-caps normal normal normal smaller cursive' assert_equals: expected "small-caps 33.33333206176758px cursive" but got "normal small-caps normal normal 33.33333206176758px/normal cursive"
 164FAIL Property font value 'small-caps normal normal normal smaller cursive' assert_equals: expected "small-caps 33.333332px cursive" but got "normal small-caps normal normal 33.333332px/normal cursive"
165165FAIL Property font value 'small-caps normal normal italic 10px/normal fantasy' assert_true: 'small-caps normal normal italic 10px/normal fantasy' is a supported value for font. expected true got false
166166FAIL Property font value 'small-caps normal normal bolder 20%/1.2 monospace' assert_true: 'small-caps normal normal bolder 20%/1.2 monospace' is a supported value for font. expected true got false
167167FAIL Property font value 'small-caps normal normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) Menu' assert_equals: expected "small-caps semi-expanded 0px / normal Menu" but got "normal small-caps normal semi-expanded 0px/normal Menu"

@@FAIL Property font value 'small-caps normal italic xx-small "Non-Generic Example
169169FAIL Property font value 'small-caps normal italic normal medium/normal serif' assert_true: 'small-caps normal italic normal medium/normal serif' is a supported value for font. expected true got false
170170FAIL Property font value 'small-caps normal italic lighter xx-large/1.2 sans-serif' assert_true: 'small-caps normal italic lighter xx-large/1.2 sans-serif' is a supported value for font. expected true got false
171171FAIL Property font value 'small-caps normal italic expanded larger/calc(120% + 1.2em) cursive' assert_true: 'small-caps normal italic expanded larger/calc(120% + 1.2em) cursive' is a supported value for font. expected true got false
172 FAIL Property font value 'small-caps normal 100 smaller fantasy' assert_equals: expected "small-caps 100 33.33333206176758px fantasy" but got "normal small-caps 100 normal 33.33333206176758px/normal fantasy"
 172FAIL Property font value 'small-caps normal 100 smaller fantasy' assert_equals: expected "small-caps 100 33.333332px fantasy" but got "normal small-caps 100 normal 33.333332px/normal fantasy"
173173FAIL Property font value 'small-caps normal 900 normal 10px/normal monospace' assert_equals: expected "small-caps 900 10px monospace" but got "normal small-caps 900 normal 10px/normal monospace"
174174FAIL Property font value 'small-caps normal bold italic 20%/1.2 Menu' assert_true: 'small-caps normal bold italic 20%/1.2 Menu' is a supported value for font. expected true got false
175175FAIL Property font value 'small-caps normal bolder extra-expanded calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_equals: expected "small-caps 900 extra-expanded 0px / normal \"Non-Generic Example Family Name\"" but got "normal small-caps 900 extra-expanded 0px/normal \"Non-Generic Example Family Name\""

@@FAIL Property font value 'small-caps normal ultra-expanded xx-small serif' asser
177177FAIL Property font value 'small-caps normal ultra-condensed normal medium/normal sans-serif' assert_equals: expected "small-caps ultra-condensed 16px sans-serif" but got "normal small-caps normal ultra-condensed 16px/normal sans-serif"
178178FAIL Property font value 'small-caps normal extra-condensed italic xx-large/1.2 cursive' assert_true: 'small-caps normal extra-condensed italic xx-large/1.2 cursive' is a supported value for font. expected true got false
179179FAIL Property font value 'small-caps normal condensed lighter larger/calc(120% + 1.2em) fantasy' assert_equals: expected "small-caps 700 condensed 48px / normal fantasy" but got "normal small-caps bold condensed 48px/normal fantasy"
180 FAIL Property font value 'small-caps italic smaller monospace' assert_equals: expected "italic small-caps 33.33333206176758px monospace" but got "italic small-caps normal normal 33.33333206176758px/normal monospace"
 180FAIL Property font value 'small-caps italic smaller monospace' assert_equals: expected "italic small-caps 33.333332px monospace" but got "italic small-caps normal normal 33.333332px/normal monospace"
181181FAIL Property font value 'small-caps italic normal 10px/normal Menu' assert_equals: expected "italic small-caps 10px Menu" but got "italic small-caps normal normal 10px/normal Menu"
182 FAIL Property font value 'small-caps italic normal normal 20%/1.2 "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps 8px / 9.600000381469727px \"Non-Generic Example Family Name\"" but got "italic small-caps normal normal 8px/9.600000381469727px \"Non-Generic Example Family Name\""
 182FAIL Property font value 'small-caps italic normal normal 20%/1.2 "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps 8px / 9.6px \"Non-Generic Example Family Name\"" but got "italic small-caps normal normal 8px/9.6px \"Non-Generic Example Family Name\""
183183FAIL Property font value 'small-caps italic normal 100 calc(30% - 40px)/calc(120% + 1.2em) serif' assert_true: 'small-caps italic normal 100 calc(30% - 40px)/calc(120% + 1.2em) serif' is a supported value for font. expected true got false
184184FAIL Property font value 'small-caps italic normal semi-condensed xx-small sans-serif' assert_equals: expected "italic small-caps semi-condensed 9px sans-serif" but got "italic small-caps normal semi-condensed 9px/normal sans-serif"
185185FAIL Property font value 'small-caps italic 900 medium/normal cursive' assert_equals: expected "italic small-caps 900 16px cursive" but got "italic small-caps 900 normal 16px/normal cursive"
186 FAIL Property font value 'small-caps italic bold normal xx-large/1.2 fantasy' assert_equals: expected "italic small-caps 700 32px / 38.400001525878906px fantasy" but got "italic small-caps bold normal 32px/38.400001525878906px fantasy"
 186FAIL Property font value 'small-caps italic bold normal xx-large/1.2 fantasy' assert_equals: expected "italic small-caps 700 32px / 38.400002px fantasy" but got "italic small-caps bold normal 32px/38.400002px fantasy"
187187FAIL Property font value 'small-caps italic bolder semi-expanded larger/calc(120% + 1.2em) monospace' assert_equals: expected "italic small-caps 900 semi-expanded 48px / normal monospace" but got "italic small-caps 900 semi-expanded 48px/normal monospace"
188 FAIL Property font value 'small-caps italic expanded smaller Menu' assert_equals: expected "italic small-caps expanded 33.33333206176758px Menu" but got "italic small-caps normal expanded 33.33333206176758px/normal Menu"
 188FAIL Property font value 'small-caps italic expanded smaller Menu' assert_equals: expected "italic small-caps expanded 33.333332px Menu" but got "italic small-caps normal expanded 33.333332px/normal Menu"
189189FAIL Property font value 'small-caps italic extra-expanded normal 10px/normal "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps extra-expanded 10px \"Non-Generic Example Family Name\"" but got "italic small-caps normal extra-expanded 10px/normal \"Non-Generic Example Family Name\""
190 FAIL Property font value 'small-caps italic ultra-expanded lighter 20%/1.2 serif' assert_equals: expected "italic small-caps 700 ultra-expanded 8px / 9.600000381469727px serif" but got "italic small-caps bold ultra-expanded 8px/9.600000381469727px serif"
 190FAIL Property font value 'small-caps italic ultra-expanded lighter 20%/1.2 serif' assert_equals: expected "italic small-caps 700 ultra-expanded 8px / 9.6px serif" but got "italic small-caps bold ultra-expanded 8px/9.6px serif"
191191FAIL Property font value 'small-caps 100 calc(30% - 40px)/calc(120% + 1.2em) sans-serif' assert_equals: expected "small-caps 100 0px / normal sans-serif" but got "normal small-caps 100 normal 0px/normal sans-serif"
192192FAIL Property font value 'small-caps 900 normal xx-small cursive' assert_equals: expected "small-caps 900 9px cursive" but got "normal small-caps 900 normal 9px/normal cursive"
193193FAIL Property font value 'small-caps bold normal normal medium/normal fantasy' assert_equals: expected "small-caps 700 16px fantasy" but got "normal small-caps bold normal 16px/normal fantasy"
194194FAIL Property font value 'small-caps bolder normal italic xx-large/1.2 monospace' assert_true: 'small-caps bolder normal italic xx-large/1.2 monospace' is a supported value for font. expected true got false
195195FAIL Property font value 'small-caps lighter normal ultra-condensed larger/calc(120% + 1.2em) Menu' assert_equals: expected "small-caps 700 ultra-condensed 48px / normal Menu" but got "normal small-caps bold ultra-condensed 48px/normal Menu"
196 FAIL Property font value 'small-caps 100 italic smaller "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps 100 33.33333206176758px \"Non-Generic Example Family Name\"" but got "italic small-caps 100 normal 33.33333206176758px/normal \"Non-Generic Example Family Name\""
 196FAIL Property font value 'small-caps 100 italic smaller "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps 100 33.333332px \"Non-Generic Example Family Name\"" but got "italic small-caps 100 normal 33.333332px/normal \"Non-Generic Example Family Name\""
197197FAIL Property font value 'small-caps 900 italic normal 10px/normal serif' assert_equals: expected "italic small-caps 900 10px serif" but got "italic small-caps 900 normal 10px/normal serif"
198 FAIL Property font value 'small-caps bold italic extra-condensed 20%/1.2 sans-serif' assert_equals: expected "italic small-caps 700 extra-condensed 8px / 9.600000381469727px sans-serif" but got "italic small-caps bold extra-condensed 8px/9.600000381469727px sans-serif"
 198FAIL Property font value 'small-caps bold italic extra-condensed 20%/1.2 sans-serif' assert_equals: expected "italic small-caps 700 extra-condensed 8px / 9.6px sans-serif" but got "italic small-caps bold extra-condensed 8px/9.6px sans-serif"
199199FAIL Property font value 'small-caps bolder condensed calc(30% - 40px)/calc(120% + 1.2em) cursive' assert_equals: expected "small-caps 900 condensed 0px / normal cursive" but got "normal small-caps 900 condensed 0px/normal cursive"
200200FAIL Property font value 'small-caps lighter semi-condensed normal xx-small fantasy' assert_equals: expected "small-caps 700 semi-condensed 9px fantasy" but got "normal small-caps bold semi-condensed 9px/normal fantasy"
201201FAIL Property font value 'small-caps 100 semi-expanded italic medium/normal monospace' assert_equals: expected "italic small-caps 100 semi-expanded 13px monospace" but got "italic small-caps 100 semi-expanded 13px/normal monospace"
202 FAIL Property font value 'small-caps expanded xx-large/1.2 Menu' assert_equals: expected "small-caps expanded 32px / 38.400001525878906px Menu" but got "normal small-caps normal expanded 32px/38.400001525878906px Menu"
 202FAIL Property font value 'small-caps expanded xx-large/1.2 Menu' assert_equals: expected "small-caps expanded 32px / 38.400002px Menu" but got "normal small-caps normal expanded 32px/38.400002px Menu"
203203FAIL Property font value 'small-caps extra-expanded normal larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_equals: expected "small-caps extra-expanded 48px / normal \"Non-Generic Example Family Name\"" but got "normal small-caps normal extra-expanded 48px/normal \"Non-Generic Example Family Name\""
204 FAIL Property font value 'small-caps ultra-expanded normal normal smaller serif' assert_equals: expected "small-caps ultra-expanded 33.33333206176758px serif" but got "normal small-caps normal ultra-expanded 33.33333206176758px/normal serif"
 204FAIL Property font value 'small-caps ultra-expanded normal normal smaller serif' assert_equals: expected "small-caps ultra-expanded 33.333332px serif" but got "normal small-caps normal ultra-expanded 33.333332px/normal serif"
205205FAIL Property font value 'small-caps ultra-condensed normal italic 10px/normal sans-serif' assert_true: 'small-caps ultra-condensed normal italic 10px/normal sans-serif' is a supported value for font. expected true got false
206 FAIL Property font value 'small-caps extra-condensed normal 900 20%/1.2 cursive' assert_equals: expected "small-caps 900 extra-condensed 8px / 9.600000381469727px cursive" but got "normal small-caps 900 extra-condensed 8px/9.600000381469727px cursive"
 206FAIL Property font value 'small-caps extra-condensed normal 900 20%/1.2 cursive' assert_equals: expected "small-caps 900 extra-condensed 8px / 9.6px cursive" but got "normal small-caps 900 extra-condensed 8px/9.6px cursive"
207207FAIL Property font value 'small-caps condensed italic calc(30% - 40px)/calc(120% + 1.2em) fantasy' assert_equals: expected "italic small-caps condensed 0px / normal fantasy" but got "italic small-caps normal condensed 0px/normal fantasy"
208208FAIL Property font value 'small-caps semi-condensed italic normal xx-small monospace' assert_equals: expected "italic small-caps semi-condensed 9px monospace" but got "italic small-caps normal semi-condensed 9px/normal monospace"
209209FAIL Property font value 'small-caps semi-expanded italic bold medium/normal Menu' assert_equals: expected "italic small-caps 700 semi-expanded 16px Menu" but got "italic small-caps bold semi-expanded 16px/normal Menu"
210 FAIL Property font value 'small-caps expanded bolder xx-large/1.2 "Non-Generic Example Family Name"' assert_equals: expected "small-caps 900 expanded 32px / 38.400001525878906px \"Non-Generic Example Family Name\"" but got "normal small-caps 900 expanded 32px/38.400001525878906px \"Non-Generic Example Family Name\""
 210FAIL Property font value 'small-caps expanded bolder xx-large/1.2 "Non-Generic Example Family Name"' assert_equals: expected "small-caps 900 expanded 32px / 38.400002px \"Non-Generic Example Family Name\"" but got "normal small-caps 900 expanded 32px/38.400002px \"Non-Generic Example Family Name\""
211211FAIL Property font value 'small-caps extra-expanded lighter normal larger/calc(120% + 1.2em) serif' assert_equals: expected "small-caps 700 extra-expanded 48px / normal serif" but got "normal small-caps bold extra-expanded 48px/normal serif"
212 FAIL Property font value 'small-caps ultra-expanded 100 italic smaller sans-serif' assert_equals: expected "italic small-caps 100 ultra-expanded 33.33333206176758px sans-serif" but got "italic small-caps 100 ultra-expanded 33.33333206176758px/normal sans-serif"
 212FAIL Property font value 'small-caps ultra-expanded 100 italic smaller sans-serif' assert_equals: expected "italic small-caps 100 ultra-expanded 33.333332px sans-serif" but got "italic small-caps 100 ultra-expanded 33.333332px/normal sans-serif"
213213FAIL Property font value '900 10px/normal cursive' assert_equals: expected "900 10px cursive" but got "normal normal 900 normal 10px/normal cursive"
214 FAIL Property font value 'bold normal 20%/1.2 fantasy' assert_equals: expected "700 8px / 9.600000381469727px fantasy" but got "normal normal bold normal 8px/9.600000381469727px fantasy"
 214FAIL Property font value 'bold normal 20%/1.2 fantasy' assert_equals: expected "700 8px / 9.6px fantasy" but got "normal normal bold normal 8px/9.6px fantasy"
215215FAIL Property font value 'bolder normal normal calc(30% - 40px)/calc(120% + 1.2em) monospace' assert_equals: expected "900 0px / normal monospace" but got "normal normal 900 normal 0px/normal monospace"
216216FAIL Property font value 'lighter normal normal normal xx-small Menu' assert_equals: expected "700 9px Menu" but got "normal normal bold normal 9px/normal Menu"
217217FAIL Property font value '100 normal normal italic medium/normal "Non-Generic Example Family Name"' assert_true: '100 normal normal italic medium/normal "Non-Generic Example Family Name"' is a supported value for font. expected true got false

@@FAIL Property font value 'bold normal small-caps xx-small "Non-Generic Example F
225225FAIL Property font value 'bolder normal small-caps normal medium/normal serif' assert_equals: expected "small-caps 900 16px serif" but got "normal small-caps 900 normal 16px/normal serif"
226226FAIL Property font value 'lighter normal small-caps italic xx-large/1.2 sans-serif' assert_true: 'lighter normal small-caps italic xx-large/1.2 sans-serif' is a supported value for font. expected true got false
227227FAIL Property font value '100 normal small-caps condensed larger/calc(120% + 1.2em) cursive' assert_equals: expected "small-caps 100 condensed 48px / normal cursive" but got "normal small-caps 100 condensed 48px/normal cursive"
228 FAIL Property font value '900 normal semi-condensed smaller fantasy' assert_equals: expected "900 semi-condensed 33.33333206176758px fantasy" but got "normal normal 900 semi-condensed 33.33333206176758px/normal fantasy"
 228FAIL Property font value '900 normal semi-condensed smaller fantasy' assert_equals: expected "900 semi-condensed 33.333332px fantasy" but got "normal normal 900 semi-condensed 33.333332px/normal fantasy"
229229FAIL Property font value 'bold normal semi-expanded normal 10px/normal monospace' assert_equals: expected "700 semi-expanded 10px monospace" but got "normal normal bold semi-expanded 10px/normal monospace"
230230FAIL Property font value 'bolder normal expanded italic 20%/1.2 Menu' assert_true: 'bolder normal expanded italic 20%/1.2 Menu' is a supported value for font. expected true got false
231231FAIL Property font value 'lighter normal extra-expanded small-caps calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_equals: expected "small-caps 700 extra-expanded 0px / normal \"Non-Generic Example Family Name\"" but got "normal small-caps bold extra-expanded 0px/normal \"Non-Generic Example Family Name\""
232232FAIL Property font value '100 italic xx-small serif' assert_equals: expected "italic 100 9px serif" but got "italic normal 100 normal 9px/normal serif"
233233FAIL Property font value '900 italic normal medium/normal sans-serif' assert_equals: expected "italic 900 16px sans-serif" but got "italic normal 900 normal 16px/normal sans-serif"
234 FAIL Property font value 'bold italic normal normal xx-large/1.2 cursive' assert_equals: expected "italic 700 32px / 38.400001525878906px cursive" but got "italic normal bold normal 32px/38.400001525878906px cursive"
 234FAIL Property font value 'bold italic normal normal xx-large/1.2 cursive' assert_equals: expected "italic 700 32px / 38.400002px cursive" but got "italic normal bold normal 32px/38.400002px cursive"
235235FAIL Property font value 'bolder italic normal small-caps larger/calc(120% + 1.2em) fantasy' assert_true: 'bolder italic normal small-caps larger/calc(120% + 1.2em) fantasy' is a supported value for font. expected true got false
236 FAIL Property font value 'lighter italic normal ultra-expanded smaller monospace' assert_equals: expected "italic 700 ultra-expanded 33.33333206176758px monospace" but got "italic normal bold ultra-expanded 33.33333206176758px/normal monospace"
 236FAIL Property font value 'lighter italic normal ultra-expanded smaller monospace' assert_equals: expected "italic 700 ultra-expanded 33.333332px monospace" but got "italic normal bold ultra-expanded 33.333332px/normal monospace"
237237FAIL Property font value '100 italic small-caps 10px/normal Menu' assert_equals: expected "italic small-caps 100 10px Menu" but got "italic small-caps 100 normal 10px/normal Menu"
238 FAIL Property font value '900 italic small-caps normal 20%/1.2 "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps 900 8px / 9.600000381469727px \"Non-Generic Example Family Name\"" but got "italic small-caps 900 normal 8px/9.600000381469727px \"Non-Generic Example Family Name\""
 238FAIL Property font value '900 italic small-caps normal 20%/1.2 "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps 900 8px / 9.6px \"Non-Generic Example Family Name\"" but got "italic small-caps 900 normal 8px/9.6px \"Non-Generic Example Family Name\""
239239FAIL Property font value 'bold italic small-caps ultra-condensed calc(30% - 40px)/calc(120% + 1.2em) serif' assert_equals: expected "italic small-caps 700 ultra-condensed 0px / normal serif" but got "italic small-caps bold ultra-condensed 0px/normal serif"
240240FAIL Property font value 'bolder italic extra-condensed xx-small sans-serif' assert_equals: expected "italic 900 extra-condensed 9px sans-serif" but got "italic normal 900 extra-condensed 9px/normal sans-serif"
241241FAIL Property font value 'lighter italic condensed normal medium/normal cursive' assert_equals: expected "italic 700 condensed 16px cursive" but got "italic normal bold condensed 16px/normal cursive"
242 FAIL Property font value '100 italic semi-condensed small-caps xx-large/1.2 fantasy' assert_equals: expected "italic small-caps 100 semi-condensed 32px / 38.400001525878906px fantasy" but got "italic small-caps 100 semi-condensed 32px/38.400001525878906px fantasy"
 242FAIL Property font value '100 italic semi-condensed small-caps xx-large/1.2 fantasy' assert_equals: expected "italic small-caps 100 semi-condensed 32px / 38.400002px fantasy" but got "italic small-caps 100 semi-condensed 32px/38.400002px fantasy"
243243FAIL Property font value '900 small-caps larger/calc(120% + 1.2em) monospace' assert_equals: expected "small-caps 900 48px / normal monospace" but got "normal small-caps 900 normal 48px/normal monospace"
244 FAIL Property font value 'bold small-caps normal smaller Menu' assert_equals: expected "small-caps 700 33.33333206176758px Menu" but got "normal small-caps bold normal 33.33333206176758px/normal Menu"
 244FAIL Property font value 'bold small-caps normal smaller Menu' assert_equals: expected "small-caps 700 33.333332px Menu" but got "normal small-caps bold normal 33.333332px/normal Menu"
245245FAIL Property font value 'bolder small-caps normal normal 10px/normal "Non-Generic Example Family Name"' assert_equals: expected "small-caps 900 10px \"Non-Generic Example Family Name\"" but got "normal small-caps 900 normal 10px/normal \"Non-Generic Example Family Name\""
246246FAIL Property font value 'lighter small-caps normal italic 20%/1.2 serif' assert_true: 'lighter small-caps normal italic 20%/1.2 serif' is a supported value for font. expected true got false
247247FAIL Property font value '100 small-caps normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) sans-serif' assert_equals: expected "small-caps 100 semi-expanded 0px / normal sans-serif" but got "normal small-caps 100 semi-expanded 0px/normal sans-serif"
248248FAIL Property font value '900 small-caps italic xx-small cursive' assert_equals: expected "italic small-caps 900 9px cursive" but got "italic small-caps 900 normal 9px/normal cursive"
249249FAIL Property font value 'bold small-caps italic normal medium/normal fantasy' assert_equals: expected "italic small-caps 700 16px fantasy" but got "italic small-caps bold normal 16px/normal fantasy"
250 FAIL Property font value 'bolder small-caps italic expanded xx-large/1.2 monospace' assert_equals: expected "italic small-caps 900 expanded 26px / 31.200000762939453px monospace" but got "italic small-caps 900 expanded 26px/31.200000762939453px monospace"
 250FAIL Property font value 'bolder small-caps italic expanded xx-large/1.2 monospace' assert_equals: expected "italic small-caps 900 expanded 26px / 31.200001px monospace" but got "italic small-caps 900 expanded 26px/31.200001px monospace"
251251FAIL Property font value 'lighter small-caps extra-expanded larger/calc(120% + 1.2em) Menu' assert_equals: expected "small-caps 700 extra-expanded 48px / normal Menu" but got "normal small-caps bold extra-expanded 48px/normal Menu"
252 FAIL Property font value '100 small-caps ultra-expanded normal smaller "Non-Generic Example Family Name"' assert_equals: expected "small-caps 100 ultra-expanded 33.33333206176758px \"Non-Generic Example Family Name\"" but got "normal small-caps 100 ultra-expanded 33.33333206176758px/normal \"Non-Generic Example Family Name\""
 252FAIL Property font value '100 small-caps ultra-expanded normal smaller "Non-Generic Example Family Name"' assert_equals: expected "small-caps 100 ultra-expanded 33.333332px \"Non-Generic Example Family Name\"" but got "normal small-caps 100 ultra-expanded 33.333332px/normal \"Non-Generic Example Family Name\""
253253FAIL Property font value '900 small-caps ultra-condensed italic 10px/normal serif' assert_equals: expected "italic small-caps 900 ultra-condensed 10px serif" but got "italic small-caps 900 ultra-condensed 10px/normal serif"
254 FAIL Property font value 'bold extra-condensed 20%/1.2 sans-serif' assert_equals: expected "700 extra-condensed 8px / 9.600000381469727px sans-serif" but got "normal normal bold extra-condensed 8px/9.600000381469727px sans-serif"
 254FAIL Property font value 'bold extra-condensed 20%/1.2 sans-serif' assert_equals: expected "700 extra-condensed 8px / 9.6px sans-serif" but got "normal normal bold extra-condensed 8px/9.6px sans-serif"
255255FAIL Property font value 'bolder condensed normal calc(30% - 40px)/calc(120% + 1.2em) cursive' assert_equals: expected "900 condensed 0px / normal cursive" but got "normal normal 900 condensed 0px/normal cursive"
256256FAIL Property font value 'lighter semi-condensed normal normal xx-small fantasy' assert_equals: expected "700 semi-condensed 9px fantasy" but got "normal normal bold semi-condensed 9px/normal fantasy"
257257FAIL Property font value '100 semi-expanded normal italic medium/normal monospace' assert_true: '100 semi-expanded normal italic medium/normal monospace' is a supported value for font. expected true got false
258 FAIL Property font value '900 expanded normal small-caps xx-large/1.2 Menu' assert_equals: expected "small-caps 900 expanded 32px / 38.400001525878906px Menu" but got "normal small-caps 900 expanded 32px/38.400001525878906px Menu"
 258FAIL Property font value '900 expanded normal small-caps xx-large/1.2 Menu' assert_equals: expected "small-caps 900 expanded 32px / 38.400002px Menu" but got "normal small-caps 900 expanded 32px/38.400002px Menu"
259259FAIL Property font value 'bold extra-expanded italic larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_equals: expected "italic 700 extra-expanded 48px / normal \"Non-Generic Example Family Name\"" but got "italic normal bold extra-expanded 48px/normal \"Non-Generic Example Family Name\""
260 FAIL Property font value 'bolder ultra-expanded italic normal smaller serif' assert_equals: expected "italic 900 ultra-expanded 33.33333206176758px serif" but got "italic normal 900 ultra-expanded 33.33333206176758px/normal serif"
 260FAIL Property font value 'bolder ultra-expanded italic normal smaller serif' assert_equals: expected "italic 900 ultra-expanded 33.333332px serif" but got "italic normal 900 ultra-expanded 33.333332px/normal serif"
261261FAIL Property font value 'lighter ultra-condensed italic small-caps 10px/normal sans-serif' assert_equals: expected "italic small-caps 700 ultra-condensed 10px sans-serif" but got "italic small-caps bold ultra-condensed 10px/normal sans-serif"
262 FAIL Property font value '100 extra-condensed small-caps 20%/1.2 cursive' assert_equals: expected "small-caps 100 extra-condensed 8px / 9.600000381469727px cursive" but got "normal small-caps 100 extra-condensed 8px/9.600000381469727px cursive"
 262FAIL Property font value '100 extra-condensed small-caps 20%/1.2 cursive' assert_equals: expected "small-caps 100 extra-condensed 8px / 9.6px cursive" but got "normal small-caps 100 extra-condensed 8px/9.6px cursive"
263263FAIL Property font value '900 condensed small-caps normal calc(30% - 40px)/calc(120% + 1.2em) fantasy' assert_equals: expected "small-caps 900 condensed 0px / normal fantasy" but got "normal small-caps 900 condensed 0px/normal fantasy"
264264FAIL Property font value 'bold semi-condensed small-caps italic xx-small monospace' assert_equals: expected "italic small-caps 700 semi-condensed 9px monospace" but got "italic small-caps bold semi-condensed 9px/normal monospace"
265265FAIL Property font value 'semi-expanded medium/normal Menu' assert_equals: expected "semi-expanded 16px Menu" but got "normal normal normal semi-expanded 16px/normal Menu"
266 FAIL Property font value 'expanded normal xx-large/1.2 "Non-Generic Example Family Name"' assert_equals: expected "expanded 32px / 38.400001525878906px \"Non-Generic Example Family Name\"" but got "normal normal normal expanded 32px/38.400001525878906px \"Non-Generic Example Family Name\""
 266FAIL Property font value 'expanded normal xx-large/1.2 "Non-Generic Example Family Name"' assert_equals: expected "expanded 32px / 38.400002px \"Non-Generic Example Family Name\"" but got "normal normal normal expanded 32px/38.400002px \"Non-Generic Example Family Name\""
267267FAIL Property font value 'extra-expanded normal normal larger/calc(120% + 1.2em) serif' assert_equals: expected "extra-expanded 48px / normal serif" but got "normal normal normal extra-expanded 48px/normal serif"
268 FAIL Property font value 'ultra-expanded normal normal normal smaller sans-serif' assert_equals: expected "ultra-expanded 33.33333206176758px sans-serif" but got "normal normal normal ultra-expanded 33.33333206176758px/normal sans-serif"
 268FAIL Property font value 'ultra-expanded normal normal normal smaller sans-serif' assert_equals: expected "ultra-expanded 33.333332px sans-serif" but got "normal normal normal ultra-expanded 33.333332px/normal sans-serif"
269269FAIL Property font value 'ultra-condensed normal normal italic 10px/normal cursive' assert_true: 'ultra-condensed normal normal italic 10px/normal cursive' is a supported value for font. expected true got false
270270FAIL Property font value 'extra-condensed normal normal small-caps 20%/1.2 fantasy' assert_true: 'extra-condensed normal normal small-caps 20%/1.2 fantasy' is a supported value for font. expected true got false
271271FAIL Property font value 'condensed normal normal bolder calc(30% - 40px)/calc(120% + 1.2em) monospace' assert_equals: expected "900 condensed 0px / normal monospace" but got "normal normal 900 condensed 0px/normal monospace"

@@FAIL Property font value 'semi-condensed normal italic xx-small Menu' assert_tru
273273FAIL Property font value 'semi-expanded normal italic normal medium/normal "Non-Generic Example Family Name"' assert_true: 'semi-expanded normal italic normal medium/normal "Non-Generic Example Family Name"' is a supported value for font. expected true got false
274274FAIL Property font value 'expanded normal italic small-caps xx-large/1.2 serif' assert_true: 'expanded normal italic small-caps xx-large/1.2 serif' is a supported value for font. expected true got false
275275FAIL Property font value 'extra-expanded normal italic lighter larger/calc(120% + 1.2em) sans-serif' assert_true: 'extra-expanded normal italic lighter larger/calc(120% + 1.2em) sans-serif' is a supported value for font. expected true got false
276 FAIL Property font value 'ultra-expanded normal small-caps smaller cursive' assert_equals: expected "small-caps ultra-expanded 33.33333206176758px cursive" but got "normal small-caps normal ultra-expanded 33.33333206176758px/normal cursive"
 276FAIL Property font value 'ultra-expanded normal small-caps smaller cursive' assert_equals: expected "small-caps ultra-expanded 33.333332px cursive" but got "normal small-caps normal ultra-expanded 33.333332px/normal cursive"
277277FAIL Property font value 'ultra-condensed normal small-caps normal 10px/normal fantasy' assert_equals: expected "small-caps ultra-condensed 10px fantasy" but got "normal small-caps normal ultra-condensed 10px/normal fantasy"
278278FAIL Property font value 'extra-condensed normal small-caps italic 20%/1.2 monospace' assert_true: 'extra-condensed normal small-caps italic 20%/1.2 monospace' is a supported value for font. expected true got false
279279FAIL Property font value 'condensed normal small-caps 100 calc(30% - 40px)/calc(120% + 1.2em) Menu' assert_equals: expected "small-caps 100 condensed 0px / normal Menu" but got "normal small-caps 100 condensed 0px/normal Menu"

@@FAIL Property font value 'semi-condensed normal 900 xx-small "Non-Generic Exampl
281281FAIL Property font value 'semi-expanded normal bold normal medium/normal serif' assert_equals: expected "700 semi-expanded 16px serif" but got "normal normal bold semi-expanded 16px/normal serif"
282282FAIL Property font value 'expanded normal bolder italic xx-large/1.2 sans-serif' assert_true: 'expanded normal bolder italic xx-large/1.2 sans-serif' is a supported value for font. expected true got false
283283FAIL Property font value 'extra-expanded normal lighter small-caps larger/calc(120% + 1.2em) cursive' assert_equals: expected "small-caps 700 extra-expanded 48px / normal cursive" but got "normal small-caps bold extra-expanded 48px/normal cursive"
284 FAIL Property font value 'ultra-expanded italic smaller fantasy' assert_equals: expected "italic ultra-expanded 33.33333206176758px fantasy" but got "italic normal normal ultra-expanded 33.33333206176758px/normal fantasy"
 284FAIL Property font value 'ultra-expanded italic smaller fantasy' assert_equals: expected "italic ultra-expanded 33.333332px fantasy" but got "italic normal normal ultra-expanded 33.333332px/normal fantasy"
285285FAIL Property font value 'ultra-condensed italic normal 10px/normal monospace' assert_equals: expected "italic ultra-condensed 10px monospace" but got "italic normal normal ultra-condensed 10px/normal monospace"
286 FAIL Property font value 'extra-condensed italic normal normal 20%/1.2 Menu' assert_equals: expected "italic extra-condensed 8px / 9.600000381469727px Menu" but got "italic normal normal extra-condensed 8px/9.600000381469727px Menu"
 286FAIL Property font value 'extra-condensed italic normal normal 20%/1.2 Menu' assert_equals: expected "italic extra-condensed 8px / 9.6px Menu" but got "italic normal normal extra-condensed 8px/9.6px Menu"
287287FAIL Property font value 'condensed italic normal small-caps calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_true: 'condensed italic normal small-caps calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"' is a supported value for font. expected true got false
288288FAIL Property font value 'semi-condensed italic normal 100 xx-small serif' assert_equals: expected "italic 100 semi-condensed 9px serif" but got "italic normal 100 semi-condensed 9px/normal serif"
289289FAIL Property font value 'semi-expanded italic small-caps medium/normal sans-serif' assert_equals: expected "italic small-caps semi-expanded 16px sans-serif" but got "italic small-caps normal semi-expanded 16px/normal sans-serif"
290 FAIL Property font value 'expanded italic small-caps normal xx-large/1.2 cursive' assert_equals: expected "italic small-caps expanded 32px / 38.400001525878906px cursive" but got "italic small-caps normal expanded 32px/38.400001525878906px cursive"
 290FAIL Property font value 'expanded italic small-caps normal xx-large/1.2 cursive' assert_equals: expected "italic small-caps expanded 32px / 38.400002px cursive" but got "italic small-caps normal expanded 32px/38.400002px cursive"
291291FAIL Property font value 'extra-expanded italic small-caps 900 larger/calc(120% + 1.2em) fantasy' assert_equals: expected "italic small-caps 900 extra-expanded 48px / normal fantasy" but got "italic small-caps 900 extra-expanded 48px/normal fantasy"
292 FAIL Property font value 'ultra-expanded italic bold smaller monospace' assert_equals: expected "italic 700 ultra-expanded 33.33333206176758px monospace" but got "italic normal bold ultra-expanded 33.33333206176758px/normal monospace"
 292FAIL Property font value 'ultra-expanded italic bold smaller monospace' assert_equals: expected "italic 700 ultra-expanded 33.333332px monospace" but got "italic normal bold ultra-expanded 33.333332px/normal monospace"
293293FAIL Property font value 'ultra-condensed italic bolder normal 10px/normal Menu' assert_equals: expected "italic 900 ultra-condensed 10px Menu" but got "italic normal 900 ultra-condensed 10px/normal Menu"
294 FAIL Property font value 'extra-condensed italic lighter small-caps 20%/1.2 "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps 700 extra-condensed 8px / 9.600000381469727px \"Non-Generic Example Family Name\"" but got "italic small-caps bold extra-condensed 8px/9.600000381469727px \"Non-Generic Example Family Name\""
 294FAIL Property font value 'extra-condensed italic lighter small-caps 20%/1.2 "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps 700 extra-condensed 8px / 9.6px \"Non-Generic Example Family Name\"" but got "italic small-caps bold extra-condensed 8px/9.6px \"Non-Generic Example Family Name\""
295295FAIL Property font value 'condensed small-caps calc(30% - 40px)/calc(120% + 1.2em) serif' assert_equals: expected "small-caps condensed 0px / normal serif" but got "normal small-caps normal condensed 0px/normal serif"
296296FAIL Property font value 'semi-condensed small-caps normal xx-small sans-serif' assert_equals: expected "small-caps semi-condensed 9px sans-serif" but got "normal small-caps normal semi-condensed 9px/normal sans-serif"
297297FAIL Property font value 'semi-expanded small-caps normal normal medium/normal cursive' assert_equals: expected "small-caps semi-expanded 16px cursive" but got "normal small-caps normal semi-expanded 16px/normal cursive"
298298FAIL Property font value 'expanded small-caps normal italic xx-large/1.2 fantasy' assert_true: 'expanded small-caps normal italic xx-large/1.2 fantasy' is a supported value for font. expected true got false
299299FAIL Property font value 'extra-expanded small-caps normal 100 larger/calc(120% + 1.2em) monospace' assert_equals: expected "small-caps 100 extra-expanded 48px / normal monospace" but got "normal small-caps 100 extra-expanded 48px/normal monospace"
300 FAIL Property font value 'ultra-expanded small-caps italic smaller Menu' assert_equals: expected "italic small-caps ultra-expanded 33.33333206176758px Menu" but got "italic small-caps normal ultra-expanded 33.33333206176758px/normal Menu"
 300FAIL Property font value 'ultra-expanded small-caps italic smaller Menu' assert_equals: expected "italic small-caps ultra-expanded 33.333332px Menu" but got "italic small-caps normal ultra-expanded 33.333332px/normal Menu"
301301FAIL Property font value 'ultra-condensed small-caps italic normal 10px/normal "Non-Generic Example Family Name"' assert_equals: expected "italic small-caps ultra-condensed 10px \"Non-Generic Example Family Name\"" but got "italic small-caps normal ultra-condensed 10px/normal \"Non-Generic Example Family Name\""
302 FAIL Property font value 'extra-condensed small-caps italic 900 20%/1.2 serif' assert_equals: expected "italic small-caps 900 extra-condensed 8px / 9.600000381469727px serif" but got "italic small-caps 900 extra-condensed 8px/9.600000381469727px serif"
 302FAIL Property font value 'extra-condensed small-caps italic 900 20%/1.2 serif' assert_equals: expected "italic small-caps 900 extra-condensed 8px / 9.6px serif" but got "italic small-caps 900 extra-condensed 8px/9.6px serif"
303303FAIL Property font value 'condensed small-caps bold calc(30% - 40px)/calc(120% + 1.2em) sans-serif' assert_equals: expected "small-caps 700 condensed 0px / normal sans-serif" but got "normal small-caps bold condensed 0px/normal sans-serif"
304304FAIL Property font value 'semi-condensed small-caps bolder normal xx-small cursive' assert_equals: expected "small-caps 900 semi-condensed 9px cursive" but got "normal small-caps 900 semi-condensed 9px/normal cursive"
305305FAIL Property font value 'semi-expanded small-caps lighter italic medium/normal fantasy' assert_equals: expected "italic small-caps 700 semi-expanded 16px fantasy" but got "italic small-caps bold semi-expanded 16px/normal fantasy"
306 FAIL Property font value 'expanded 100 xx-large/1.2 monospace' assert_equals: expected "100 expanded 26px / 31.200000762939453px monospace" but got "normal normal 100 expanded 26px/31.200000762939453px monospace"
 306FAIL Property font value 'expanded 100 xx-large/1.2 monospace' assert_equals: expected "100 expanded 26px / 31.200001px monospace" but got "normal normal 100 expanded 26px/31.200001px monospace"
307307FAIL Property font value 'extra-expanded 900 normal larger/calc(120% + 1.2em) Menu' assert_equals: expected "900 extra-expanded 48px / normal Menu" but got "normal normal 900 extra-expanded 48px/normal Menu"
308 FAIL Property font value 'ultra-expanded bold normal normal smaller "Non-Generic Example Family Name"' assert_equals: expected "700 ultra-expanded 33.33333206176758px \"Non-Generic Example Family Name\"" but got "normal normal bold ultra-expanded 33.33333206176758px/normal \"Non-Generic Example Family Name\""
 308FAIL Property font value 'ultra-expanded bold normal normal smaller "Non-Generic Example Family Name"' assert_equals: expected "700 ultra-expanded 33.333332px \"Non-Generic Example Family Name\"" but got "normal normal bold ultra-expanded 33.333332px/normal \"Non-Generic Example Family Name\""
309309FAIL Property font value 'ultra-condensed bolder normal italic 10px/normal serif' assert_true: 'ultra-condensed bolder normal italic 10px/normal serif' is a supported value for font. expected true got false
310 FAIL Property font value 'extra-condensed lighter normal small-caps 20%/1.2 sans-serif' assert_equals: expected "small-caps 700 extra-condensed 8px / 9.600000381469727px sans-serif" but got "normal small-caps bold extra-condensed 8px/9.600000381469727px sans-serif"
 310FAIL Property font value 'extra-condensed lighter normal small-caps 20%/1.2 sans-serif' assert_equals: expected "small-caps 700 extra-condensed 8px / 9.6px sans-serif" but got "normal small-caps bold extra-condensed 8px/9.6px sans-serif"
311311FAIL Property font value 'condensed 100 italic calc(30% - 40px)/calc(120% + 1.2em) cursive' assert_equals: expected "italic 100 condensed 0px / normal cursive" but got "italic normal 100 condensed 0px/normal cursive"
312312FAIL Property font value 'semi-condensed 900 italic normal xx-small fantasy' assert_equals: expected "italic 900 semi-condensed 9px fantasy" but got "italic normal 900 semi-condensed 9px/normal fantasy"
313313FAIL Property font value 'semi-expanded bold italic small-caps medium/normal monospace' assert_equals: expected "italic small-caps 700 semi-expanded 13px monospace" but got "italic small-caps bold semi-expanded 13px/normal monospace"
314 FAIL Property font value 'expanded bolder small-caps xx-large/1.2 Menu' assert_equals: expected "small-caps 900 expanded 32px / 38.400001525878906px Menu" but got "normal small-caps 900 expanded 32px/38.400001525878906px Menu"
 314FAIL Property font value 'expanded bolder small-caps xx-large/1.2 Menu' assert_equals: expected "small-caps 900 expanded 32px / 38.400002px Menu" but got "normal small-caps 900 expanded 32px/38.400002px Menu"
315315FAIL Property font value 'extra-expanded lighter small-caps normal larger/calc(120% + 1.2em) "Non-Generic Example Family Name"' assert_equals: expected "small-caps 700 extra-expanded 48px / normal \"Non-Generic Example Family Name\"" but got "normal small-caps bold extra-expanded 48px/normal \"Non-Generic Example Family Name\""
316 FAIL Property font value 'ultra-expanded 100 small-caps italic smaller serif' assert_equals: expected "italic small-caps 100 ultra-expanded 33.33333206176758px serif" but got "italic small-caps 100 ultra-expanded 33.33333206176758px/normal serif"
 316FAIL Property font value 'ultra-expanded 100 small-caps italic smaller serif' assert_equals: expected "italic small-caps 100 ultra-expanded 33.333332px serif" but got "italic small-caps 100 ultra-expanded 33.333332px/normal serif"
317317

LayoutTests/imported/w3c/web-platform-tests/css/css-fonts/variations/at-font-face-descriptors-expected.txt

@@PASS font-weight(valid): Maximum allowed value should be parsed successfully: 10
1414PASS font-weight(invalid): Values above maximum should be rejected: 1000.001
1515PASS font-weight(invalid): Extra content after value: 100 a
1616PASS font-weight(valid): Simple calc value: calc(100.5)
17 FAIL font-weight(valid): Out-of-range simple calc value (should be clamped): calc(1001) assert_equals: Unexpected resulting value. expected "calc(1001)" but got "999.9999999999999"
 17FAIL font-weight(valid): Out-of-range simple calc value (should be clamped): calc(1001) assert_equals: Unexpected resulting value. expected "calc(1001)" but got "1000"
1818PASS font-weight(valid): Valid calc expression: calc(100.5*3 + 50.5)
19 FAIL font-weight(valid): Valid calc expression with out-of-range value (should be clamped): calc(100.5*3 + 800) assert_equals: Unexpected resulting value. expected "calc(100.5*3 + 800)" but got "999.9999999999999"
 19FAIL font-weight(valid): Valid calc expression with out-of-range value (should be clamped): calc(100.5*3 + 800) assert_equals: Unexpected resulting value. expected "calc(100.5*3 + 800)" but got "1000"
2020PASS font-weight(invalid): Valid calc expression with units: calc(100.5px + 50.5px)
2121PASS font-weight(valid): Simple range: 100 900
2222FAIL font-weight(valid): Simple range with equal upper and lower bounds: 500 500 assert_equals: Unexpected resulting value. expected "500" but got "500 500"

LayoutTests/imported/w3c/web-platform-tests/css/css-masking/clip-path/interpolation-expected.txt

11
2 FAIL Test circle with negative easing on clip-path assert_equals: The radius of circle is clamped to zero at 61% expected "circle(0px at 50% 50%)" but got "circle(-0.07151274383068085px at 50% 50%)"
3 FAIL Test ellipse with negative easing on clip-path assert_equals: The radius of ellipse is clamped to zero at 61% expected "ellipse(0px 0px at 50% 50%)" but got "ellipse(-0.07151274383068085px -0.07151274383068085px at 50% 50%)"
 2FAIL Test circle with negative easing on clip-path assert_equals: The radius of circle is clamped to zero at 61% expected "circle(0px at 50% 50%)" but got "circle(-0.071513px at 50% 50%)"
 3FAIL Test ellipse with negative easing on clip-path assert_equals: The radius of ellipse is clamped to zero at 61% expected "ellipse(0px 0px at 50% 50%)" but got "ellipse(-0.071513px -0.071513px at 50% 50%)"
44PASS Test inset with negative easing on clip-path
55

LayoutTests/imported/w3c/web-platform-tests/css/css-shapes/basic-shape-interpolation-expected.txt

11
2 FAIL Test circle with negative easing on shape-outside assert_equals: The radius of circle is clamped to zero at 61% expected "circle(0px at 50% 50%)" but got "circle(-0.07151274383068085px at 50% 50%)"
3 FAIL Test ellipse with negative easing on shape-outside assert_equals: The radius of ellipse is clamped to zero at 61% expected "ellipse(0px 0px at 50% 50%)" but got "ellipse(-0.07151274383068085px -0.07151274383068085px at 50% 50%)"
 2FAIL Test circle with negative easing on shape-outside assert_equals: The radius of circle is clamped to zero at 61% expected "circle(0px at 50% 50%)" but got "circle(-0.071513px at 50% 50%)"
 3FAIL Test ellipse with negative easing on shape-outside assert_equals: The radius of ellipse is clamped to zero at 61% expected "ellipse(0px 0px at 50% 50%)" but got "ellipse(-0.071513px -0.071513px at 50% 50%)"
44PASS Test inset with negative easing on shape-outside
55

LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/2d-rotate-js-expected.txt

11Rotate via JS
22
33
4 FAIL JS test: Rotate via javascript must show the correct computed rotation assert_equals: expected "matrix(0.866025, 0.5, -0.5, 0.866025, 0, 0)" but got "matrix(0.8660254037844387, 0.49999999999999994, -0.49999999999999994, 0.8660254037844387, 0, 0)"
 4PASS JS test: Rotate via javascript must show the correct computed rotation
55

LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-inline-value-expected.txt

@@FAIL Interpolation between translate(0%, 50%) and translate(50%, 100%) gives the
1212FAIL Interpolation between translate3d(0,0,-50px) and translateZ(50px) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "translate3d(0px, 0px, 0px)" but got "matrix(1, 0, 0, 1, 0, 0)"
1313FAIL Interpolation between translate(50px, 0px) and translate(100px, 0px) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "translate(75px)" but got "matrix(1, 0, 0, 1, 75, 0)"
1414FAIL Interpolation between translate(50px, -50px) and translate(100px, 50px) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "translate(75px)" but got "matrix(1, 0, 0, 1, 75, 0)"
15 FAIL Interpolation between rotate(30deg) and rotate(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotate(60deg)" but got "matrix(0.5000000000000001, 0.8660254037844386, -0.8660254037844386, 0.5000000000000001, 0, 0)"
16 FAIL Interpolation between rotateZ(30deg) and rotateZ(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotateZ(60deg)" but got "matrix(0.5000000000000001, 0.8660254037844386, -0.8660254037844386, 0.5000000000000001, 0, 0)"
17 FAIL Interpolation between rotate(0deg) and rotateZ(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotate3d(0, 0, 1, 45deg)" but got "matrix(0.7071067811865476, 0.7071067811865475, -0.7071067811865475, 0.7071067811865476, 0, 0)"
18 FAIL Interpolation between rotateX(0deg) and rotateX(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotateX(45deg)" but got "matrix3d(1, 0, 0, 0, 0, 0.7071067811865476, 0.7071067811865475, 0, 0, -0.7071067811865475, 0.7071067811865476, 0, 0, 0, 0, 1)"
19 FAIL Interpolation between rotate(0deg) and rotateX(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotate3d(1, 0, 0, 45deg)" but got "matrix3d(1, 0, 0, 0, 0, 0.5000000000000002, 0.4999999999999999, 0, 0, -0.4999999999999999, 0.5000000000000002, 0, 0, 0, 0, 1)"
 15FAIL Interpolation between rotate(30deg) and rotate(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotate(60deg)" but got "matrix(0.5, 0.866025, -0.866025, 0.5, 0, 0)"
 16FAIL Interpolation between rotateZ(30deg) and rotateZ(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotateZ(60deg)" but got "matrix(0.5, 0.866025, -0.866025, 0.5, 0, 0)"
 17FAIL Interpolation between rotate(0deg) and rotateZ(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotate3d(0, 0, 1, 45deg)" but got "matrix(0.707107, 0.707107, -0.707107, 0.707107, 0, 0)"
 18FAIL Interpolation between rotateX(0deg) and rotateX(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotateX(45deg)" but got "matrix3d(1, 0, 0, 0, 0, 0.707107, 0.707107, 0, 0, -0.707107, 0.707107, 0, 0, 0, 0, 1)"
 19FAIL Interpolation between rotate(0deg) and rotateX(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotate3d(1, 0, 0, 45deg)" but got "matrix3d(1, 0, 0, 0, 0, 0.5, 0.5, 0, 0, -0.5, 0.5, 0, 0, 0, 0, 1)"
2020FAIL Interpolation between scale(1) and scale(2) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "scale(1.5)" but got "matrix(1.5, 0, 0, 1.5, 0, 0)"
2121FAIL Interpolation between scale(1, 3) and scale(2) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "scale(1.5, 2.5)" but got "matrix(1.5, 0, 0, 2.5, 0, 0)"
2222FAIL Interpolation between scaleX(1) and scaleX(2) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "scaleX(1.5)" but got "matrix(1.5, 0, 0, 1, 0, 0)"

@@FAIL Interpolation between scale(1, 2) and scale(3, 4) gives the correct compute
2929FAIL Interpolation between scale3d(1, 2, 3) and scale3d(4, 5, 6) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "scale3d(2.5, 3.5, 4.5)" but got "matrix3d(2.5, 0, 0, 0, 0, 3.5, 0, 0, 0, 0, 4.5, 0, 0, 0, 0, 1)"
3030FAIL Interpolation between scale3d(1, 2, 3) and scale(4, 5) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "scale3d(2.5, 3.5, 2)" but got "matrix3d(2.5, 0, 0, 0, 0, 3.5, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1)"
3131FAIL Interpolation between scale(1, 2) and scale3d(3, 4, 5) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "scale3d(2, 3, 3)" but got "matrix3d(2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1)"
32 FAIL Interpolation between skewX(0deg) and skewX(60deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skewX(30deg)" but got "matrix(1, 0, 0.5773502691896256, 1, 0, 0)"
33 FAIL Interpolation between skewX(0deg) and skewX(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skewX(45deg)" but got "matrix(1, 0, 0.9999999999999999, 1, 0, 0)"
 32FAIL Interpolation between skewX(0deg) and skewX(60deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skewX(30deg)" but got "matrix(1, 0, 0.57735, 1, 0, 0)"
 33FAIL Interpolation between skewX(0deg) and skewX(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skewX(45deg)" but got "matrix(1, 0, 1, 1, 0, 0)"
3434FAIL Interpolation between skewX(0deg) and skewX(180deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skewX(90deg)" but got "matrix(1, 0, 16331239353195370, 1, 0, 0)"
35 FAIL Interpolation between skew(0deg, 0deg) and skew(60deg, 60deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skew(30deg, 30deg)" but got "matrix(1, 0.5773502691896256, 0.5773502691896256, 1, 0, 0)"
36 FAIL Interpolation between skew(45deg, 0deg) and skew(0deg, 45deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skew(22.5deg, 22.5deg)" but got "matrix(1, 0.4142135623730951, 0.4142135623730951, 1, 0, 0)"
 35FAIL Interpolation between skew(0deg, 0deg) and skew(60deg, 60deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skew(30deg, 30deg)" but got "matrix(1, 0.57735, 0.57735, 1, 0, 0)"
 36FAIL Interpolation between skew(45deg, 0deg) and skew(0deg, 45deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skew(22.5deg, 22.5deg)" but got "matrix(1, 0.414214, 0.414214, 1, 0, 0)"
3737FAIL Interpolation between perspective(10px) and perspective(2.5px) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "perspective(4px)" but got "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.25, 0, 0, 0, 1)"
3838FAIL Interpolation between perspective(10px) and perspective(none) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "perspective(20px)" but got "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.05, 0, 0, 0, 1)"
3939FAIL Interpolation between perspective(none) and perspective(none) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "perspective(none)" but got "matrix(1, 0, 0, 1, 0, 0)"

LayoutTests/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-matrix-composition-expected.txt

@@PASS Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)] f
2222FAIL Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)] from add [matrix(1, 0, 0, 1, 100, 0)] to add [matrix(1, 0, 0, 1, 200, 0)] at (1.5) should be [matrix(1, 1, 0, 0, 200, 300)] assert_equals: expected "matrix ( 1 , 1 , 0 , 0 , 200 , 300 ) " but got "matrix ( 1 , 1 , 0 , 0 , 300 , 300 ) "
2323FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from add [matrix(1, 1, 0, 0, 0, 100)] to add [matrix(1, 0, 0, 1, 200, 0)] at (-0.5) should be [matrix(1, 1, 0, 0, 100, 100)] assert_equals: expected "matrix ( 1 , 1 , 0 , 0 , 100 , 100 ) " but got "matrix ( 1.28 , 0.84 , - 0.03 , 0.3 , 187.5 , - 37.5 ) "
2424PASS Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from add [matrix(1, 1, 0, 0, 0, 100)] to add [matrix(1, 0, 0, 1, 200, 0)] at (0) should be [matrix(1, 1, 0, 0, 100, 100)]
25 FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from add [matrix(1, 1, 0, 0, 0, 100)] to add [matrix(1, 0, 0, 1, 200, 0)] at (0.25) should be [matrix(1, 1, 0, 0, 100, 100)] assert_equals: expected "matrix ( 1 , 1 , 0 , 0 , 100 , 100 ) " but got "matrix ( 0.95 , 0.86 , - 0.01 , 0.08 , 159.38 , 65.62 ) "
 25FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from add [matrix(1, 1, 0, 0, 0, 100)] to add [matrix(1, 0, 0, 1, 200, 0)] at (0.25) should be [matrix(1, 1, 0, 0, 100, 100)] assert_equals: expected "matrix ( 1 , 1 , 0 , 0 , 100 , 100 ) " but got "matrix ( 0.95 , 0.86 , - 0.01 , 0.08 , 159.38 , 65.63 ) "
2626FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from add [matrix(1, 1, 0, 0, 0, 100)] to add [matrix(1, 0, 0, 1, 200, 0)] at (0.5) should be [matrix(1, 0, 0, 1, 300, 0)] assert_equals: expected "matrix ( 1 , 0 , 0 , 1 , 300 , 0 ) " but got "matrix ( 0.95 , 0.63 , - 0.03 , 0.3 , 187.5 , 62.5 ) "
2727FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from add [matrix(1, 1, 0, 0, 0, 100)] to add [matrix(1, 0, 0, 1, 200, 0)] at (0.75) should be [matrix(1, 0, 0, 1, 300, 0)] assert_equals: expected "matrix ( 1 , 0 , 0 , 1 , 300 , 0 ) " but got "matrix ( 0.97 , 0.32 , - 0.04 , 0.63 , 234.38 , 40.63 ) "
2828PASS Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from add [matrix(1, 1, 0, 0, 0, 100)] to add [matrix(1, 0, 0, 1, 200, 0)] at (1) should be [matrix(1, 0, 0, 1, 300, 0)]

@@PASS Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)] f
5050PASS Compositing: property <transform> underlying [matrix(1, 1, 0, 0, 0, 100)] from accumulate [matrix(1, 0, 0, 1, 100, 0)] to accumulate [matrix(1, 0, 0, 1, 200, 0)] at (1.5) should be [matrix(1, 0, 0, 1, 250, 0)]
5151FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from accumulate [matrix(1, 1, 0, 0, 0, 100)] to accumulate [matrix(1, 0, 0, 1, 200, 0)] at (-0.5) should be [matrix(1, 1, 0, 0, 0, 100)] assert_equals: expected "matrix ( 1 , 1 , 0 , 0 , 0 , 100 ) " but got "matrix ( 1.28 , 0.84 , - 0.03 , 0.3 , 87.5 , - 37.5 ) "
5252PASS Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from accumulate [matrix(1, 1, 0, 0, 0, 100)] to accumulate [matrix(1, 0, 0, 1, 200, 0)] at (0) should be [matrix(1, 1, 0, 0, 0, 100)]
53 FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from accumulate [matrix(1, 1, 0, 0, 0, 100)] to accumulate [matrix(1, 0, 0, 1, 200, 0)] at (0.25) should be [matrix(1, 1, 0, 0, 0, 100)] assert_equals: expected "matrix ( 1 , 1 , 0 , 0 , 0 , 100 ) " but got "matrix ( 0.95 , 0.86 , - 0.01 , 0.08 , 59.37 , 65.62 ) "
 53FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from accumulate [matrix(1, 1, 0, 0, 0, 100)] to accumulate [matrix(1, 0, 0, 1, 200, 0)] at (0.25) should be [matrix(1, 1, 0, 0, 0, 100)] assert_equals: expected "matrix ( 1 , 1 , 0 , 0 , 0 , 100 ) " but got "matrix ( 0.95 , 0.86 , - 0.01 , 0.08 , 59.38 , 65.63 ) "
5454FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from accumulate [matrix(1, 1, 0, 0, 0, 100)] to accumulate [matrix(1, 0, 0, 1, 200, 0)] at (0.5) should be [matrix(1, 0, 0, 1, 300, 0)] assert_equals: expected "matrix ( 1 , 0 , 0 , 1 , 300 , 0 ) " but got "matrix ( 0.95 , 0.63 , - 0.03 , 0.3 , 87.5 , 62.5 ) "
5555FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from accumulate [matrix(1, 1, 0, 0, 0, 100)] to accumulate [matrix(1, 0, 0, 1, 200, 0)] at (0.75) should be [matrix(1, 0, 0, 1, 300, 0)] assert_equals: expected "matrix ( 1 , 0 , 0 , 1 , 300 , 0 ) " but got "matrix ( 0.97 , 0.32 , - 0.04 , 0.63 , 134.38 , 40.63 ) "
5656FAIL Compositing: property <transform> underlying [matrix(1, 0, 0, 1, 100, 0)] from accumulate [matrix(1, 1, 0, 0, 0, 100)] to accumulate [matrix(1, 0, 0, 1, 200, 0)] at (1) should be [matrix(1, 0, 0, 1, 300, 0)] assert_equals: expected "matrix ( 1 , 0 , 0 , 1 , 300 , 0 ) " but got "matrix ( 1 , 0 , 0 , 1 , 200 , 0 ) "

LayoutTests/imported/w3c/web-platform-tests/css/css-values/acos-asin-atan-atan2-serialize-expected.txt

11
22FAIL 'rotate(acos(0))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(acos(0))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(acos(0))"
3 PASS 'rotate(acos(0))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 3PASS 'rotate(acos(0))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
44FAIL 'rotate(asin(1))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(asin(1))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(asin(1))"
5 PASS 'rotate(asin(1))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 5PASS 'rotate(asin(1))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
66PASS 'rotate(calc(acos(pi - pi)))' as a specified value should serialize as 'rotate(calc(90deg))'.
7 PASS 'rotate(calc(acos(pi - pi)))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 7PASS 'rotate(calc(acos(pi - pi)))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
88PASS 'rotate(calc(asin(pi - pi + 1)))' as a specified value should serialize as 'rotate(calc(90deg))'.
9 PASS 'rotate(calc(asin(pi - pi + 1)))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 9PASS 'rotate(calc(asin(pi - pi + 1)))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
1010PASS 'rotate(calc(atan(infinity)))' as a specified value should serialize as 'rotate(calc(90deg))'.
11 PASS 'rotate(calc(atan(infinity)))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 11PASS 'rotate(calc(atan(infinity)))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
1212

LayoutTests/imported/w3c/web-platform-tests/css/css-values/calc-numbers-expected.txt

@@PASS testing tab-size: calc(2 * 3)
33PASS testing tab-size: calc(2 * -4)
44PASS testing opacity: calc(2 / 4)
55PASS testing tab-size: calc(2 / 4)
6 FAIL testing opacity: calc(2 / 4) * 1px assert_equals: calc(2 / 4) * 1px should compute to 0.9 expected "0.9" but got "0.8999999761581421"
 6PASS testing opacity: calc(2 / 4) * 1px
77PASS testing tab-size: calc(1 + 1px)
88PASS testing tab-size: calc(1 + 100%)
99PASS testing tab-size: calc(100%)

LayoutTests/imported/w3c/web-platform-tests/css/css-values/hypot-pow-sqrt-invalid-expected.txt

@@PASS e.style['opacity'] = "hypot(1 * )" should not set the property value
1010PASS e.style['opacity'] = "hypot(1 / )" should not set the property value
1111PASS e.style['opacity'] = "hypot(1 2)" should not set the property value
1212PASS e.style['opacity'] = "hypot(1, , 2)" should not set the property value
13 FAIL e.style['opacity'] = "hypot(1, 2)" should not set the property value assert_equals: expected "" but got "hypot(2.23606797749979)"
 13FAIL e.style['opacity'] = "hypot(1, 2)" should not set the property value assert_equals: expected "" but got "hypot(2.236068)"
1414PASS e.style['opacity'] = "sqrt()" should not set the property value
1515PASS e.style['opacity'] = "sqrt( )" should not set the property value
1616PASS e.style['opacity'] = "sqrt(,)" should not set the property value

LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-angle-serialize-expected.txt

11
22FAIL 'rotate(min(90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))"
3 PASS 'rotate(min(90deg))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 3PASS 'rotate(min(90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
44FAIL 'rotate(min(.25turn))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(.25turn))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))"
5 PASS 'rotate(min(.25turn))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 5PASS 'rotate(min(.25turn))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
66FAIL 'rotate(min(100grad))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(100grad))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))"
7 PASS 'rotate(min(100grad))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 7PASS 'rotate(min(100grad))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
88FAIL 'rotate(max(90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))"
9 PASS 'rotate(max(90deg))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 9PASS 'rotate(max(90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
1010FAIL 'rotate(max(.25turn))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(.25turn))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))"
11 PASS 'rotate(max(.25turn))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 11PASS 'rotate(max(.25turn))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
1212FAIL 'rotate(max(100grad))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(100grad))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))"
13 PASS 'rotate(max(100grad))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 13PASS 'rotate(max(100grad))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
1414FAIL 'rotate(min(90deg, 92deg, 93deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(90deg, 92deg, 93deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))"
15 PASS 'rotate(min(90deg, 92deg, 93deg))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 15PASS 'rotate(min(90deg, 92deg, 93deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
1616FAIL 'rotate(min(93deg, 92deg, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(93deg, 92deg, 90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))"
17 PASS 'rotate(min(93deg, 92deg, 90deg))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 17PASS 'rotate(min(93deg, 92deg, 90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
1818FAIL 'rotate(min(90deg, 1.58rad, 0.25turn))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(90deg, 1.58rad, 0.25turn))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))"
19 PASS 'rotate(min(90deg, 1.58rad, 0.25turn))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 19PASS 'rotate(min(90deg, 1.58rad, 0.25turn))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
2020FAIL 'rotate(min(0.25turn, 1.58rad, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(min(0.25turn, 1.58rad, 90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(min(90deg))"
21 PASS 'rotate(min(0.25turn, 1.58rad, 90deg))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 21PASS 'rotate(min(0.25turn, 1.58rad, 90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
2222FAIL 'rotate(max(81deg, 82deg, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(81deg, 82deg, 90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))"
23 PASS 'rotate(max(81deg, 82deg, 90deg))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 23PASS 'rotate(max(81deg, 82deg, 90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
2424FAIL 'rotate(max(83deg, 82deg, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(83deg, 82deg, 90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))"
25 PASS 'rotate(max(83deg, 82deg, 90deg))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 25PASS 'rotate(max(83deg, 82deg, 90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
2626FAIL 'rotate(max(90deg, 1.57rad, 0.25turn))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(90deg, 1.57rad, 0.25turn))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))"
27 PASS 'rotate(max(90deg, 1.57rad, 0.25turn))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 27PASS 'rotate(max(90deg, 1.57rad, 0.25turn))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
2828FAIL 'rotate(max(0.25turn, 1.57rad, 90deg))' as a specified value should serialize as 'rotate(calc(90deg))'. assert_equals: 'rotate(max(0.25turn, 1.57rad, 90deg))' and 'rotate(calc(90deg))' should serialize the same in specified values. expected "rotate(calc(90deg))" but got "rotate(max(90deg))"
29 PASS 'rotate(max(0.25turn, 1.57rad, 90deg))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 29PASS 'rotate(max(0.25turn, 1.57rad, 90deg))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
3030PASS 'rotate(calc(min(30deg) + max(60deg)))' as a specified value should serialize as 'rotate(calc(90deg))'.
31 PASS 'rotate(calc(min(30deg) + max(60deg)))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 31PASS 'rotate(calc(min(30deg) + max(60deg)))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
3232PASS 'rotate(calc(50grad + min(45deg)))' as a specified value should serialize as 'rotate(calc(90deg))'.
33 PASS 'rotate(calc(50grad + min(45deg)))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 33PASS 'rotate(calc(50grad + min(45deg)))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
3434PASS 'rotate(calc(min(45deg) + 50grad))' as a specified value should serialize as 'rotate(calc(90deg))'.
35 PASS 'rotate(calc(min(45deg) + 50grad))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 35PASS 'rotate(calc(min(45deg) + 50grad))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
3636PASS 'rotate(calc(50grad + max(45deg)))' as a specified value should serialize as 'rotate(calc(90deg))'.
37 PASS 'rotate(calc(50grad + max(45deg)))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 37PASS 'rotate(calc(50grad + max(45deg)))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
3838PASS 'rotate(calc(max(45deg) + 50grad))' as a specified value should serialize as 'rotate(calc(90deg))'.
39 PASS 'rotate(calc(max(45deg) + 50grad))' as a computed value should serialize as 'matrix(6.123233995736766e-17, 1, -1, 6.123233995736766e-17, 0, 0)'.
 39PASS 'rotate(calc(max(45deg) + 50grad))' as a computed value should serialize as 'matrix(0, 1, -1, 0, 0, 0)'.
4040

LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-number-computed-expected.txt

@@PASS min(1) should be used-value-equivalent to 1
33PASS max(1) should be used-value-equivalent to 1
44PASS min(0.2, max(0.1, 0.15)) should be used-value-equivalent to 0.15
55PASS max(0.1, min(0.2, 0.15)) should be used-value-equivalent to 0.15
6 FAIL calc(min(0.1, 0.2) + 0.05) should be used-value-equivalent to 0.15 assert_equals: calc(min(0.1, 0.2) + 0.05) and 0.15 serialize to the same thing in used values. expected "matrix(0.15, 0, 0, 0.15, 0, 0)" but got "matrix(0.15000000000000002, 0, 0, 0.15000000000000002, 0, 0)"
 6PASS calc(min(0.1, 0.2) + 0.05) should be used-value-equivalent to 0.15
77PASS calc(min(0.1, 0.2) - 0.05) should be used-value-equivalent to 0.05
88PASS calc(min(0.1, 0.2) * 2) should be used-value-equivalent to 0.2
99PASS calc(min(0.1, 0.2) / 2) should be used-value-equivalent to 0.05
1010PASS calc(max(0.1, 0.2) + 0.05) should be used-value-equivalent to 0.25
11 FAIL calc(max(0.1, 0.2) - 0.05) should be used-value-equivalent to 0.15 assert_equals: calc(max(0.1, 0.2) - 0.05) and 0.15 serialize to the same thing in used values. expected "matrix(0.15, 0, 0, 0.15, 0, 0)" but got "matrix(0.15000000000000002, 0, 0, 0.15000000000000002, 0, 0)"
 11PASS calc(max(0.1, 0.2) - 0.05) should be used-value-equivalent to 0.15
1212PASS calc(max(0.1, 0.2) * 2) should be used-value-equivalent to 0.4
1313PASS calc(max(0.1, 0.2) / 2) should be used-value-equivalent to 0.1
1414PASS calc(min(0.1, 0.2) + max(0.1, 0.05)) should be used-value-equivalent to 0.2

LayoutTests/imported/w3c/web-platform-tests/css/css-values/minmax-number-serialize-expected.txt

11
22FAIL 'min(.1)' as a specified value should serialize as 'calc(0.1)'. assert_equals: 'min(.1)' and 'calc(0.1)' should serialize the same in specified values. expected "calc(0.1)" but got "min(0.1)"
33FAIL 'scale(min(.1))' as a specified value should serialize as 'scale(calc(0.1))'. assert_equals: 'scale(min(.1))' and 'scale(calc(0.1))' should serialize the same in specified values. expected "scale(calc(0.1))" but got "scale(min(0.1))"
4 FAIL 'min(.1)' as a computed value should serialize as '0.1'. assert_equals: '0.1' should round-trip exactly in computed values. expected "0.1" but got "0.10000000149011612"
 4PASS 'min(.1)' as a computed value should serialize as '0.1'.
55PASS 'scale(min(.1))' as a computed value should serialize as 'matrix(0.1, 0, 0, 0.1, 0, 0)'.
66FAIL 'max(.1)' as a specified value should serialize as 'calc(0.1)'. assert_equals: 'max(.1)' and 'calc(0.1)' should serialize the same in specified values. expected "calc(0.1)" but got "max(0.1)"
77FAIL 'scale(max(.1))' as a specified value should serialize as 'scale(calc(0.1))'. assert_equals: 'scale(max(.1))' and 'scale(calc(0.1))' should serialize the same in specified values. expected "scale(calc(0.1))" but got "scale(max(0.1))"
8 FAIL 'max(.1)' as a computed value should serialize as '0.1'. assert_equals: '0.1' should round-trip exactly in computed values. expected "0.1" but got "0.10000000149011612"
 8PASS 'max(.1)' as a computed value should serialize as '0.1'.
99PASS 'scale(max(.1))' as a computed value should serialize as 'matrix(0.1, 0, 0, 0.1, 0, 0)'.
1010FAIL 'min(.1, .2, .3)' as a specified value should serialize as 'calc(0.1)'. assert_equals: 'min(.1, .2, .3)' and 'calc(0.1)' should serialize the same in specified values. expected "calc(0.1)" but got "min(0.1)"
1111FAIL 'scale(min(.1, .2, .3))' as a specified value should serialize as 'scale(calc(0.1))'. assert_equals: 'scale(min(.1, .2, .3))' and 'scale(calc(0.1))' should serialize the same in specified values. expected "scale(calc(0.1))" but got "scale(min(0.1))"
12 FAIL 'min(.1, .2, .3)' as a computed value should serialize as '0.1'. assert_equals: '0.1' should round-trip exactly in computed values. expected "0.1" but got "0.10000000149011612"
 12PASS 'min(.1, .2, .3)' as a computed value should serialize as '0.1'.
1313PASS 'scale(min(.1, .2, .3))' as a computed value should serialize as 'matrix(0.1, 0, 0, 0.1, 0, 0)'.
1414FAIL 'max(.1, .2, .3)' as a specified value should serialize as 'calc(0.3)'. assert_equals: 'max(.1, .2, .3)' and 'calc(0.3)' should serialize the same in specified values. expected "calc(0.3)" but got "max(0.3)"
1515FAIL 'scale(max(.1, .2, .3))' as a specified value should serialize as 'scale(calc(0.3))'. assert_equals: 'scale(max(.1, .2, .3))' and 'scale(calc(0.3))' should serialize the same in specified values. expected "scale(calc(0.3))" but got "scale(max(0.3))"
16 FAIL 'max(.1, .2, .3)' as a computed value should serialize as '0.3'. assert_equals: '0.3' should round-trip exactly in computed values. expected "0.3" but got "0.30000001192092896"
 16PASS 'max(.1, .2, .3)' as a computed value should serialize as '0.3'.
1717PASS 'scale(max(.1, .2, .3))' as a computed value should serialize as 'matrix(0.3, 0, 0, 0.3, 0, 0)'.
1818FAIL 'min(.3, .2, .1)' as a specified value should serialize as 'calc(0.1)'. assert_equals: 'min(.3, .2, .1)' and 'calc(0.1)' should serialize the same in specified values. expected "calc(0.1)" but got "min(0.1)"
1919FAIL 'scale(min(.3, .2, .1))' as a specified value should serialize as 'scale(calc(0.1))'. assert_equals: 'scale(min(.3, .2, .1))' and 'scale(calc(0.1))' should serialize the same in specified values. expected "scale(calc(0.1))" but got "scale(min(0.1))"
20 FAIL 'min(.3, .2, .1)' as a computed value should serialize as '0.1'. assert_equals: '0.1' should round-trip exactly in computed values. expected "0.1" but got "0.10000000149011612"
 20PASS 'min(.3, .2, .1)' as a computed value should serialize as '0.1'.
2121PASS 'scale(min(.3, .2, .1))' as a computed value should serialize as 'matrix(0.1, 0, 0, 0.1, 0, 0)'.
2222FAIL 'max(.3, .2, .1)' as a specified value should serialize as 'calc(0.3)'. assert_equals: 'max(.3, .2, .1)' and 'calc(0.3)' should serialize the same in specified values. expected "calc(0.3)" but got "max(0.3)"
2323FAIL 'scale(max(.3, .2, .1))' as a specified value should serialize as 'scale(calc(0.3))'. assert_equals: 'scale(max(.3, .2, .1))' and 'scale(calc(0.3))' should serialize the same in specified values. expected "scale(calc(0.3))" but got "scale(max(0.3))"
24 FAIL 'max(.3, .2, .1)' as a computed value should serialize as '0.3'. assert_equals: '0.3' should round-trip exactly in computed values. expected "0.3" but got "0.30000001192092896"
 24PASS 'max(.3, .2, .1)' as a computed value should serialize as '0.3'.
2525PASS 'scale(max(.3, .2, .1))' as a computed value should serialize as 'matrix(0.3, 0, 0, 0.3, 0, 0)'.
26 FAIL 'calc(min(.1) + min(.2))' as a specified value should serialize as 'calc(0.3)'. assert_equals: 'calc(min(.1) + min(.2))' and 'calc(0.3)' should serialize the same in specified values. expected "calc(0.3)" but got "calc(0.30000000000000004)"
27 FAIL 'scale(calc(min(.1) + min(.2)))' as a specified value should serialize as 'scale(calc(0.3))'. assert_equals: 'scale(calc(min(.1) + min(.2)))' and 'scale(calc(0.3))' should serialize the same in specified values. expected "scale(calc(0.3))" but got "scale(calc(0.30000000000000004))"
28 FAIL 'calc(min(.1) + min(.2))' as a computed value should serialize as '0.3'. assert_equals: '0.3' should round-trip exactly in computed values. expected "0.3" but got "0.30000001192092896"
29 FAIL 'scale(calc(min(.1) + min(.2)))' as a computed value should serialize as 'matrix(0.3, 0, 0, 0.3, 0, 0)'. assert_equals: 'scale(calc(min(.1) + min(.2)))' and 'matrix(0.3, 0, 0, 0.3, 0, 0)' should serialize the same in computed values. expected "matrix(0.3, 0, 0, 0.3, 0, 0)" but got "matrix(0.30000000000000004, 0, 0, 0.30000000000000004, 0, 0)"
30 FAIL 'calc(max(.1) + max(.2))' as a specified value should serialize as 'calc(0.3)'. assert_equals: 'calc(max(.1) + max(.2))' and 'calc(0.3)' should serialize the same in specified values. expected "calc(0.3)" but got "calc(0.30000000000000004)"
31 FAIL 'scale(calc(max(.1) + max(.2)))' as a specified value should serialize as 'scale(calc(0.3))'. assert_equals: 'scale(calc(max(.1) + max(.2)))' and 'scale(calc(0.3))' should serialize the same in specified values. expected "scale(calc(0.3))" but got "scale(calc(0.30000000000000004))"
32 FAIL 'calc(max(.1) + max(.2))' as a computed value should serialize as '0.3'. assert_equals: '0.3' should round-trip exactly in computed values. expected "0.3" but got "0.30000001192092896"
33 FAIL 'scale(calc(max(.1) + max(.2)))' as a computed value should serialize as 'matrix(0.3, 0, 0, 0.3, 0, 0)'. assert_equals: 'scale(calc(max(.1) + max(.2)))' and 'matrix(0.3, 0, 0, 0.3, 0, 0)' should serialize the same in computed values. expected "matrix(0.3, 0, 0, 0.3, 0, 0)" but got "matrix(0.30000000000000004, 0, 0, 0.30000000000000004, 0, 0)"
 26PASS 'calc(min(.1) + min(.2))' as a specified value should serialize as 'calc(0.3)'.
 27PASS 'scale(calc(min(.1) + min(.2)))' as a specified value should serialize as 'scale(calc(0.3))'.
 28PASS 'calc(min(.1) + min(.2))' as a computed value should serialize as '0.3'.
 29PASS 'scale(calc(min(.1) + min(.2)))' as a computed value should serialize as 'matrix(0.3, 0, 0, 0.3, 0, 0)'.
 30PASS 'calc(max(.1) + max(.2))' as a specified value should serialize as 'calc(0.3)'.
 31PASS 'scale(calc(max(.1) + max(.2)))' as a specified value should serialize as 'scale(calc(0.3))'.
 32PASS 'calc(max(.1) + max(.2))' as a computed value should serialize as '0.3'.
 33PASS 'scale(calc(max(.1) + max(.2)))' as a computed value should serialize as 'matrix(0.3, 0, 0, 0.3, 0, 0)'.
3434PASS 'calc(.1 + min(.1))' as a specified value should serialize as 'calc(0.2)'.
3535PASS 'scale(calc(.1 + min(.1)))' as a specified value should serialize as 'scale(calc(0.2))'.
36 FAIL 'calc(.1 + min(.1))' as a computed value should serialize as '0.2'. assert_equals: '0.2' should round-trip exactly in computed values. expected "0.2" but got "0.20000000298023224"
 36PASS 'calc(.1 + min(.1))' as a computed value should serialize as '0.2'.
3737PASS 'scale(calc(.1 + min(.1)))' as a computed value should serialize as 'matrix(0.2, 0, 0, 0.2, 0, 0)'.
3838PASS 'calc(max(.1) + .1)' as a specified value should serialize as 'calc(0.2)'.
3939PASS 'scale(calc(max(.1) + .1))' as a specified value should serialize as 'scale(calc(0.2))'.
40 FAIL 'calc(max(.1) + .1)' as a computed value should serialize as '0.2'. assert_equals: '0.2' should round-trip exactly in computed values. expected "0.2" but got "0.20000000298023224"
 40PASS 'calc(max(.1) + .1)' as a computed value should serialize as '0.2'.
4141PASS 'scale(calc(max(.1) + .1))' as a computed value should serialize as 'matrix(0.2, 0, 0, 0.2, 0, 0)'.
4242

LayoutTests/imported/w3c/web-platform-tests/css/css-variables/variable-presentation-attribute-expected.txt

@@PASS Testing 'direction'.
1313FAIL Testing 'display'. assert_equals: Value Test. expected "block" but got "inline"
1414FAIL Testing 'dominant-baseline'. assert_equals: Value Test. expected "use-script" but got "auto"
1515FAIL Testing 'fill'. assert_equals: Default value. expected "black" but got "rgb(0, 0, 0)"
16 FAIL Testing 'fill-opacity'. assert_equals: Value Test. expected "0.8" but got "0.800000011920929"
 16PASS Testing 'fill-opacity'.
1717PASS Testing 'fill-rule'.
1818PASS Testing 'filter'.
1919FAIL Testing 'flood-color'. assert_equals: Default value. expected "" but got "rgb(0, 0, 0)"
20 FAIL Testing 'flood-opacity'. assert_equals: Value Test. expected "0.7" but got "0.699999988079071"
 20PASS Testing 'flood-opacity'.
2121FAIL Testing 'font-family'. assert_equals: Default value. expected "Times New Roman" but got "-webkit-standard"
2222PASS Testing 'font-size'.
2323FAIL Testing 'font-size-adjust'. assert_equals: Default value. expected "none" but got ""

@@FAIL Testing 'glyph-orientation-vertical'. assert_equals: Value Test. expected "
2929FAIL Testing 'kerning'. assert_equals: Default value. expected "auto" but got "0"
3030PASS Testing 'letter-spacing'.
3131FAIL Testing 'lighting-color'. assert_equals: Default value. expected "" but got "rgb(255, 255, 255)"
32 FAIL Testing 'opacity'. assert_equals: Value Test. expected "0.11" but got "0.10999999940395355"
 32PASS Testing 'opacity'.
3333FAIL Testing 'overflow'. assert_equals: Value Test. expected "hidden" but got "visible"
3434FAIL Testing 'pointer-events'. assert_equals: Default value. expected "visiblePainted" but got "auto"
3535FAIL Testing 'stop-color'. assert_equals: Default value. expected "" but got "rgb(0, 0, 0)"
36 FAIL Testing 'stop-opacity'. assert_equals: Value Test. expected "0.225" but got "0.22499999403953552"
 36PASS Testing 'stop-opacity'.
3737FAIL Testing 'stroke'. assert_equals: Default value. expected "" but got "none"
3838PASS Testing 'stroke-dasharray'.
3939PASS Testing 'stroke-dashoffset'.
4040PASS Testing 'stroke-linecap'.
4141PASS Testing 'stroke-linejoin'.
4242PASS Testing 'stroke-miterlimit'.
43 FAIL Testing 'stroke-opacity'. assert_equals: Value Test. expected "0.221" but got "0.22100000083446503"
 43PASS Testing 'stroke-opacity'.
4444PASS Testing 'stroke-width'.
4545PASS Testing 'text-anchor'.
4646FAIL Testing 'text-decoration'. assert_equals: Value Test. expected "underline" but got "none"

LayoutTests/imported/w3c/web-platform-tests/css/cssom/getComputedStyle-line-height-expected.txt

22PASS line-height: normal
33PASS line-height: 1
44PASS line-height: 10px
5 FAIL line-height: 10% assert_equals: 10% should compute to 1.6px expected "1.6px" but got "1.600000023841858px"
 5PASS line-height: 10%
66

LayoutTests/imported/w3c/web-platform-tests/css/motion/animation/offset-rotate-interpolation-expected.txt

@@PASS Web Animations: property <offset-rotate> from [10deg] to [50deg] at (0.3) s
303303PASS Web Animations: property <offset-rotate> from [10deg] to [50deg] at (0.6) should be [34deg]
304304PASS Web Animations: property <offset-rotate> from [10deg] to [50deg] at (1) should be [50deg]
305305PASS Web Animations: property <offset-rotate> from [10deg] to [50deg] at (1.5) should be [70deg]
306 PASS CSS Transitions: property <offset-rotate> from [800deg] to [900deg] at (-3.40282e+38) should be [-3.40282e+38deg]
307 PASS CSS Transitions with transition: all: property <offset-rotate> from [800deg] to [900deg] at (-3.40282e+38) should be [-3.40282e+38deg]
308 PASS CSS Animations: property <offset-rotate> from [800deg] to [900deg] at (-3.40282e+38) should be [-3.40282e+38deg]
309 PASS Web Animations: property <offset-rotate> from [800deg] to [900deg] at (-3.40282e+38) should be [-3.40282e+38deg]
 306FAIL CSS Transitions: property <offset-rotate> from [800deg] to [900deg] at (-3.40282e+38) should be [-3.40282e+38deg] assert_equals: expected "- 340282001837565597733306976381245063168deg " but got "- 340282346638528859811704183484516925440deg "
 307FAIL CSS Transitions with transition: all: property <offset-rotate> from [800deg] to [900deg] at (-3.40282e+38) should be [-3.40282e+38deg] assert_equals: expected "- 340282001837565597733306976381245063168deg " but got "- 340282346638528859811704183484516925440deg "
 308FAIL CSS Animations: property <offset-rotate> from [800deg] to [900deg] at (-3.40282e+38) should be [-3.40282e+38deg] assert_equals: expected "- 340282001837565597733306976381245063168deg " but got "- 340282346638528859811704183484516925440deg "
 309FAIL Web Animations: property <offset-rotate> from [800deg] to [900deg] at (-3.40282e+38) should be [-3.40282e+38deg] assert_equals: expected "- 340282001837565597733306976381245063168deg " but got "- 340282346638528859811704183484516925440deg "
310310PASS CSS Transitions: property <offset-rotate> from [auto 10deg] to [auto 50deg] at (-0.3) should be [auto -2deg]
311311PASS CSS Transitions: property <offset-rotate> from [auto 10deg] to [auto 50deg] at (0) should be [auto 10deg]
312312PASS CSS Transitions: property <offset-rotate> from [auto 10deg] to [auto 50deg] at (0.3) should be [auto 22deg]

LayoutTests/imported/w3c/web-platform-tests/html/rendering/dimension-attributes-expected.txt

@@PASS <hr width="200"> mapping to width
33PASS <hr width="1007"> mapping to width
44PASS <hr width=" 00523 "> mapping to width
55PASS <hr width="200.25"> mapping to width
6 FAIL <hr width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px"
 6FAIL <hr width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px"
77PASS <hr width="200."> mapping to width
88PASS <hr width="200in"> mapping to width
99PASS <hr width="200.25in"> mapping to width

@@PASS <iframe width="200"> mapping to width
4343PASS <iframe width="1007"> mapping to width
4444PASS <iframe width=" 00523 "> mapping to width
4545PASS <iframe width="200.25"> mapping to width
46 FAIL <iframe width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px"
 46FAIL <iframe width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px"
4747PASS <iframe width="200."> mapping to width
4848PASS <iframe width="200in"> mapping to width
4949PASS <iframe width="200.25in"> mapping to width

@@PASS <iframe height="200"> mapping to height
8383PASS <iframe height="1007"> mapping to height
8484PASS <iframe height=" 00523 "> mapping to height
8585PASS <iframe height="200.25"> mapping to height
86 FAIL <iframe height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px"
 86FAIL <iframe height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px"
8787PASS <iframe height="200."> mapping to height
8888PASS <iframe height="200in"> mapping to height
8989PASS <iframe height="200.25in"> mapping to height

@@PASS <input width="200"> mapping to width
123123PASS <input width="1007"> mapping to width
124124PASS <input width=" 00523 "> mapping to width
125125PASS <input width="200.25"> mapping to width
126 FAIL <input width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px"
 126FAIL <input width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px"
127127PASS <input width="200."> mapping to width
128128PASS <input width="200in"> mapping to width
129129PASS <input width="200.25in"> mapping to width

@@PASS <input height="200"> mapping to height
163163PASS <input height="1007"> mapping to height
164164PASS <input height=" 00523 "> mapping to height
165165PASS <input height="200.25"> mapping to height
166 FAIL <input height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px"
 166FAIL <input height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px"
167167PASS <input height="200."> mapping to height
168168PASS <input height="200in"> mapping to height
169169PASS <input height="200.25in"> mapping to height

@@PASS <marquee width="200"> mapping to width
203203PASS <marquee width="1007"> mapping to width
204204PASS <marquee width=" 00523 "> mapping to width
205205PASS <marquee width="200.25"> mapping to width
206 FAIL <marquee width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px"
 206FAIL <marquee width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px"
207207PASS <marquee width="200."> mapping to width
208208PASS <marquee width="200in"> mapping to width
209209PASS <marquee width="200.25in"> mapping to width

@@PASS <marquee height="200"> mapping to height
243243PASS <marquee height="1007"> mapping to height
244244PASS <marquee height=" 00523 "> mapping to height
245245PASS <marquee height="200.25"> mapping to height
246 FAIL <marquee height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px"
 246FAIL <marquee height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px"
247247PASS <marquee height="200."> mapping to height
248248PASS <marquee height="200in"> mapping to height
249249PASS <marquee height="200.25in"> mapping to height

@@PASS <video width="200"> mapping to width
283283PASS <video width="1007"> mapping to width
284284PASS <video width=" 00523 "> mapping to width
285285PASS <video width="200.25"> mapping to width
286 FAIL <video width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px"
 286FAIL <video width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px"
287287PASS <video width="200."> mapping to width
288288PASS <video width="200in"> mapping to width
289289PASS <video width="200.25in"> mapping to width

@@PASS <video height="200"> mapping to height
323323PASS <video height="1007"> mapping to height
324324PASS <video height=" 00523 "> mapping to height
325325PASS <video height="200.25"> mapping to height
326 FAIL <video height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px"
 326FAIL <video height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px"
327327PASS <video height="200."> mapping to height
328328PASS <video height="200in"> mapping to height
329329PASS <video height="200.25in"> mapping to height

@@PASS <object width="200"> mapping to width
363363PASS <object width="1007"> mapping to width
364364PASS <object width=" 00523 "> mapping to width
365365PASS <object width="200.25"> mapping to width
366 FAIL <object width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px"
 366FAIL <object width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px"
367367PASS <object width="200."> mapping to width
368368PASS <object width="200in"> mapping to width
369369PASS <object width="200.25in"> mapping to width

@@PASS <object height="200"> mapping to height
403403PASS <object height="1007"> mapping to height
404404PASS <object height=" 00523 "> mapping to height
405405PASS <object height="200.25"> mapping to height
406 FAIL <object height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px"
 406FAIL <object height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px"
407407PASS <object height="200."> mapping to height
408408PASS <object height="200in"> mapping to height
409409PASS <object height="200.25in"> mapping to height

@@PASS <embed width="200"> mapping to width
443443PASS <embed width="1007"> mapping to width
444444PASS <embed width=" 00523 "> mapping to width
445445PASS <embed width="200.25"> mapping to width
446 FAIL <embed width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px"
 446FAIL <embed width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px"
447447PASS <embed width="200."> mapping to width
448448PASS <embed width="200in"> mapping to width
449449PASS <embed width="200.25in"> mapping to width

@@PASS <embed height="200"> mapping to height
483483PASS <embed height="1007"> mapping to height
484484PASS <embed height=" 00523 "> mapping to height
485485PASS <embed height="200.25"> mapping to height
486 FAIL <embed height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px"
 486FAIL <embed height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px"
487487PASS <embed height="200."> mapping to height
488488PASS <embed height="200in"> mapping to height
489489PASS <embed height="200.25in"> mapping to height

@@PASS <img width="200"> mapping to width
523523PASS <img width="1007"> mapping to width
524524PASS <img width=" 00523 "> mapping to width
525525PASS <img width="200.25"> mapping to width
526 FAIL <img width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px"
 526FAIL <img width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px"
527527PASS <img width="200."> mapping to width
528528PASS <img width="200in"> mapping to width
529529PASS <img width="200.25in"> mapping to width

@@PASS <img height="200"> mapping to height
563563PASS <img height="1007"> mapping to height
564564PASS <img height=" 00523 "> mapping to height
565565PASS <img height="200.25"> mapping to height
566 FAIL <img height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px"
 566FAIL <img height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px"
567567PASS <img height="200."> mapping to height
568568PASS <img height="200in"> mapping to height
569569PASS <img height="200.25in"> mapping to height

@@PASS <td width="200"> mapping to width
603603PASS <td width="1007"> mapping to width
604604PASS <td width=" 00523 "> mapping to width
605605PASS <td width="200.25"> mapping to width
606 FAIL <td width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px"
 606FAIL <td width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px"
607607PASS <td width="200."> mapping to width
608608PASS <td width="200in"> mapping to width
609609PASS <td width="200.25in"> mapping to width

@@PASS <td height="200"> mapping to height
643643PASS <td height="1007"> mapping to height
644644PASS <td height=" 00523 "> mapping to height
645645PASS <td height="200.25"> mapping to height
646 FAIL <td height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px"
 646FAIL <td height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px"
647647PASS <td height="200."> mapping to height
648648PASS <td height="200in"> mapping to height
649649PASS <td height="200.25in"> mapping to height

@@PASS <table width="200"> mapping to width
683683PASS <table width="1007"> mapping to width
684684PASS <table width=" 00523 "> mapping to width
685685PASS <table width="200.25"> mapping to width
686 FAIL <table width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px"
 686FAIL <table width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px"
687687PASS <table width="200."> mapping to width
688688PASS <table width="200in"> mapping to width
689689PASS <table width="200.25in"> mapping to width

@@PASS <table height="200"> mapping to height
723723PASS <table height="1007"> mapping to height
724724PASS <table height=" 00523 "> mapping to height
725725PASS <table height="200.25"> mapping to height
726 FAIL <table height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px"
 726FAIL <table height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px"
727727PASS <table height="200."> mapping to height
728728PASS <table height="200in"> mapping to height
729729PASS <table height="200.25in"> mapping to height

@@PASS <tr height="200"> mapping to height
763763PASS <tr height="1007"> mapping to height
764764PASS <tr height=" 00523 "> mapping to height
765765PASS <tr height="200.25"> mapping to height
766 FAIL <tr height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.6999969482422px"
 766FAIL <tr height="200.7"> mapping to height assert_equals: expected "200.7px" but got "200.699997px"
767767PASS <tr height="200."> mapping to height
768768PASS <tr height="200in"> mapping to height
769769PASS <tr height="200.25in"> mapping to height

@@PASS <col width="200"> mapping to width
803803PASS <col width="1007"> mapping to width
804804PASS <col width=" 00523 "> mapping to width
805805PASS <col width="200.25"> mapping to width
806 FAIL <col width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.6999969482422px"
 806FAIL <col width="200.7"> mapping to width assert_equals: expected "200.7px" but got "200.699997px"
807807PASS <col width="200."> mapping to width
808808PASS <col width="200in"> mapping to width
809809PASS <col width="200.25in"> mapping to width

@@PASS <embed hspace="200"> mapping to marginLeft
843843PASS <embed hspace="1007"> mapping to marginLeft
844844PASS <embed hspace=" 00523 "> mapping to marginLeft
845845PASS <embed hspace="200.25"> mapping to marginLeft
846 FAIL <embed hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.6999969482422px"
 846FAIL <embed hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.699997px"
847847PASS <embed hspace="200."> mapping to marginLeft
848848PASS <embed hspace="200in"> mapping to marginLeft
849849PASS <embed hspace="200.25in"> mapping to marginLeft

@@PASS <embed hspace="200"> mapping to marginRight
883883PASS <embed hspace="1007"> mapping to marginRight
884884PASS <embed hspace=" 00523 "> mapping to marginRight
885885PASS <embed hspace="200.25"> mapping to marginRight
886 FAIL <embed hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.6999969482422px"
 886FAIL <embed hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.699997px"
887887PASS <embed hspace="200."> mapping to marginRight
888888PASS <embed hspace="200in"> mapping to marginRight
889889PASS <embed hspace="200.25in"> mapping to marginRight

@@PASS <embed vspace="200"> mapping to marginTop
923923PASS <embed vspace="1007"> mapping to marginTop
924924PASS <embed vspace=" 00523 "> mapping to marginTop
925925PASS <embed vspace="200.25"> mapping to marginTop
926 FAIL <embed vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.6999969482422px"
 926FAIL <embed vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.699997px"
927927PASS <embed vspace="200."> mapping to marginTop
928928PASS <embed vspace="200in"> mapping to marginTop
929929PASS <embed vspace="200.25in"> mapping to marginTop

@@PASS <embed vspace="200"> mapping to marginBottom
963963PASS <embed vspace="1007"> mapping to marginBottom
964964PASS <embed vspace=" 00523 "> mapping to marginBottom
965965PASS <embed vspace="200.25"> mapping to marginBottom
966 FAIL <embed vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.6999969482422px"
 966FAIL <embed vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.699997px"
967967PASS <embed vspace="200."> mapping to marginBottom
968968PASS <embed vspace="200in"> mapping to marginBottom
969969PASS <embed vspace="200.25in"> mapping to marginBottom

@@PASS <img hspace="200"> mapping to marginLeft
10031003PASS <img hspace="1007"> mapping to marginLeft
10041004PASS <img hspace=" 00523 "> mapping to marginLeft
10051005PASS <img hspace="200.25"> mapping to marginLeft
1006 FAIL <img hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.6999969482422px"
 1006FAIL <img hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.699997px"
10071007PASS <img hspace="200."> mapping to marginLeft
10081008PASS <img hspace="200in"> mapping to marginLeft
10091009PASS <img hspace="200.25in"> mapping to marginLeft

@@PASS <img hspace="200"> mapping to marginRight
10431043PASS <img hspace="1007"> mapping to marginRight
10441044PASS <img hspace=" 00523 "> mapping to marginRight
10451045PASS <img hspace="200.25"> mapping to marginRight
1046 FAIL <img hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.6999969482422px"
 1046FAIL <img hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.699997px"
10471047PASS <img hspace="200."> mapping to marginRight
10481048PASS <img hspace="200in"> mapping to marginRight
10491049PASS <img hspace="200.25in"> mapping to marginRight

@@PASS <img vspace="200"> mapping to marginTop
10831083PASS <img vspace="1007"> mapping to marginTop
10841084PASS <img vspace=" 00523 "> mapping to marginTop
10851085PASS <img vspace="200.25"> mapping to marginTop
1086 FAIL <img vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.6999969482422px"
 1086FAIL <img vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.699997px"
10871087PASS <img vspace="200."> mapping to marginTop
10881088PASS <img vspace="200in"> mapping to marginTop
10891089PASS <img vspace="200.25in"> mapping to marginTop

@@PASS <img vspace="200"> mapping to marginBottom
11231123PASS <img vspace="1007"> mapping to marginBottom
11241124PASS <img vspace=" 00523 "> mapping to marginBottom
11251125PASS <img vspace="200.25"> mapping to marginBottom
1126 FAIL <img vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.6999969482422px"
 1126FAIL <img vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.699997px"
11271127PASS <img vspace="200."> mapping to marginBottom
11281128PASS <img vspace="200in"> mapping to marginBottom
11291129PASS <img vspace="200.25in"> mapping to marginBottom

@@PASS <object hspace="200"> mapping to marginLeft
11631163PASS <object hspace="1007"> mapping to marginLeft
11641164PASS <object hspace=" 00523 "> mapping to marginLeft
11651165PASS <object hspace="200.25"> mapping to marginLeft
1166 FAIL <object hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.6999969482422px"
 1166FAIL <object hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.699997px"
11671167PASS <object hspace="200."> mapping to marginLeft
11681168PASS <object hspace="200in"> mapping to marginLeft
11691169PASS <object hspace="200.25in"> mapping to marginLeft

@@PASS <object hspace="200"> mapping to marginRight
12031203PASS <object hspace="1007"> mapping to marginRight
12041204PASS <object hspace=" 00523 "> mapping to marginRight
12051205PASS <object hspace="200.25"> mapping to marginRight
1206 FAIL <object hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.6999969482422px"
 1206FAIL <object hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.699997px"
12071207PASS <object hspace="200."> mapping to marginRight
12081208PASS <object hspace="200in"> mapping to marginRight
12091209PASS <object hspace="200.25in"> mapping to marginRight

@@PASS <object vspace="200"> mapping to marginTop
12431243PASS <object vspace="1007"> mapping to marginTop
12441244PASS <object vspace=" 00523 "> mapping to marginTop
12451245PASS <object vspace="200.25"> mapping to marginTop
1246 FAIL <object vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.6999969482422px"
 1246FAIL <object vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.699997px"
12471247PASS <object vspace="200."> mapping to marginTop
12481248PASS <object vspace="200in"> mapping to marginTop
12491249PASS <object vspace="200.25in"> mapping to marginTop

@@PASS <object vspace="200"> mapping to marginBottom
12831283PASS <object vspace="1007"> mapping to marginBottom
12841284PASS <object vspace=" 00523 "> mapping to marginBottom
12851285PASS <object vspace="200.25"> mapping to marginBottom
1286 FAIL <object vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.6999969482422px"
 1286FAIL <object vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.699997px"
12871287PASS <object vspace="200."> mapping to marginBottom
12881288PASS <object vspace="200in"> mapping to marginBottom
12891289PASS <object vspace="200.25in"> mapping to marginBottom

@@PASS <input hspace="200"> mapping to marginLeft
13231323PASS <input hspace="1007"> mapping to marginLeft
13241324PASS <input hspace=" 00523 "> mapping to marginLeft
13251325PASS <input hspace="200.25"> mapping to marginLeft
1326 FAIL <input hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.6999969482422px"
 1326FAIL <input hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.699997px"
13271327PASS <input hspace="200."> mapping to marginLeft
13281328PASS <input hspace="200in"> mapping to marginLeft
13291329PASS <input hspace="200.25in"> mapping to marginLeft

@@PASS <input hspace="200"> mapping to marginRight
13631363PASS <input hspace="1007"> mapping to marginRight
13641364PASS <input hspace=" 00523 "> mapping to marginRight
13651365PASS <input hspace="200.25"> mapping to marginRight
1366 FAIL <input hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.6999969482422px"
 1366FAIL <input hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.699997px"
13671367PASS <input hspace="200."> mapping to marginRight
13681368PASS <input hspace="200in"> mapping to marginRight
13691369PASS <input hspace="200.25in"> mapping to marginRight

@@PASS <input vspace="200"> mapping to marginTop
14031403PASS <input vspace="1007"> mapping to marginTop
14041404PASS <input vspace=" 00523 "> mapping to marginTop
14051405PASS <input vspace="200.25"> mapping to marginTop
1406 FAIL <input vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.6999969482422px"
 1406FAIL <input vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.699997px"
14071407PASS <input vspace="200."> mapping to marginTop
14081408PASS <input vspace="200in"> mapping to marginTop
14091409PASS <input vspace="200.25in"> mapping to marginTop

@@PASS <input vspace="200"> mapping to marginBottom
14431443PASS <input vspace="1007"> mapping to marginBottom
14441444PASS <input vspace=" 00523 "> mapping to marginBottom
14451445PASS <input vspace="200.25"> mapping to marginBottom
1446 FAIL <input vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.6999969482422px"
 1446FAIL <input vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.699997px"
14471447PASS <input vspace="200."> mapping to marginBottom
14481448PASS <input vspace="200in"> mapping to marginBottom
14491449PASS <input vspace="200.25in"> mapping to marginBottom

@@PASS <marquee hspace="200"> mapping to marginLeft
14831483PASS <marquee hspace="1007"> mapping to marginLeft
14841484PASS <marquee hspace=" 00523 "> mapping to marginLeft
14851485PASS <marquee hspace="200.25"> mapping to marginLeft
1486 FAIL <marquee hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.6999969482422px"
 1486FAIL <marquee hspace="200.7"> mapping to marginLeft assert_equals: expected "200.7px" but got "200.699997px"
14871487PASS <marquee hspace="200."> mapping to marginLeft
14881488PASS <marquee hspace="200in"> mapping to marginLeft
14891489PASS <marquee hspace="200.25in"> mapping to marginLeft

@@PASS <marquee hspace="200"> mapping to marginRight
15231523PASS <marquee hspace="1007"> mapping to marginRight
15241524PASS <marquee hspace=" 00523 "> mapping to marginRight
15251525PASS <marquee hspace="200.25"> mapping to marginRight
1526 FAIL <marquee hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.6999969482422px"
 1526FAIL <marquee hspace="200.7"> mapping to marginRight assert_equals: expected "200.7px" but got "200.699997px"
15271527PASS <marquee hspace="200."> mapping to marginRight
15281528PASS <marquee hspace="200in"> mapping to marginRight
15291529PASS <marquee hspace="200.25in"> mapping to marginRight

@@PASS <marquee vspace="200"> mapping to marginTop
15631563PASS <marquee vspace="1007"> mapping to marginTop
15641564PASS <marquee vspace=" 00523 "> mapping to marginTop
15651565PASS <marquee vspace="200.25"> mapping to marginTop
1566 FAIL <marquee vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.6999969482422px"
 1566FAIL <marquee vspace="200.7"> mapping to marginTop assert_equals: expected "200.7px" but got "200.699997px"
15671567PASS <marquee vspace="200."> mapping to marginTop
15681568PASS <marquee vspace="200in"> mapping to marginTop
15691569PASS <marquee vspace="200.25in"> mapping to marginTop

@@PASS <marquee vspace="200"> mapping to marginBottom
16031603PASS <marquee vspace="1007"> mapping to marginBottom
16041604PASS <marquee vspace=" 00523 "> mapping to marginBottom
16051605PASS <marquee vspace="200.25"> mapping to marginBottom
1606 FAIL <marquee vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.6999969482422px"
 1606FAIL <marquee vspace="200.7"> mapping to marginBottom assert_equals: expected "200.7px" but got "200.699997px"
16071607PASS <marquee vspace="200."> mapping to marginBottom
16081608PASS <marquee vspace="200in"> mapping to marginBottom
16091609PASS <marquee vspace="200.25in"> mapping to marginBottom

LayoutTests/imported/w3c/web-platform-tests/html/rendering/pixel-length-attributes-expected.txt

@@PASS <body marginwidth="1007"> mapping to marginLeft
172172PASS <body marginwidth=" 00523 "> mapping to marginLeft
173173PASS <body marginwidth="200."> mapping to marginLeft
174174FAIL <body marginwidth="200.25"> mapping to marginLeft assert_equals: expected "200px" but got "200.25px"
175 FAIL <body marginwidth="200.7"> mapping to marginLeft assert_equals: expected "200px" but got "200.6999969482422px"
 175FAIL <body marginwidth="200.7"> mapping to marginLeft assert_equals: expected "200px" but got "200.699997px"
176176PASS <body marginwidth="0"> mapping to marginLeft
177177FAIL <body marginwidth="-0"> mapping to marginLeft assert_equals: expected "0px" but got "8px"
178178FAIL <body marginwidth="+0"> mapping to marginLeft assert_equals: expected "0px" but got "8px"

@@PASS <body marginwidth="1007"> mapping to marginRight
193193PASS <body marginwidth=" 00523 "> mapping to marginRight
194194PASS <body marginwidth="200."> mapping to marginRight
195195FAIL <body marginwidth="200.25"> mapping to marginRight assert_equals: expected "200px" but got "200.25px"
196 FAIL <body marginwidth="200.7"> mapping to marginRight assert_equals: expected "200px" but got "200.6999969482422px"
 196FAIL <body marginwidth="200.7"> mapping to marginRight assert_equals: expected "200px" but got "200.699997px"
197197PASS <body marginwidth="0"> mapping to marginRight
198198FAIL <body marginwidth="-0"> mapping to marginRight assert_equals: expected "0px" but got "8px"
199199FAIL <body marginwidth="+0"> mapping to marginRight assert_equals: expected "0px" but got "8px"

@@PASS <body leftmargin="1007"> mapping to marginLeft
214214PASS <body leftmargin=" 00523 "> mapping to marginLeft
215215PASS <body leftmargin="200."> mapping to marginLeft
216216FAIL <body leftmargin="200.25"> mapping to marginLeft assert_equals: expected "200px" but got "200.25px"
217 FAIL <body leftmargin="200.7"> mapping to marginLeft assert_equals: expected "200px" but got "200.6999969482422px"
 217FAIL <body leftmargin="200.7"> mapping to marginLeft assert_equals: expected "200px" but got "200.699997px"
218218PASS <body leftmargin="0"> mapping to marginLeft
219219FAIL <body leftmargin="-0"> mapping to marginLeft assert_equals: expected "0px" but got "8px"
220220FAIL <body leftmargin="+0"> mapping to marginLeft assert_equals: expected "0px" but got "8px"

@@PASS <body marginheight="1007"> mapping to marginTop
256256PASS <body marginheight=" 00523 "> mapping to marginTop
257257PASS <body marginheight="200."> mapping to marginTop
258258FAIL <body marginheight="200.25"> mapping to marginTop assert_equals: expected "200px" but got "200.25px"
259 FAIL <body marginheight="200.7"> mapping to marginTop assert_equals: expected "200px" but got "200.6999969482422px"
 259FAIL <body marginheight="200.7"> mapping to marginTop assert_equals: expected "200px" but got "200.699997px"
260260PASS <body marginheight="0"> mapping to marginTop
261261FAIL <body marginheight="-0"> mapping to marginTop assert_equals: expected "0px" but got "8px"
262262FAIL <body marginheight="+0"> mapping to marginTop assert_equals: expected "0px" but got "8px"

@@PASS <body marginheight="1007"> mapping to marginBottom
277277PASS <body marginheight=" 00523 "> mapping to marginBottom
278278PASS <body marginheight="200."> mapping to marginBottom
279279FAIL <body marginheight="200.25"> mapping to marginBottom assert_equals: expected "200px" but got "200.25px"
280 FAIL <body marginheight="200.7"> mapping to marginBottom assert_equals: expected "200px" but got "200.6999969482422px"
 280FAIL <body marginheight="200.7"> mapping to marginBottom assert_equals: expected "200px" but got "200.699997px"
281281PASS <body marginheight="0"> mapping to marginBottom
282282FAIL <body marginheight="-0"> mapping to marginBottom assert_equals: expected "0px" but got "8px"
283283FAIL <body marginheight="+0"> mapping to marginBottom assert_equals: expected "0px" but got "8px"

@@PASS <body topmargin="1007"> mapping to marginTop
298298PASS <body topmargin=" 00523 "> mapping to marginTop
299299PASS <body topmargin="200."> mapping to marginTop
300300FAIL <body topmargin="200.25"> mapping to marginTop assert_equals: expected "200px" but got "200.25px"
301 FAIL <body topmargin="200.7"> mapping to marginTop assert_equals: expected "200px" but got "200.6999969482422px"
 301FAIL <body topmargin="200.7"> mapping to marginTop assert_equals: expected "200px" but got "200.699997px"
302302PASS <body topmargin="0"> mapping to marginTop
303303FAIL <body topmargin="-0"> mapping to marginTop assert_equals: expected "0px" but got "8px"
304304FAIL <body topmargin="+0"> mapping to marginTop assert_equals: expected "0px" but got "8px"

LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-001-expected.txt

@@PASS empty-cells (type: discrete) has testAccumulation function
170170PASS empty-cells: "hide" onto "show"
171171PASS empty-cells: "show" onto "hide"
172172PASS fill-opacity (type: opacity) has testAccumulation function
173 FAIL fill-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.6000000238418579"
174 FAIL fill-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.100000023841858"
 173PASS fill-opacity: [0, 1] number
 174FAIL fill-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.1"
175175PASS filter (type: filterList) has testAccumulation function
176176FAIL filter: same ordered filter functions assert_equals: The value should be blur(30px) brightness(0) at 0ms expected "blur(30px) brightness(0)" but got "blur(30px) brightness(0.4)"
177177PASS filter: mismatched ordered filter functions

@@PASS flex-direction (type: discrete) has testAccumulation function
194194PASS flex-direction: "row-reverse" onto "row"
195195PASS flex-direction: "row" onto "row-reverse"
196196PASS flex-grow (type: positiveNumber) has testAccumulation function
197 FAIL flex-grow: positive number assert_equals: The value should be 2.2 at 0ms expected "2.2" but got "2.200000047683716"
 197PASS flex-grow: positive number
198198PASS flex-shrink (type: positiveNumber) has testAccumulation function
199 FAIL flex-shrink: positive number assert_equals: The value should be 2.2 at 0ms expected "2.2" but got "2.200000047683716"
 199PASS flex-shrink: positive number
200200PASS flex-wrap (type: discrete) has testAccumulation function
201201PASS flex-wrap: "wrap" onto "nowrap"
202202PASS flex-wrap: "nowrap" onto "wrap"

@@PASS flood-color supports animating as color of #RGBa
208208PASS flood-color supports animating as color of rgba()
209209PASS flood-color supports animating as color of hsla()
210210PASS flood-opacity (type: opacity) has testAccumulation function
211 FAIL flood-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.6000000238418579"
212 FAIL flood-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.100000023841858"
 211PASS flood-opacity: [0, 1] number
 212FAIL flood-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.1"
213213PASS font-stretch (type: percentage) has testAccumulation function
214214PASS font-stretch: percentage
215215PASS font-style (type: discrete) has testAccumulation function

LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/accumulation-per-property-002-expected.txt

@@PASS stop-color supports animating as color of #RGBa
121121PASS stop-color supports animating as color of rgba()
122122PASS stop-color supports animating as color of hsla()
123123PASS stop-opacity (type: opacity) has testAccumulation function
124 FAIL stop-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.6000000238418579"
125 FAIL stop-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.100000023841858"
 124PASS stop-opacity: [0, 1] number
 125FAIL stop-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.1"
126126PASS stroke-dasharray (type: dasharray) has testAccumulation function
127127PASS stroke-dasharray: dasharray
128128PASS stroke-dasharray (type: discrete) has testAccumulation function
129129PASS stroke-dasharray: "10px, 20px" onto "none"
130130PASS stroke-dasharray: "none" onto "10px, 20px"
131131PASS stroke-miterlimit (type: positiveNumber) has testAccumulation function
132 FAIL stroke-miterlimit: positive number assert_equals: The value should be 2.2 at 0ms expected "2.2" but got "2.200000047683716"
 132PASS stroke-miterlimit: positive number
133133PASS stroke-opacity (type: opacity) has testAccumulation function
134 FAIL stroke-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.6000000238418579"
135 FAIL stroke-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.100000023841858"
 134PASS stroke-opacity: [0, 1] number
 135FAIL stroke-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.1"
136136PASS table-layout (type: discrete) has testAccumulation function
137137PASS table-layout: "fixed" onto "auto"
138138PASS table-layout: "auto" onto "fixed"

LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-001-expected.txt

@@PASS empty-cells (type: discrete) has testAddition function
170170PASS empty-cells: "hide" onto "show"
171171PASS empty-cells: "show" onto "hide"
172172PASS fill-opacity (type: opacity) has testAddition function
173 FAIL fill-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.6000000238418579"
174 FAIL fill-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.100000023841858"
 173PASS fill-opacity: [0, 1] number
 174FAIL fill-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.1"
175175PASS filter (type: filterList) has testAddition function
176176FAIL filter: blur on blur assert_equals: The value should be blur(10px) blur(20px) at 0ms expected "blur(10px) blur(20px)" but got "blur(30px)"
177177FAIL filter: different filter functions assert_equals: The value should be blur(10px) brightness(0.8) at 0ms expected "blur(10px) brightness(0.8)" but got "brightness(0.8)"

@@PASS flex-direction (type: discrete) has testAddition function
194194PASS flex-direction: "row-reverse" onto "row"
195195PASS flex-direction: "row" onto "row-reverse"
196196PASS flex-grow (type: positiveNumber) has testAddition function
197 FAIL flex-grow: positive number assert_equals: The value should be 2.2 at 0ms expected "2.2" but got "2.200000047683716"
 197PASS flex-grow: positive number
198198PASS flex-shrink (type: positiveNumber) has testAddition function
199 FAIL flex-shrink: positive number assert_equals: The value should be 2.2 at 0ms expected "2.2" but got "2.200000047683716"
 199PASS flex-shrink: positive number
200200PASS flex-wrap (type: discrete) has testAddition function
201201PASS flex-wrap: "wrap" onto "nowrap"
202202PASS flex-wrap: "nowrap" onto "wrap"

@@PASS flood-color supports animating as color of #RGBa
208208PASS flood-color supports animating as color of rgba()
209209PASS flood-color supports animating as color of hsla()
210210PASS flood-opacity (type: opacity) has testAddition function
211 FAIL flood-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.6000000238418579"
212 FAIL flood-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.100000023841858"
 211PASS flood-opacity: [0, 1] number
 212FAIL flood-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.1"
213213PASS font-stretch (type: percentage) has testAddition function
214214PASS font-stretch: percentage
215215PASS font-style (type: discrete) has testAddition function

LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/addition-per-property-002-expected.txt

@@PASS stop-color supports animating as color of #RGBa
121121PASS stop-color supports animating as color of rgba()
122122PASS stop-color supports animating as color of hsla()
123123PASS stop-opacity (type: opacity) has testAddition function
124 FAIL stop-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.6000000238418579"
125 FAIL stop-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.100000023841858"
 124PASS stop-opacity: [0, 1] number
 125FAIL stop-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.1"
126126PASS stroke-dasharray (type: dasharray) has testAddition function
127127PASS stroke-dasharray: dasharray
128128PASS stroke-dasharray (type: discrete) has testAddition function
129129PASS stroke-dasharray: "10px, 20px" onto "none"
130130PASS stroke-dasharray: "none" onto "10px, 20px"
131131PASS stroke-miterlimit (type: positiveNumber) has testAddition function
132 FAIL stroke-miterlimit: positive number assert_equals: The value should be 2.2 at 0ms expected "2.2" but got "2.200000047683716"
 132PASS stroke-miterlimit: positive number
133133PASS stroke-opacity (type: opacity) has testAddition function
134 FAIL stroke-opacity: [0, 1] number assert_equals: The value should be 0.6 at 0ms expected "0.6" but got "0.6000000238418579"
135 FAIL stroke-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.100000023841858"
 134PASS stroke-opacity: [0, 1] number
 135FAIL stroke-opacity: [0, 1] number (clamped) assert_equals: The value should be 1 at 0ms expected "1" but got "1.1"
136136PASS table-layout (type: discrete) has testAddition function
137137PASS table-layout: "fixed" onto "auto"
138138PASS table-layout: "auto" onto "fixed"

LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-001-expected.txt

@@PASS empty-cells uses discrete animation when animating between "show" and "hide
204204PASS empty-cells uses discrete animation when animating between "show" and "hide" with effect easing
205205PASS empty-cells uses discrete animation when animating between "show" and "hide" with keyframe easing
206206PASS fill-opacity (type: opacity) has testInterpolation function
207 FAIL fill-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929"
 207PASS fill-opacity supports animating as a [0, 1] number
208208PASS filter (type: filterList) has testInterpolation function
209209PASS filter: blur function
210210PASS filter: hue-rotate function with same unit(deg)
211 FAIL filter: hue-rotate function with different unit(deg -> rad) assert_equals: The value should be hue-rotate(2869.79deg) at 500ms expected "hue-rotate(2869.79deg)" but got "hue-rotate(2869.7889756541163deg)"
 211FAIL filter: hue-rotate function with different unit(deg -> rad) assert_equals: The value should be hue-rotate(2869.79deg) at 500ms expected "hue-rotate(2869.79deg)" but got "hue-rotate(2869.788976deg)"
212212PASS filter: drop-shadow function
213 FAIL filter: percentage or numeric-specifiable functions (number value) assert_equals: The value should be brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3) at 500ms expected "brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3)" but got "brightness(0.30000000000000004) contrast(0.30000000000000004) grayscale(0.30000000000000004) invert(0.30000000000000004) opacity(0.30000000000000004) saturate(0.30000000000000004) sepia(0.30000000000000004)"
214 FAIL filter: percentage or numeric-specifiable functions (percentage value) assert_equals: The value should be brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3) at 500ms expected "brightness(0.3) contrast(0.3) grayscale(0.3) invert(0.3) opacity(0.3) saturate(0.3) sepia(0.3)" but got "brightness(0.30000000000000004) contrast(0.30000000000000004) grayscale(0.30000000000000004) invert(0.30000000000000004) opacity(0.30000000000000004) saturate(0.30000000000000004) sepia(0.30000000000000004)"
 213PASS filter: percentage or numeric-specifiable functions (number value)
 214PASS filter: percentage or numeric-specifiable functions (percentage value)
215215FAIL filter: interpolate different length of filter-function-list with function which lacuna value is 1 assert_equals: The value should be grayscale(0.5) brightness(0.5) contrast(0.5) opacity(0.5) saturate(0.5) at 500ms expected "grayscale(0.5) brightness(0.5) contrast(0.5) opacity(0.5) saturate(0.5)" but got "grayscale(1) brightness(0) contrast(0) opacity(0) saturate(0)"
216216FAIL filter: interpolate different length of filter-function-list with function which lacuna value is 0 assert_equals: The value should be opacity(0.5) grayscale(0.5) invert(0.5) sepia(0.5) blur(5px) at 500ms expected "opacity(0.5) grayscale(0.5) invert(0.5) sepia(0.5) blur(5px)" but got "opacity(0) grayscale(1) invert(1) sepia(1) blur(10px)"
217217FAIL filter: interpolate different length of filter-function-list with drop-shadow function assert_equals: The value should be blur(5px) drop-shadow(rgba(0, 0, 255, 0.4) 5px 5px 5px) at 500ms expected "blur(5px) drop-shadow(rgba(0, 0, 255, 0.4) 5px 5px 5px)" but got "blur(10px) drop-shadow(rgba(0, 0, 255, 0.8) 10px 10px 10px)"
218218PASS filter: interpolate from none
219 FAIL filter: url function (interpoalte as discrete) assert_equals: The value should be blur(0px) url("#f1") at 499ms expected "blur(0px) url(\"#f1\")" but got "blur(4.989999771118164px) url(\"#f1\")"
 219FAIL filter: url function (interpoalte as discrete) assert_equals: The value should be blur(0px) url("#f1") at 499ms expected "blur(0px) url(\"#f1\")" but got "blur(4.99px) url(\"#f1\")"
220220PASS flex-basis (type: lengthPercentageOrCalc) has testInterpolation function
221221PASS flex-basis supports animating as a length
222222PASS flex-basis supports animating as a length of rem

@@PASS flex-direction uses discrete animation when animating between "row" and "ro
235235PASS flex-direction uses discrete animation when animating between "row" and "row-reverse" with effect easing
236236PASS flex-direction uses discrete animation when animating between "row" and "row-reverse" with keyframe easing
237237PASS flex-grow (type: positiveNumber) has testInterpolation function
238 FAIL flex-grow supports animating as a positive number assert_equals: The value should be 1.3 at 500ms expected "1.3" but got "1.2999999523162842"
 238PASS flex-grow supports animating as a positive number
239239PASS flex-shrink (type: positiveNumber) has testInterpolation function
240 FAIL flex-shrink supports animating as a positive number assert_equals: The value should be 1.3 at 500ms expected "1.3" but got "1.2999999523162842"
 240PASS flex-shrink supports animating as a positive number
241241PASS flex-wrap (type: discrete) has testInterpolation function
242242PASS flex-wrap uses discrete animation when animating between "nowrap" and "wrap" with linear easing
243243PASS flex-wrap uses discrete animation when animating between "nowrap" and "wrap" with effect easing

@@PASS flood-color supports animating as color of #RGBa
250250PASS flood-color supports animating as color of rgba()
251251PASS flood-color supports animating as color of hsla()
252252PASS flood-opacity (type: opacity) has testInterpolation function
253 FAIL flood-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929"
 253PASS flood-opacity supports animating as a [0, 1] number
254254PASS font-stretch (type: percentage) has testInterpolation function
255255PASS font-stretch supports animating as a percentage
256256PASS font-style (type: discrete) has testInterpolation function

LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/animation-types/interpolation-per-property-002-expected.txt

@@PASS stop-color supports animating as color of #RGBa
141141PASS stop-color supports animating as color of rgba()
142142PASS stop-color supports animating as color of hsla()
143143PASS stop-opacity (type: opacity) has testInterpolation function
144 FAIL stop-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929"
 144PASS stop-opacity supports animating as a [0, 1] number
145145PASS stroke-dasharray (type: dasharray) has testInterpolation function
146146PASS stroke-dasharray supports animating as a percentage
147 FAIL stroke-dasharray supports animating as a positive number assert_equals: The value should be 1.3px at 500ms expected "1.3px" but got "1.2999999523162842px"
 147PASS stroke-dasharray supports animating as a positive number
148148PASS stroke-dasharray supports animating as a dasharray (mismatched length)
149149PASS stroke-dasharray supports animating as a dasharray (mixed lengths and percentages)
150150PASS stroke-dasharray (type: discrete) has testInterpolation function

@@PASS stroke-dasharray uses discrete animation when animating between "none" and
152152PASS stroke-dasharray uses discrete animation when animating between "none" and "10px, 20px" with effect easing
153153PASS stroke-dasharray uses discrete animation when animating between "none" and "10px, 20px" with keyframe easing
154154PASS stroke-miterlimit (type: positiveNumber) has testInterpolation function
155 FAIL stroke-miterlimit supports animating as a positive number assert_equals: The value should be 1.3 at 500ms expected "1.3" but got "1.2999999523162842"
 155PASS stroke-miterlimit supports animating as a positive number
156156PASS stroke-opacity (type: opacity) has testInterpolation function
157 FAIL stroke-opacity supports animating as a [0, 1] number assert_equals: The value should be 0.55 at 500ms expected "0.55" but got "0.550000011920929"
 157PASS stroke-opacity supports animating as a [0, 1] number
158158PASS table-layout (type: discrete) has testInterpolation function
159159PASS table-layout uses discrete animation when animating between "auto" and "fixed" with linear easing
160160PASS table-layout uses discrete animation when animating between "auto" and "fixed" with effect easing

LayoutTests/imported/w3c/web-platform-tests/web-animations/animation-model/keyframe-effects/effect-value-iteration-composite-operation-expected.txt

@@FAIL iteration composition of <number> type animation assert_equals: Animated fl
88FAIL iteration composition of <shape> type animation assert_equals: Animated clip style at 0s of the third iteration expected "rect(20px, 20px, 20px, 20px)" but got "rect(0px, 0px, 0px, 0px)"
99FAIL iteration composition of <calc()> value animation assert_equals: Animated calc width style at 0s of the third iteration expected "20px" but got "0px"
1010FAIL iteration composition of <calc()> value animation that the values can'tbe reduced assert_equals: Animated calc width style at 0s of the third iteration expected "40px" but got "0px"
11 FAIL iteration composition of opacity animation assert_equals: Animated opacity style at 50s of the first iteration expected "0.2" but got "0.20000000298023224"
 11FAIL iteration composition of opacity animation assert_equals: Animated opacity style at 0s of the third iteration expected "0.8" but got "0"
1212FAIL iteration composition of box-shadow animation assert_equals: Animated box-shadow style at 0s of the third iteration expected "rgb(240, 240, 240) 20px 20px 20px 0px" but got "rgb(0, 0, 0) 0px 0px 0px 0px"
1313FAIL iteration composition of filter blur animation assert_equals: Animated filter blur style at 0s of the third iteration expected "blur(20px)" but got "blur(0px)"
1414FAIL iteration composition of filter brightness for different unit animation assert_equals: Animated filter brightness style at 0s of the third iteration expected "brightness(2.6)" but got "brightness(1)"

LayoutTests/media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-volume-styles-expected.txt

@@PASS volumeSliderContainerStyle.left is "566px"
99PASS volumeSliderContainerStyle.top is "226px"
1010PASS volumeSliderContainerStyle.width is "94px"
1111PASS volumeSliderContainerStyle.height is "31px"
12 PASS volumeSliderContainerStyle.transform is "matrix(6.123233995736766e-17, -1, 1, 6.123233995736766e-17, -30, -26.000000000000004)"
 12PASS volumeSliderContainerStyle.transform is "matrix(0, -1, 1, 0, -30, -26)"
1313PASS volumeSliderStyle.marginLeft is "6px"
1414PASS volumeSliderStyle.width is "60px"
1515PASS volumeSliderStyle.height is "16px"

LayoutTests/media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-volume-styles.html

@@shouldBecomeEqual("mediaControls.volumeSlider.parent.element.parentNode", "media
2020 shouldBeEqualToString("volumeSliderContainerStyle.top", "226px");
2121 shouldBeEqualToString("volumeSliderContainerStyle.width", "94px");
2222 shouldBeEqualToString("volumeSliderContainerStyle.height", "31px");
23  shouldBeEqualToString("volumeSliderContainerStyle.transform", "matrix(6.123233995736766e-17, -1, 1, 6.123233995736766e-17, -30, -26.000000000000004)");
 23 shouldBeEqualToString("volumeSliderContainerStyle.transform", "matrix(0, -1, 1, 0, -30, -26)");
2424
2525 volumeSliderStyle = window.getComputedStyle(mediaControls.volumeSlider.element);
2626 shouldBeEqualToString("volumeSliderStyle.marginLeft", "6px");

LayoutTests/platform/glib/imported/w3c/web-platform-tests/css/css-transforms/animation/transform-interpolation-inline-value-expected.txt

@@FAIL Interpolation between translate(0%, 50%) and translate(50%, 100%) gives the
1212FAIL Interpolation between translate3d(0,0,-50px) and translateZ(50px) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "translate3d(0px, 0px, 0px)" but got "matrix(1, 0, 0, 1, 0, 0)"
1313FAIL Interpolation between translate(50px, 0px) and translate(100px, 0px) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "translate(75px)" but got "matrix(1, 0, 0, 1, 75, 0)"
1414FAIL Interpolation between translate(50px, -50px) and translate(100px, 50px) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "translate(75px)" but got "matrix(1, 0, 0, 1, 75, 0)"
15 FAIL Interpolation between rotate(30deg) and rotate(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotate(60deg)" but got "matrix(0.5000000000000001, 0.8660254037844386, -0.8660254037844386, 0.5000000000000001, 0, 0)"
16 FAIL Interpolation between rotateZ(30deg) and rotateZ(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotateZ(60deg)" but got "matrix(0.5000000000000001, 0.8660254037844386, -0.8660254037844386, 0.5000000000000001, 0, 0)"
17 FAIL Interpolation between rotate(0deg) and rotateZ(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotate3d(0, 0, 1, 45deg)" but got "matrix(0.7071067811865476, 0.7071067811865475, -0.7071067811865475, 0.7071067811865476, 0, 0)"
18 FAIL Interpolation between rotateX(0deg) and rotateX(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotateX(45deg)" but got "matrix3d(1, 0, 0, 0, 0, 0.7071067811865476, 0.7071067811865475, 0, 0, -0.7071067811865475, 0.7071067811865476, 0, 0, 0, 0, 1)"
19 FAIL Interpolation between rotate(0deg) and rotateX(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotate3d(1, 0, 0, 45deg)" but got "matrix3d(1, 0, 0, 0, 0, 0.5000000000000002, 0.4999999999999999, 0, 0, -0.4999999999999999, 0.5000000000000002, 0, 0, 0, 0, 1)"
 15FAIL Interpolation between rotate(30deg) and rotate(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotate(60deg)" but got "matrix(0.5, 0.866025, -0.866025, 0.5, 0, 0)"
 16FAIL Interpolation between rotateZ(30deg) and rotateZ(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotateZ(60deg)" but got "matrix(0.5, 0.866025, -0.866025, 0.5, 0, 0)"
 17FAIL Interpolation between rotate(0deg) and rotateZ(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotate3d(0, 0, 1, 45deg)" but got "matrix(0.707107, 0.707107, -0.707107, 0.707107, 0, 0)"
 18FAIL Interpolation between rotateX(0deg) and rotateX(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotateX(45deg)" but got "matrix3d(1, 0, 0, 0, 0, 0.707107, 0.707107, 0, 0, -0.707107, 0.707107, 0, 0, 0, 0, 1)"
 19FAIL Interpolation between rotate(0deg) and rotateX(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "rotate3d(1, 0, 0, 45deg)" but got "matrix3d(1, 0, 0, 0, 0, 0.5, 0.5, 0, 0, -0.5, 0.5, 0, 0, 0, 0, 1)"
2020FAIL Interpolation between scale(1) and scale(2) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "scale(1.5)" but got "matrix(1.5, 0, 0, 1.5, 0, 0)"
2121FAIL Interpolation between scale(1, 3) and scale(2) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "scale(1.5, 2.5)" but got "matrix(1.5, 0, 0, 2.5, 0, 0)"
2222FAIL Interpolation between scaleX(1) and scaleX(2) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "scaleX(1.5)" but got "matrix(1.5, 0, 0, 1, 0, 0)"

@@FAIL Interpolation between scale(1, 2) and scale(3, 4) gives the correct compute
2929FAIL Interpolation between scale3d(1, 2, 3) and scale3d(4, 5, 6) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "scale3d(2.5, 3.5, 4.5)" but got "matrix3d(2.5, 0, 0, 0, 0, 3.5, 0, 0, 0, 0, 4.5, 0, 0, 0, 0, 1)"
3030FAIL Interpolation between scale3d(1, 2, 3) and scale(4, 5) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "scale3d(2.5, 3.5, 2)" but got "matrix3d(2.5, 0, 0, 0, 0, 3.5, 0, 0, 0, 0, 2, 0, 0, 0, 0, 1)"
3131FAIL Interpolation between scale(1, 2) and scale3d(3, 4, 5) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "scale3d(2, 3, 3)" but got "matrix3d(2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3, 0, 0, 0, 0, 1)"
32 FAIL Interpolation between skewX(0deg) and skewX(60deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skewX(30deg)" but got "matrix(1, 0, 0.5773502691896257, 1, 0, 0)"
33 FAIL Interpolation between skewX(0deg) and skewX(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skewX(45deg)" but got "matrix(1, 0, 0.9999999999999999, 1, 0, 0)"
 32FAIL Interpolation between skewX(0deg) and skewX(60deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skewX(30deg)" but got "matrix(1, 0, 0.57735, 1, 0, 0)"
 33FAIL Interpolation between skewX(0deg) and skewX(90deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skewX(45deg)" but got "matrix(1, 0, 1, 1, 0, 0)"
3434FAIL Interpolation between skewX(0deg) and skewX(180deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skewX(90deg)" but got "matrix(1, 0, 16331239353195370, 1, 0, 0)"
35 FAIL Interpolation between skew(0deg, 0deg) and skew(60deg, 60deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skew(30deg, 30deg)" but got "matrix(1, 0.5773502691896257, 0.5773502691896257, 1, 0, 0)"
36 FAIL Interpolation between skew(45deg, 0deg) and skew(0deg, 45deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skew(22.5deg, 22.5deg)" but got "matrix(1, 0.41421356237309503, 0.41421356237309503, 1, 0, 0)"
 35FAIL Interpolation between skew(0deg, 0deg) and skew(60deg, 60deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skew(30deg, 30deg)" but got "matrix(1, 0.57735, 0.57735, 1, 0, 0)"
 36FAIL Interpolation between skew(45deg, 0deg) and skew(0deg, 45deg) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "skew(22.5deg, 22.5deg)" but got "matrix(1, 0.414214, 0.414214, 1, 0, 0)"
3737FAIL Interpolation between perspective(10px) and perspective(2.5px) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "perspective(4px)" but got "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.25, 0, 0, 0, 1)"
3838FAIL Interpolation between perspective(10px) and perspective(none) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "perspective(20px)" but got "matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, -0.05, 0, 0, 0, 1)"
3939FAIL Interpolation between perspective(none) and perspective(none) gives the correct computed value halfway according to commitStyles. assert_equals: The value at 50% progress is as expected expected "perspective(none)" but got "matrix(1, 0, 0, 1, 0, 0)"

LayoutTests/platform/ios-wk2/imported/w3c/web-platform-tests/html/rendering/pixel-length-attributes-expected.txt

@@PASS <body marginwidth="1007"> mapping to marginLeft
172172PASS <body marginwidth=" 00523 "> mapping to marginLeft
173173PASS <body marginwidth="200."> mapping to marginLeft
174174FAIL <body marginwidth="200.25"> mapping to marginLeft assert_equals: expected "200px" but got "200.25px"
175 FAIL <body marginwidth="200.7"> mapping to marginLeft assert_equals: expected "200px" but got "200.6999969482422px"
 175FAIL <body marginwidth="200.7"> mapping to marginLeft assert_equals: expected "200px" but got "200.699997px"
176176PASS <body marginwidth="0"> mapping to marginLeft
177177FAIL <body marginwidth="-0"> mapping to marginLeft assert_equals: expected "0px" but got "8px"
178178FAIL <body marginwidth="+0"> mapping to marginLeft assert_equals: expected "0px" but got "8px"

@@PASS <body marginwidth="1007"> mapping to marginRight
193193PASS <body marginwidth=" 00523 "> mapping to marginRight
194194PASS <body marginwidth="200."> mapping to marginRight
195195FAIL <body marginwidth="200.25"> mapping to marginRight assert_equals: expected "200px" but got "200.25px"
196 FAIL <body marginwidth="200.7"> mapping to marginRight assert_equals: expected "200px" but got "200.6999969482422px"
 196FAIL <body marginwidth="200.7"> mapping to marginRight assert_equals: expected "200px" but got "200.699997px"
197197PASS <body marginwidth="0"> mapping to marginRight
198198FAIL <body marginwidth="-0"> mapping to marginRight assert_equals: expected "0px" but got "8px"
199199FAIL <body marginwidth="+0"> mapping to marginRight assert_equals: expected "0px" but got "8px"

@@PASS <body leftmargin="1007"> mapping to marginLeft
214214PASS <body leftmargin=" 00523 "> mapping to marginLeft
215215PASS <body leftmargin="200."> mapping to marginLeft
216216FAIL <body leftmargin="200.25"> mapping to marginLeft assert_equals: expected "200px" but got "200.25px"
217 FAIL <body leftmargin="200.7"> mapping to marginLeft assert_equals: expected "200px" but got "200.6999969482422px"
 217FAIL <body leftmargin="200.7"> mapping to marginLeft assert_equals: expected "200px" but got "200.699997px"
218218PASS <body leftmargin="0"> mapping to marginLeft
219219FAIL <body leftmargin="-0"> mapping to marginLeft assert_equals: expected "0px" but got "8px"
220220FAIL <body leftmargin="+0"> mapping to marginLeft assert_equals: expected "0px" but got "8px"

@@PASS <body marginheight="1007"> mapping to marginTop
256256PASS <body marginheight=" 00523 "> mapping to marginTop
257257PASS <body marginheight="200."> mapping to marginTop
258258FAIL <body marginheight="200.25"> mapping to marginTop assert_equals: expected "200px" but got "200.25px"
259 FAIL <body marginheight="200.7"> mapping to marginTop assert_equals: expected "200px" but got "200.6999969482422px"
 259FAIL <body marginheight="200.7"> mapping to marginTop assert_equals: expected "200px" but got "200.699997px"
260260PASS <body marginheight="0"> mapping to marginTop
261261FAIL <body marginheight="-0"> mapping to marginTop assert_equals: expected "0px" but got "8px"
262262FAIL <body marginheight="+0"> mapping to marginTop assert_equals: expected "0px" but got "8px"

@@PASS <body marginheight="1007"> mapping to marginBottom
277277PASS <body marginheight=" 00523 "> mapping to marginBottom
278278PASS <body marginheight="200."> mapping to marginBottom
279279FAIL <body marginheight="200.25"> mapping to marginBottom assert_equals: expected "200px" but got "200.25px"
280 FAIL <body marginheight="200.7"> mapping to marginBottom assert_equals: expected "200px" but got "200.6999969482422px"
 280FAIL <body marginheight="200.7"> mapping to marginBottom assert_equals: expected "200px" but got "200.699997px"
281281PASS <body marginheight="0"> mapping to marginBottom
282282FAIL <body marginheight="-0"> mapping to marginBottom assert_equals: expected "0px" but got "8px"
283283FAIL <body marginheight="+0"> mapping to marginBottom assert_equals: expected "0px" but got "8px"

@@PASS <body topmargin="1007"> mapping to marginTop
298298PASS <body topmargin=" 00523 "> mapping to marginTop
299299PASS <body topmargin="200."> mapping to marginTop
300300FAIL <body topmargin="200.25"> mapping to marginTop assert_equals: expected "200px" but got "200.25px"
301 FAIL <body topmargin="200.7"> mapping to marginTop assert_equals: expected "200px" but got "200.6999969482422px"
 301FAIL <body topmargin="200.7"> mapping to marginTop assert_equals: expected "200px" but got "200.699997px"
302302PASS <body topmargin="0"> mapping to marginTop
303303FAIL <body topmargin="-0"> mapping to marginTop assert_equals: expected "0px" but got "8px"
304304FAIL <body topmargin="+0"> mapping to marginTop assert_equals: expected "0px" but got "8px"

LayoutTests/platform/ios/fast/forms/search/search-zoom-computed-style-height-expected.txt

@@PASS successfullyParsed is true
77
88TEST COMPLETE
99
10 Computed style height: 20.9921875px
 10Computed style height: 20.992188px

LayoutTests/svg/css/parse-height-expected.txt

@@PASS computedStyle("height", " 100") is "100px"
1616PASS computedStyle("height", "100 ") is "100px"
1717PASS computedStyle("height", "100px") is "100px"
1818PASS computedStyle("height", "1em") is "16px"
19 PASS computedStyle("height", "1ex") is "12.800000190734863px"
 19PASS computedStyle("height", "1ex") is "12.8px"
2020PASS computedStyle("height", "20%") is "20%"
2121PASS computedStyle("height", "100 px") is "auto"
2222PASS computedStyle("height", "100px;") is "auto"

LayoutTests/svg/css/parse-height.html

@@testComputed("height", " 100", "100px");
3434testComputed("height", "100 ", "100px");
3535testComputed("height", "100px", "100px");
3636testComputed("height", "1em", "16px");
37 testComputed("height", "1ex", "12.800000190734863px");
 37testComputed("height", "1ex", "12.8px");
3838testComputed("height", "20%", "20%");
3939// FIXME: Vieport units not implemented for SVG at the moment.
4040// testComputed("height", "1vh", "7.869999885559082px");

LayoutTests/svg/css/parse-length-expected.txt

@@PASS computedStyle("cx", " 100") is "100px"
4545PASS computedStyle("cx", "100 ") is "100px"
4646PASS computedStyle("cx", "100px") is "100px"
4747PASS computedStyle("cx", "1em") is "16px"
48 PASS computedStyle("cx", "1ex") is "12.800000190734863px"
 48PASS computedStyle("cx", "1ex") is "12.8px"
4949PASS computedStyle("cx", "20%") is "20%"
5050PASS computedStyle("cx", "-200px") is "-200px"
5151PASS computedStyle("cy", " 100") is "100px"
5252PASS computedStyle("cy", "100 ") is "100px"
5353PASS computedStyle("cy", "100px") is "100px"
5454PASS computedStyle("cy", "1em") is "16px"
55 PASS computedStyle("cy", "1ex") is "12.800000190734863px"
 55PASS computedStyle("cy", "1ex") is "12.8px"
5656PASS computedStyle("cy", "20%") is "20%"
5757PASS computedStyle("cy", "-200px") is "-200px"
5858PASS computedStyle("r", " 100") is "100px"
5959PASS computedStyle("r", "100 ") is "100px"
6060PASS computedStyle("r", "100px") is "100px"
6161PASS computedStyle("r", "1em") is "16px"
62 PASS computedStyle("r", "1ex") is "12.800000190734863px"
 62PASS computedStyle("r", "1ex") is "12.8px"
6363PASS computedStyle("r", "20%") is "20%"
6464PASS computedStyle("r", "-200px") is "0px"
6565PASS computedStyle("rx", " 100") is "100px"
6666PASS computedStyle("rx", "100 ") is "100px"
6767PASS computedStyle("rx", "100px") is "100px"
6868PASS computedStyle("rx", "1em") is "16px"
69 PASS computedStyle("rx", "1ex") is "12.800000190734863px"
 69PASS computedStyle("rx", "1ex") is "12.8px"
7070PASS computedStyle("rx", "20%") is "20%"
7171PASS computedStyle("rx", "-200px") is "auto"
7272PASS computedStyle("ry", " 100") is "100px"
7373PASS computedStyle("ry", "100 ") is "100px"
7474PASS computedStyle("ry", "100px") is "100px"
7575PASS computedStyle("ry", "1em") is "16px"
76 PASS computedStyle("ry", "1ex") is "12.800000190734863px"
 76PASS computedStyle("ry", "1ex") is "12.8px"
7777PASS computedStyle("ry", "20%") is "20%"
7878PASS computedStyle("ry", "-200px") is "auto"
7979PASS computedStyle("width", "auto") is "auto"

@@PASS computedStyle("width", " 100") is "100px"
8181PASS computedStyle("width", "100 ") is "100px"
8282PASS computedStyle("width", "100px") is "100px"
8383PASS computedStyle("width", "1em") is "16px"
84 PASS computedStyle("width", "1ex") is "12.800000190734863px"
 84PASS computedStyle("width", "1ex") is "12.8px"
8585PASS computedStyle("width", "20%") is "20%"
8686PASS computedStyle("x", " 100") is "100px"
8787PASS computedStyle("x", "100 ") is "100px"
8888PASS computedStyle("x", "100px") is "100px"
8989PASS computedStyle("x", "1em") is "16px"
90 PASS computedStyle("x", "1ex") is "12.800000190734863px"
 90PASS computedStyle("x", "1ex") is "12.8px"
9191PASS computedStyle("x", "20%") is "20%"
9292PASS computedStyle("x", "-200px") is "-200px"
9393PASS computedStyle("y", " 100") is "100px"
9494PASS computedStyle("y", "100 ") is "100px"
9595PASS computedStyle("y", "100px") is "100px"
9696PASS computedStyle("y", "1em") is "16px"
97 PASS computedStyle("y", "1ex") is "12.800000190734863px"
 97PASS computedStyle("y", "1ex") is "12.8px"
9898PASS computedStyle("y", "20%") is "20%"
9999PASS computedStyle("y", "-200px") is "-200px"
100100PASS computedStyle("cx", "auto") is "0px"

LayoutTests/svg/css/parse-length.html

@@testComputed("cx", " 100", "100px");
3737testComputed("cx", "100 ", "100px");
3838testComputed("cx", "100px", "100px");
3939testComputed("cx", "1em", "16px");
40 testComputed("cx", "1ex", "12.800000190734863px");
 40testComputed("cx", "1ex", "12.8px");
4141testComputed("cx", "20%", "20%");
4242testComputed("cx", "-200px", "-200px");
4343

@@testComputed("cy", " 100", "100px");
4646testComputed("cy", "100 ", "100px");
4747testComputed("cy", "100px", "100px");
4848testComputed("cy", "1em", "16px");
49 testComputed("cy", "1ex", "12.800000190734863px");
 49testComputed("cy", "1ex", "12.8px");
5050testComputed("cy", "20%", "20%");
5151testComputed("cy", "-200px", "-200px");
5252

@@testComputed("r", " 100", "100px");
5555testComputed("r", "100 ", "100px");
5656testComputed("r", "100px", "100px");
5757testComputed("r", "1em", "16px");
58 testComputed("r", "1ex", "12.800000190734863px");
 58testComputed("r", "1ex", "12.8px");
5959testComputed("r", "20%", "20%");
6060testComputed("r", "-200px", "0px");
6161

@@testComputed("rx", " 100", "100px");
6464testComputed("rx", "100 ", "100px");
6565testComputed("rx", "100px", "100px");
6666testComputed("rx", "1em", "16px");
67 testComputed("rx", "1ex", "12.800000190734863px");
 67testComputed("rx", "1ex", "12.8px");
6868testComputed("rx", "20%", "20%");
6969testComputed("rx", "-200px", "auto");
7070

@@testComputed("ry", " 100", "100px");
7373testComputed("ry", "100 ", "100px");
7474testComputed("ry", "100px", "100px");
7575testComputed("ry", "1em", "16px");
76 testComputed("ry", "1ex", "12.800000190734863px");
 76testComputed("ry", "1ex", "12.8px");
7777testComputed("ry", "20%", "20%");
7878testComputed("ry", "-200px", "auto");
7979

@@testComputed("width", " 100", "100px");
8383testComputed("width", "100 ", "100px");
8484testComputed("width", "100px", "100px");
8585testComputed("width", "1em", "16px");
86 testComputed("width", "1ex", "12.800000190734863px");
 86testComputed("width", "1ex", "12.8px");
8787testComputed("width", "20%", "20%");
8888// FIXME: Vieport units not implemented for SVG at the moment.
8989// testComputed("width", "1vh", "7.869999885559082px");

@@testComputed("x", " 100", "100px");
9494testComputed("x", "100 ", "100px");
9595testComputed("x", "100px", "100px");
9696testComputed("x", "1em", "16px");
97 testComputed("x", "1ex", "12.800000190734863px");
 97testComputed("x", "1ex", "12.8px");
9898testComputed("x", "20%", "20%");
9999testComputed("x", "-200px", "-200px");
100100

@@testComputed("y", " 100", "100px");
103103testComputed("y", "100 ", "100px");
104104testComputed("y", "100px", "100px");
105105testComputed("y", "1em", "16px");
106 testComputed("y", "1ex", "12.800000190734863px");
 106testComputed("y", "1ex", "12.8px");
107107testComputed("y", "20%", "20%");
108108testComputed("y", "-200px", "-200px");
109109

LayoutTests/transitions/frames-timing-function-expected.txt

11The box should move horizontally 200px over 1s, in 4 equal increments.
22
3 FAIL - "-webkit-transform.4" property for "box" element at 0.25s expected: 50 but saw: matrix(1, 0, 0, 1, 81.71330261230469, 0)
4 FAIL - "-webkit-transform.4" property for "box" element at 0.5s expected: 100 but saw: matrix(1, 0, 0, 1, 160.4827880859375, 0)
5 FAIL - "-webkit-transform.4" property for "box" element at 0.75s expected: 150 but saw: matrix(1, 0, 0, 1, 192.13755798339844, 0)
 3FAIL - "-webkit-transform.4" property for "box" element at 0.25s expected: 50 but saw: matrix(1, 0, 0, 1, 81.713303, 0)
 4FAIL - "-webkit-transform.4" property for "box" element at 0.5s expected: 100 but saw: matrix(1, 0, 0, 1, 160.482788, 0)
 5FAIL - "-webkit-transform.4" property for "box" element at 0.75s expected: 150 but saw: matrix(1, 0, 0, 1, 192.137558, 0)
66