flutter_flutter/engine/core/css/parser/BisonCSSParserTest.cpp
Elliott Sprehn f44ab040a3 Remove @media rules.
In sky we only support inline styles and <style media>, not
@media rules. This removes the Bison support for parsing them
which was also removed in Blink in favor of the other media
query parser which was added for use on the pre-scanner thread.

R=eseidel@chromium.org

Review URL: https://codereview.chromium.org/807703003
2014-12-15 18:29:19 -08:00

88 lines
4.3 KiB
C++

// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "sky/engine/config.h"
#include "sky/engine/core/css/parser/BisonCSSParser.h"
#include "sky/engine/core/css/CSSTimingFunctionValue.h"
#include "sky/engine/core/css/MediaList.h"
#include "sky/engine/core/css/StyleRule.h"
#include "sky/engine/platform/animation/TimingFunction.h"
#include "sky/engine/wtf/dtoa/utils.h"
#include <gtest/gtest.h>
namespace blink {
TEST(BisonCSSParserTest, ParseAnimationTimingFunctionValue)
{
RefPtr<CSSValue> timingFunctionValue;
timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("ease");
EXPECT_EQ(CSSValueEase, toCSSPrimitiveValue(timingFunctionValue.get())->getValueID());
timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("linear");
EXPECT_EQ(CSSValueLinear, toCSSPrimitiveValue(timingFunctionValue.get())->getValueID());
timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("ease-in");
EXPECT_EQ(CSSValueEaseIn, toCSSPrimitiveValue(timingFunctionValue.get())->getValueID());
timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("ease-out");
EXPECT_EQ(CSSValueEaseOut, toCSSPrimitiveValue(timingFunctionValue.get())->getValueID());
timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("ease-in-out");
EXPECT_EQ(CSSValueEaseInOut, toCSSPrimitiveValue(timingFunctionValue.get())->getValueID());
timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("step-start");
EXPECT_EQ(CSSValueStepStart, toCSSPrimitiveValue(timingFunctionValue.get())->getValueID());
timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("step-middle");
EXPECT_EQ(CSSValueStepMiddle, toCSSPrimitiveValue(timingFunctionValue.get())->getValueID());
timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("step-end");
EXPECT_EQ(CSSValueStepEnd, toCSSPrimitiveValue(timingFunctionValue.get())->getValueID());
timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("steps(3, start)");
EXPECT_TRUE(CSSStepsTimingFunctionValue::create(3, StepsTimingFunction::StepAtStart)->equals(toCSSStepsTimingFunctionValue(*timingFunctionValue.get())));
timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("steps(3, middle)");
EXPECT_TRUE(CSSStepsTimingFunctionValue::create(3, StepsTimingFunction::StepAtMiddle)->equals(toCSSStepsTimingFunctionValue(*timingFunctionValue.get())));
timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("steps(3, end)");
EXPECT_TRUE(CSSStepsTimingFunctionValue::create(3, StepsTimingFunction::StepAtEnd)->equals(toCSSStepsTimingFunctionValue(*timingFunctionValue.get())));
timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("steps(3, nowhere)");
EXPECT_EQ(0, timingFunctionValue.get());
timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("steps(-3, end)");
EXPECT_EQ(0, timingFunctionValue.get());
timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("steps(3)");
EXPECT_TRUE(CSSStepsTimingFunctionValue::create(3, StepsTimingFunction::StepAtEnd)->equals(toCSSStepsTimingFunctionValue(*timingFunctionValue.get())));
timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("cubic-bezier(0.1, 5, 0.23, 0)");
EXPECT_TRUE(CSSCubicBezierTimingFunctionValue::create(0.1, 5, 0.23, 0)->equals(toCSSCubicBezierTimingFunctionValue(*timingFunctionValue.get())));
timingFunctionValue = BisonCSSParser::parseAnimationTimingFunctionValue("cubic-bezier(0.1, 0, 4, 0.4)");
EXPECT_EQ(0, timingFunctionValue.get());
}
static void testMediaQuery(const char* expected, MediaQuerySet& querySet)
{
const Vector<OwnPtr<MediaQuery> >& queryVector = querySet.queryVector();
size_t queryVectorSize = queryVector.size();
StringBuilder output;
for (size_t i = 0; i < queryVectorSize; ) {
String queryText = queryVector[i]->cssText();
output.append(queryText);
++i;
if (i >= queryVectorSize)
break;
output.appendLiteral(", ");
}
ASSERT_STREQ(expected, output.toString().ascii().data());
}
} // namespace blink