15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Copyright (C) 2011 Google Inc. All rights reserved. 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# Redistribution and use in source and binary forms, with or without 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# modification, are permitted provided that the following conditions are 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# met: 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# * Redistributions of source code must retain the above copyright 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# notice, this list of conditions and the following disclaimer. 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# * Redistributions in binary form must reproduce the above 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# copyright notice, this list of conditions and the following disclaimer 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# in the documentation and/or other materials provided with the 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# distribution. 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)import unittest 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)from webkitpy.layout_tests.reftests import extract_reference_link 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class ExtractLinkMatchTest(unittest.TestCase): 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) def test_getExtractMatch(self): 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) html_1 = """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)<html xmlns="http://www.w3.org/1999/xhtml"> 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)<head> 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)<title>CSS Test: DESCRIPTION OF TEST</title> 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)<link rel="author" title="NAME_OF_AUTHOR" 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)href="mailto:EMAIL OR http://CONTACT_PAGE"/> 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)<link rel="help" href="RELEVANT_SPEC_SECTION"/> 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)<link rel="match" href="green-box-ref.xht" /> 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)<link rel="match" href="blue-box-ref.xht" /> 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)<link rel="mismatch" href="red-box-notref.xht" /> 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)<link rel="mismatch" href="red-box-notref.xht" /> 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)<meta name="flags" content="TOKENS" /> 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)<meta name="assert" content="TEST ASSERTION"/> 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)<style type="text/css"><![CDATA[ 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)CSS FOR TEST 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)]]></style> 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)</head> 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)<body> 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)CONTENT OF TEST 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)</body> 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)</html> 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)""" 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) matches, mismatches = extract_reference_link.get_reference_link(html_1) 58926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) self.assertItemsEqual(matches, 59926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) ["green-box-ref.xht", "blue-box-ref.xht"]) 60926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) self.assertItemsEqual(mismatches, 61926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) ["red-box-notref.xht", "red-box-notref.xht"]) 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) html_2 = "" 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) empty_tuple_1 = extract_reference_link.get_reference_link(html_2) 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self.assertEqual(empty_tuple_1, ([], [])) 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # Link does not have a "ref" attribute. 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) html_3 = """<link href="RELEVANT_SPEC_SECTION"/>""" 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) empty_tuple_2 = extract_reference_link.get_reference_link(html_3) 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self.assertEqual(empty_tuple_2, ([], [])) 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # Link does not have a "href" attribute. 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) html_4 = """<link rel="match"/>""" 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) empty_tuple_3 = extract_reference_link.get_reference_link(html_4) 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self.assertEqual(empty_tuple_3, ([], [])) 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) # Link does not have a "/" at the end. 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) html_5 = """<link rel="help" href="RELEVANT_SPEC_SECTION">""" 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) empty_tuple_4 = extract_reference_link.get_reference_link(html_5) 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) self.assertEqual(empty_tuple_4, ([], [])) 81