1e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch/*
2e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * Copyright (C) 2013 Google Inc. All rights reserved.
3e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch *
4e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * Redistribution and use in source and binary forms, with or without
5e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * modification, are permitted provided that the following conditions are
6e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * met:
7e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch *
8e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch *     * Redistributions of source code must retain the above copyright
9e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * notice, this list of conditions and the following disclaimer.
10e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch *     * Redistributions in binary form must reproduce the above
11e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * copyright notice, this list of conditions and the following disclaimer
12e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * in the documentation and/or other materials provided with the
13e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * distribution.
14e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch *     * Neither the name of Google Inc. nor the names of its
15e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * contributors may be used to endorse or promote products derived from
16e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * this software without specific prior written permission.
17e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch *
18e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch */
30e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
31e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#include "config.h"
32e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#include "core/html/HTMLDimension.h"
33e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
34e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#include "wtf/text/WTFString.h"
35e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch#include <gtest/gtest.h>
36e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
37c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
38e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
39e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch// This assertion-prettify function needs to be in the WebCore namespace.
407757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdochvoid PrintTo(const HTMLDimension& dimension, ::std::ostream* os)
41e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
427757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    *os << "HTMLDimension => type: " << dimension.type() << ", value=" << dimension.value();
43e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
44e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
45e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
46e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
47c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)using namespace blink;
48e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
49e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdochnamespace {
50e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
51e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsEmptyString)
52e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
537757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String(""));
547757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(Vector<HTMLDimension>(), result);
55e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
56e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
57e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsNoNumberAbsolute)
58e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
597757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String(" \t"));
60e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(1U, result.size());
617757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(0, HTMLDimension::Relative), result[0]);
62e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
63e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
64e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsNoNumberPercent)
65e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
667757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String(" \t%"));
67e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(1U, result.size());
687757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(0, HTMLDimension::Percentage), result[0]);
69e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
70e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
71e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsNoNumberRelative)
72e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
737757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String("\t *"));
74e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(1U, result.size());
757757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(0, HTMLDimension::Relative), result[0]);
76e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
77e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
78e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsSingleAbsolute)
79e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
807757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String("10"));
81e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
82e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(1U, result.size());
837757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(10, HTMLDimension::Absolute), result[0]);
84e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
85e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
86e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsSinglePercentageWithSpaces)
87e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
887757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String("50  %"));
89e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
90e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(1U, result.size());
917757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(50, HTMLDimension::Percentage), result[0]);
92e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
93e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
94e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsSingleRelative)
95e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
967757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String("25*"));
97e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
98e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(1U, result.size());
997757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(25, HTMLDimension::Relative), result[0]);
100e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
101e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
102e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsDoubleAbsolute)
103e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
1047757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String("10.054"));
105e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
106e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(1U, result.size());
1077757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(10.054, HTMLDimension::Absolute), result[0]);
108e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
109e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
110e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsLeadingSpaceAbsolute)
111e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
1127757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String("\t \t 10"));
113e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
114e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(1U, result.size());
1157757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(10, HTMLDimension::Absolute), result[0]);
116e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
117e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
118e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsLeadingSpaceRelative)
119e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
1207757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String(" \r25*"));
121e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
122e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(1U, result.size());
1237757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(25, HTMLDimension::Relative), result[0]);
124e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
125e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
126e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsLeadingSpacePercentage)
127e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
1287757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String("\n 25%"));
129e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
130e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(1U, result.size());
1317757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(25, HTMLDimension::Percentage), result[0]);
132e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
133e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
134e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsDoublePercentage)
135e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
1367757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String("10.054%"));
137e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
138e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(1U, result.size());
1397757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(10.054, HTMLDimension::Percentage), result[0]);
140e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
141e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
142e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsDoubleRelative)
143e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
1447757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String("10.054*"));
145e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
146e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(1U, result.size());
1477757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(10.054, HTMLDimension::Relative), result[0]);
148e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
149e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
150e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsSpacesInIntegerDoubleAbsolute)
151e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
1527757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String("1\n0 .025%"));
153e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
154e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(1U, result.size());
1557757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(1, HTMLDimension::Absolute), result[0]);
156e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
157e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
158e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsSpacesInIntegerDoublePercent)
159e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
1607757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String("1\n0 .025%"));
161e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
162e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(1U, result.size());
1637757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(1, HTMLDimension::Absolute), result[0]);
164e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
165e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
166e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsSpacesInIntegerDoubleRelative)
167e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
1687757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String("1\n0 .025*"));
169e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
170e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(1U, result.size());
1717757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(1, HTMLDimension::Absolute), result[0]);
172e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
173e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
174e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsSpacesInFractionAfterDotDoublePercent)
175e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
1767757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String("10.  0 25%"));
177e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
178e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(1U, result.size());
1797757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(10.025, HTMLDimension::Percentage), result[0]);
180e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
181e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
182e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsSpacesInFractionAfterDigitDoublePercent)
183e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
1847757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String("10.05\r25%"));
185e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
186e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(1U, result.size());
1877757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(10.0525, HTMLDimension::Percentage), result[0]);
188e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
189e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
190e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsTrailingComma)
191e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
1927757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String("10,"));
193e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
194e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(1U, result.size());
1957757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(10, HTMLDimension::Absolute), result[0]);
196e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
197e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
198e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsTwoDimensions)
199e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
2007757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String("10*,25 %"));
201e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
202e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(2U, result.size());
2037757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(10, HTMLDimension::Relative), result[0]);
2047757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(25, HTMLDimension::Percentage), result[1]);
205e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
206e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
207e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsMultipleDimensionsWithSpaces)
208e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
2097757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String("10   *   ,\t25 , 10.05\n5%"));
210e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
211e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(3U, result.size());
2127757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(10, HTMLDimension::Relative), result[0]);
2137757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(25, HTMLDimension::Absolute), result[1]);
2147757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(10.055, HTMLDimension::Percentage), result[2]);
215e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
216e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
217e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben MurdochTEST(WebCoreHTMLDimension, parseListOfDimensionsMultipleDimensionsWithOneEmpty)
218e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch{
2197757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    Vector<HTMLDimension> result = parseListOfDimensions(String("2*,,8.%"));
220e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
221e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch    ASSERT_EQ(3U, result.size());
2227757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(2, HTMLDimension::Relative), result[0]);
2237757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(0, HTMLDimension::Relative), result[1]);
2247757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch    ASSERT_EQ(HTMLDimension(8., HTMLDimension::Percentage), result[2]);
225e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
226e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch
227e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch}
228