// 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 "third_party/blink/public/platform/web_icon_sizes_parser.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/blink/public/platform/web_size.h" #include "third_party/blink/public/platform/web_string.h" #include "third_party/blink/renderer/platform/wtf/text/atomic_string.h" namespace blink { class WebIconSizesParserTest : public testing::Test {}; TEST(WebIconSizesParserTest, parseSizes) { WebString sizes_attribute = "32x33"; WebVector sizes; sizes = WebIconSizesParser::ParseIconSizes(sizes_attribute); ASSERT_EQ(1U, sizes.size()); EXPECT_EQ(32, sizes[0].width); EXPECT_EQ(33, sizes[0].height); sizes_attribute = "0x33"; sizes = WebIconSizesParser::ParseIconSizes(sizes_attribute); ASSERT_EQ(0U, sizes.size()); UChar attribute[] = {'3', '2', 'x', '3', '3', 0}; sizes_attribute = AtomicString(attribute); sizes = WebIconSizesParser::ParseIconSizes(sizes_attribute); ASSERT_EQ(1U, sizes.size()); EXPECT_EQ(32, sizes[0].width); EXPECT_EQ(33, sizes[0].height); sizes_attribute = " 32x33 16X17 128x129 "; sizes = WebIconSizesParser::ParseIconSizes(sizes_attribute); ASSERT_EQ(3U, sizes.size()); EXPECT_EQ(32, sizes[0].width); EXPECT_EQ(33, sizes[0].height); EXPECT_EQ(16, sizes[1].width); EXPECT_EQ(17, sizes[1].height); EXPECT_EQ(128, sizes[2].width); EXPECT_EQ(129, sizes[2].height); sizes_attribute = " \n 32x33 \r 16X17 \t 128x129 \f "; sizes = WebIconSizesParser::ParseIconSizes(sizes_attribute); ASSERT_EQ(3U, sizes.size()); sizes_attribute = "any"; sizes = WebIconSizesParser::ParseIconSizes(sizes_attribute); ASSERT_EQ(1U, sizes.size()); EXPECT_EQ(0, sizes[0].width); EXPECT_EQ(0, sizes[0].height); sizes_attribute = "ANY"; sizes = WebIconSizesParser::ParseIconSizes(sizes_attribute); ASSERT_EQ(1U, sizes.size()); sizes_attribute = "AnY"; sizes = WebIconSizesParser::ParseIconSizes(sizes_attribute); ASSERT_EQ(1U, sizes.size()); sizes_attribute = "an"; sizes = WebIconSizesParser::ParseIconSizes(sizes_attribute); ASSERT_EQ(0U, sizes.size()); sizes_attribute = "32x33 32"; sizes = WebIconSizesParser::ParseIconSizes(sizes_attribute); ASSERT_EQ(1U, sizes.size()); EXPECT_EQ(32, sizes[0].width); EXPECT_EQ(33, sizes[0].height); sizes_attribute = "32x33 32x"; sizes = WebIconSizesParser::ParseIconSizes(sizes_attribute); ASSERT_EQ(1U, sizes.size()); EXPECT_EQ(32, sizes[0].width); EXPECT_EQ(33, sizes[0].height); sizes_attribute = "32x33 x32"; sizes = WebIconSizesParser::ParseIconSizes(sizes_attribute); ASSERT_EQ(1U, sizes.size()); EXPECT_EQ(32, sizes[0].width); EXPECT_EQ(33, sizes[0].height); sizes_attribute = "32x33 any"; sizes = WebIconSizesParser::ParseIconSizes(sizes_attribute); ASSERT_EQ(2U, sizes.size()); EXPECT_EQ(32, sizes[0].width); EXPECT_EQ(33, sizes[0].height); EXPECT_EQ(0, sizes[1].width); EXPECT_EQ(0, sizes[1].height); sizes_attribute = "32x33, 64x64"; sizes = WebIconSizesParser::ParseIconSizes(sizes_attribute); ASSERT_EQ(1U, sizes.size()); EXPECT_EQ(64, sizes[0].width); EXPECT_EQ(64, sizes[0].height); } } // namespace blink