Test to make sure we remove span tags with no attributes if we removed the last attribute.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS select all of "hello <b>world</b>" and createLink (http://webkit.org/) yields "<a href="http://webkit.org/">hello <b>world</b></a>"
PASS select all of "<u>hello world</u>" and createLink (http://webkit.org/) yields "<u><a href="http://webkit.org/">hello world</a></u>"
PASS select all of "hello <a href="http://bugs.webkit.org/">world</a>" and createLink (http://webkit.org/) yields "<a href="http://webkit.org/">hello world</a>"
PASS select all of "hello <a href="http://bugs.webkit.org/" style="font-weight: bold">world</a>" and createLink (http://webkit.org/) yields "<a href="http://webkit.org/">hello <b>world</b></a>"
PASS select first two words of "hello <b>world</b> WebKit" and createLink (http://webkit.org/) yields "<a href="http://webkit.org/">hello <b>world</b> </a>WebKit"
PASS select first two words of "<a href="http://trac.webkit.org/">hello <b>world</b></a> WebKit" and createLink (http://webkit.org/) yields "<a href="http://webkit.org/">hello <b>world</b> </a>WebKit"
PASS select first two words of "<a href="http://trac.webkit.org/" style="font-style: italic;">hello world</a> WebKit" and createLink (http://webkit.org/) yields "<a href="http://webkit.org/"><i>hello world</i> </a>WebKit"
PASS select first two words of "hello <a href="http://trac.webkit.org/"><b>world</b> WebKit</a>" and createLink (http://webkit.org/) yields "<a href="http://webkit.org/">hello <b>world</b> </a><a href="http://trac.webkit.org/">WebKit</a>"
PASS select first two words of "hello <a href="http://trac.webkit.org/" style="font-style: italic;"><b>world</b> WebKit</a>" and createLink (http://webkit.org/) yields "<a href="http://webkit.org/">hello <b style="font-style: italic;">world</b> </a><a href="http://trac.webkit.org/" style="font-style: italic;">WebKit</a>"
PASS select last word of "hello <b>world</b> WebKit" and createLink (http://webkit.org/) yields "hello <b>world</b> <a href="http://webkit.org/">WebKit</a>"
PASS select last word of "<u>hello <b>world</b> WebKit</u>" and createLink (http://webkit.org/) yields "<u>hello <b>world</b> <a href="http://webkit.org/">WebKit</a></u>"
PASS select last word of "<a href="http://trac.webkit.org/"><div>hello</div><div>world</div></a>" and createLink (http://webkit.org/) yields "<a href="http://trac.webkit.org/"><div>hello</div></a><div><a href="http://webkit.org/">world</a></div>"
PASS select last word of "<a href="http://trac.webkit.org/" style="font-weight: bold;"><div>hello</div><div>world</div></a>" and createLink (http://webkit.org/) yields "<a href="http://trac.webkit.org/"><div style="font-weight: bold;">hello</div></a><div style="font-weight: bold;"><a href="http://webkit.org/">world</a></div>"
PASS select last word of "<a href="http://trac.webkit.org/" style="font-weight: bold;"><div style="font-weight: normal;">hello</div><div>world</div></a>" and createLink (http://webkit.org/) yields "<a href="http://trac.webkit.org/"><div style="font-weight: normal;">hello</div></a><div style="font-weight: bold;"><a href="http://webkit.org/">world</a></div>"
PASS successfullyParsed is true

TEST COMPLETE

