1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/toolkit/components/microformats/tests/test_Microformats_hCard.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,1176 @@ 1.4 +<html> 1.5 +<head> 1.6 + <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> 1.7 + <title>Testing Microformats.js (hCard)</title> 1.8 + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.9 + <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script> 1.10 + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"></link> 1.11 +</head> 1.12 +<body> 1.13 +<div id="content" style="display: none"> 1.14 + 1.15 + From http://microformats.org/tests/hcard/ 1.16 + 1.17 + <div class="vcard" id="01-tantek-basic"> 1.18 + <a class="url fn" href="http://tantek.com/">Tantek Çelik</a> 1.19 + <div class="org">Technorati</div> 1.20 + </div> 1.21 + 1.22 + <div class="vcard" id="02-multiple-class-names-on-vcard.1"><span class="fn n"><span class="given-name">Ryan</span> <span class="family-name">King</span></span></div> 1.23 + <p><span class="attendee vcard" id="02-multiple-class-names-on-vcard.2"><span class="fn n"><span class="given-name">Ryan</span> <span class="family-name">King</span></span></span></p> 1.24 + <address class="vcard author" id="02-multiple-class-names-on-vcard.3"><span class="fn n"><span class="given-name">Ryan</span> <span class="family-name">King</span></span></address> 1.25 + <ul><li class="reviewer vcard first" id="02-multiple-class-names-on-vcard.4"><span class="fn n"><span class="given-name">Ryan</span> <span class="family-name">King</span></span></li></ul> 1.26 + 1.27 + <p class="vcard" id="03-implied-n.1"> 1.28 + <span class="fn">Ryan King</span> 1.29 + </p> 1.30 + <p class="vcard" id="03-implied-n.2"> 1.31 + <abbr class="fn" title="Ryan King">me</abbr> 1.32 + </p> 1.33 + <p class="vcard" id="03-implied-n.3"> 1.34 + <img src="/me.jpg" title="Brian Suda" alt="Ryan King" class="fn" /> 1.35 + </p> 1.36 + <p class="vcard" id="03-implied-n.4"> 1.37 + <a class="fn" href="http://suda.co.uk/">Brian Suda</a> 1.38 + </p> 1.39 + <p class="vcard" id="03-implied-n.5"> 1.40 + <span class="fn">King, Ryan</span> 1.41 + </p> 1.42 + <p class="vcard" id="03-implied-n.6"> 1.43 + <span class="fn">King, R</span> 1.44 + </p> 1.45 + <p class="vcard" id="03-implied-n.7"> 1.46 + <span class="fn">King R</span> 1.47 + </p> 1.48 + <p class="vcard" id="03-implied-n.8"> 1.49 + <span class="fn">King R.</span> 1.50 + </p> 1.51 + <p class="vcard" id="03-implied-n.9"> 1.52 + <span class="fn">Jesse James Garrett</span> 1.53 + </p> 1.54 + <p class="vcard" id="03-implied-n.10"> 1.55 + <span class="fn">Thomas Vander Wal</span> 1.56 + </p> 1.57 + 1.58 + <p class="vcard" id="04-ignore-unknowns"> 1.59 + <span class="ignore-me">Some text that shouldn't be in the vCard.</span> 1.60 + <span class="fn n"> 1.61 + <span class="given-name">Ryan</span> <span class="family-name">King</span> 1.62 + </span> 1.63 + </p> 1.64 + <p class="ignore-me-too">Some more text that shouldn't be in the vCard.</p> 1.65 + 1.66 + <p class="vcard" id="05-mailto-1"> 1.67 + <!-- fn should be the text node (with implied-n-optimization) and 'email' should be the href, sans scheme --> 1.68 + <a class="fn email" href="mailto:ryan@technorati.com">Ryan King</a> 1.69 + </p> 1.70 + 1.71 + <p class="vcard" id="06-mailto-2"> 1.72 + <!-- ignore the parameters on the addr-spec --> 1.73 + <a class="fn email" href="mailto:brian@example.com?subject=foo">Brian Suda</a> 1.74 + </p> 1.75 + 1.76 + <p class="vcard" id="07-relative-url"> 1.77 + <span class="fn n"><span class="given-name">John</span> <span class="family-name">Doe</span></span> 1.78 + <a class="url" href="/home/blah">my website</a> 1.79 + </p> 1.80 + 1.81 + Tests 8/9/10 involve base tags and must each be self contained 1.82 + 1.83 + <p class="vcard" id="11-multiple-urls"> 1.84 + <span class="fn n"> 1.85 + <span class="given-name">John</span> <span class="family-name">Doe</span></span> 1.86 + <a class="url" href="http://example.com/foo">my website</a> 1.87 + <a class="url" href="http://example.com/bar">my other website</a> 1.88 + </p> 1.89 + 1.90 + <p class="vcard" id="12-img-src-url"> 1.91 + <span class="fn n"><span class="given-name">John</span> <span class="family-name">Doe</span></span> 1.92 + <!-- take the @src, ignore the @type --> 1.93 + <img class="url" src="http://mochi.test:8888/tests/browser/microformats/test/picture.png" type="image/png" /> 1.94 + </p> 1.95 + 1.96 + <p class="vcard" id="13-photo-logo"> 1.97 + <span class="fn n"><span class="given-name">John</span> <span class="family-name">Doe</span></span> 1.98 + <!-- take the @src, ignore the @type --> 1.99 + <img class="photo logo" src="http://mochi.test:8888/tests/browser/microformats/test/picture.png" type="image/png" /> 1.100 + </p> 1.101 + 1.102 + <p class="vcard" id="14-img-src-data-url"> 1.103 + <span class="fn n"><span class="given-name">John</span> <span class="family-name">Doe</span></span> 1.104 + <img class="photo logo" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASUExURf///8zMzJmZmWZmZjMzMwAAAPOPemkAAAM1SURBVHjaYmBgYGBkYQUBFkYWFiCPCchixQAMCCZAACF0MAMVM4K4TFh0IGsBCCAkOxhYmBnAAKaHhZkZmxaAAGJgYIbpYGBihGgBWsTMzMwE4jIhaWGAYoAAYmCECDExYAcwGxkg5oNIgABigDqLARdgZmGB2wICrKwAAcSA3xKgIxlZ0PwCEEAMBCxhgHoWSQtAADFAAxgfYEJ1GEAAQbQw4tUCsocBYQVAADEgu4uRkREeUCwszEwwLhOKLQABhNDCBA4aSDgwwhIAJKqYUPwCEEAMUK/AUwnc9aywJMCI7DAgAAggBohZ8JTBhGIJzCoWZL8ABBCYidAB8RUjWppkYUG2BSCAGMDqEMZiswUtXgACiAHsFYixTMywGGLGpgUWYgABxAA2mQkWCMyMqFoYmdD8ACQAAogBHJHMrCxg1cyIiICmCkYWDFsAAgiihYmZCewFFpR0BfI3LLch+QUggBiQ0iQjEyMDmh54qCBlUIAAYsCRJsElADQvgWKTlRGeKwECiAF3XgGmMEYQYADZzcoA9z5AAMG9RQCAtEC9DxBADFiyFyMjVi0wABBAWLQwQdIiuhYGWJIACCBg+KKUJ9BoBRdS2LQALQMIIGDQIEmwAO1kYcVWHCDZAhBAqFqYmOAxj2YNtAwDAYAAYmDEiBYWzHKKkRERYiwAAYSphZEZwxZGZiZQVEJTJkAAMTCyokc7M5oORlC5wcoEjxeAAAJqQXU0UB6W5WFmABMtEzMi1wEEEFAbE0YyAUuzMMEsYQalMkQSBQggUDmNPU3C9IA4LCxI+QUggEBiKOU8yExgqccCL3chnkPKlQABhGo6ejHBDKmdUHMlQAAhhQvQaGZGkBIkjcAMywLmI+VKgABCSowsTJhZkhlWXiBpAQggYBqBZl9GVOdBcz0LZqEEEEAMqLULMBLg1THWog9IAwQQA0qiZcRW5aPbAhBADCg1El4tMAAQQAxoiZYZXnTh1AIQQAzo2QlYpDDjcBgrxGEAAcSAJTthswmiBUwDBBC2GpkZJTaRvQ+mAQKIAUuuxdZWQvILQABBmSxMjBj5EpcWgACCMoFOYYSpZyHQHgMIMACt2hmoVEikCQAAAABJRU5ErkJggg=="/> 1.105 + </p> 1.106 + 1.107 + <p class="vcard" id="15-honorific-additional-single"> 1.108 + <span class="fn n"> 1.109 + <span class="honorific-prefix">Mr.</span> 1.110 + <span class="given-name">John</span> 1.111 + <span class="additional-name">Maurice</span> 1.112 + <span class="family-name">Doe</span>, 1.113 + <span class="honorific-suffix">Ph.D.</span> 1.114 + </span> 1.115 + </p> 1.116 + 1.117 + <p class="vcard" id="16-honorific-additional-multiple"> 1.118 + <span class="fn n"> 1.119 + <span class="honorific-prefix">Mr.</span> 1.120 + <span class="honorific-prefix">Dr.</span> 1.121 + <span class="given-name">John</span> 1.122 + <span class="additional-name">Maurice</span> 1.123 + <span class="additional-name">Benjamin</span> 1.124 + <span class="family-name">Doe</span> 1.125 + <span class="honorific-suffix">Ph.D.</span>, 1.126 + <span class="honorific-suffix">J.D.</span> 1.127 + </span> 1.128 + </p> 1.129 + 1.130 + <p class="vcard" id="17-email-not-uri"> 1.131 + <span class="fn">John Doe</span> 1.132 + <span class="email">john@example.com</span> 1.133 + </p> 1.134 + 1.135 + <p class="vcard" id="18-object-data-http-uri"> 1.136 + <span class="fn">John Doe</span> 1.137 + <object class="url photo logo" data="http://mochi.test:8888/tests/browser/microformats/test/picture.png" type="image/png"></object> 1.138 + </p> 1.139 + 1.140 + <p class="vcard" id="19-object-data-data-uri"> 1.141 + <span class="fn">John Doe</span> 1.142 + <object class="photo logo" data="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASUExURf///8zMzJmZmWZmZjMzMwAAAPOPemkAAAM1SURBVHjaYmBgYGBkYQUBFkYWFiCPCchixQAMCCZAACF0MAMVM4K4TFh0IGsBCCAkOxhYmBnAAKaHhZkZmxaAAGJgYIbpYGBihGgBWsTMzMwE4jIhaWGAYoAAYmCECDExYAcwGxkg5oNIgABigDqLARdgZmGB2wICrKwAAcSA3xKgIxlZ0PwCEEAMBCxhgHoWSQtAADFAAxgfYEJ1GEAAQbQw4tUCsocBYQVAADEgu4uRkREeUCwszEwwLhOKLQABhNDCBA4aSDgwwhIAJKqYUPwCEEAMUK/AUwnc9aywJMCI7DAgAAggBohZ8JTBhGIJzCoWZL8ABBCYidAB8RUjWppkYUG2BSCAGMDqEMZiswUtXgACiAHsFYixTMywGGLGpgUWYgABxAA2mQkWCMyMqFoYmdD8ACQAAogBHJHMrCxg1cyIiICmCkYWDFsAAgiihYmZCewFFpR0BfI3LLch+QUggBiQ0iQjEyMDmh54qCBlUIAAYsCRJsElADQvgWKTlRGeKwECiAF3XgGmMEYQYADZzcoA9z5AAMG9RQCAtEC9DxBADFiyFyMjVi0wABBAWLQwQdIiuhYGWJIACCBg+KKUJ9BoBRdS2LQALQMIIGDQIEmwAO1kYcVWHCDZAhBAqFqYmOAxj2YNtAwDAYAAYmDEiBYWzHKKkRERYiwAAYSphZEZwxZGZiZQVEJTJkAAMTCyokc7M5oORlC5wcoEjxeAAAJqQXU0UB6W5WFmABMtEzMi1wEEEFAbE0YyAUuzMMEsYQalMkQSBQggUDmNPU3C9IA4LCxI+QUggEBiKOU8yExgqccCL3chnkPKlQABhGo6ejHBDKmdUHMlQAAhhQvQaGZGkBIkjcAMywLmI+VKgABCSowsTJhZkhlWXiBpAQggYBqBZl9GVOdBcz0LZqEEEEAMqLULMBLg1THWog9IAwQQA0qiZcRW5aPbAhBADCg1El4tMAAQQAxoiZYZXnTh1AIQQAzo2QlYpDDjcBgrxGEAAcSAJTthswmiBUwDBBC2GpkZJTaRvQ+mAQKIAUuuxdZWQvILQABBmSxMjBj5EpcWgACCMoFOYYSpZyHQHgMIMACt2hmoVEikCQAAAABJRU5ErkJggg==" /> 1.143 + </p> 1.144 + 1.145 + <p class="vcard" id="20-image-alt"> 1.146 +<!-- only testing 'fn' here, but you should be able to parse any text value out of the img@alt --> 1.147 +<!-- also note, the fn should only be used to infer n, when there's no explicit n in the hcard --> 1.148 + <img class="fn photo logo" src="http://mochi.test:8888/tests/browser/microformats/test/picture.png" alt="John Doe" /> 1.149 + </p> 1.150 + 1.151 + <div class="vcard" id="21-tel"> 1.152 + <p class="fn">John Doe</p>v 1.153 + <p class="tel">+1.415.555.1231</p> 1.154 + <p class="tel"> 1.155 + <span class="type">home</span> 1.156 + <span class="value">+1 415 555 1232</span> 1.157 + </p> 1.158 + <div class="tel"> 1.159 + types: 1.160 + <ul> 1.161 + <li class="type">msg</li> 1.162 + <li class="type">home</li> 1.163 + <li class="type">work</li> 1.164 + <li class="type">pref</li> 1.165 + <li class="type">voice</li> 1.166 + <li class="type">fax</li> 1.167 + <li class="type">cell</li> 1.168 + <li class="type">video</li> 1.169 + <li class="type">pager</li> 1.170 + <li class="type">bbs</li> 1.171 + <li class="type">car</li> 1.172 + <li class="type">isdn</li> 1.173 + <li class="type">pcs</li> 1.174 + <li class="type">invalid</li> 1.175 + </ul> 1.176 + <span class="value">+1</span> 1.177 + <span class="value">415</span> 1.178 + <span class="value">555</span> 1.179 + <span class="value">1233</span> 1.180 + </div> 1.181 + <p class="tel"> 1.182 + <abbr class="type" title="home">H</abbr> 1.183 + <span class="value">+1 415 555 1234</span> 1.184 + </p> 1.185 + <a class="tel" href="tel:+1.415.555.1235">call me</a> 1.186 + <object class="tel" data="tel:+1.415.555.1236">call me</object> 1.187 + <a class="tel" href="fax:+1.415.555.1238">call me</a> 1.188 + <object class="tel" data="fax:+1.415.555.1239">call me</object> 1.189 + <a class="tel" href="modem:+1.415.555.1241">call me</a> 1.190 + <object class="tel" data="modem:+1.415.555.1242">call me</object> 1.191 + </div> 1.192 + 1.193 + <div class="vcard" id="21-tel.2"> 1.194 + <span class="fn">John Doe</span> 1.195 + <span class="tel"><span class="type">Home</span> +1.415.555.1212</span> 1.196 + </div> 1.197 + 1.198 + <div class="vcard" id="21-tel.3"> 1.199 + <span class="fn">John Doe</span> 1.200 + <span class="tel"><span class="type">Home</span><span class="type"> Pref</span> +1.415.555.1212</span> 1.201 + </div> 1.202 + 1.203 + <!-- TODO: add test for 'extended' --> 1.204 + <div class="vcard" id="22-adr"> 1.205 + <p class="fn">John Doe</p> 1.206 + <p class="adr"> 1.207 + <span class="street-address">1231 Main St.</span> 1.208 + <span class="locality">Beverly Hills</span> 1.209 + <span class="region">California</span> 1.210 + <span class="country-name">United States of America</span> 1.211 + <span class="postal-code">90210</span> 1.212 + </p> 1.213 +<!-- multiple street-addresses, should produce a comma-separated list --> 1.214 + <p class="adr"> 1.215 + <span class="post-office-box">PO Box 1234</span> 1.216 + <span class="street-address">1232 Main St.</span> 1.217 + <span class="street-address">Suite 100</span> 1.218 + <span class="locality">Beverly Hills</span> 1.219 + <span class="region">California</span> 1.220 + <span class="country-name">United States of America</span> 1.221 + <span class="postal-code">90210</span> 1.222 + </p> 1.223 +<!-- one type subproperty --> 1.224 + <p class="adr"> 1.225 + <span class="type">home</span> 1.226 + <span class="street-address">1233 Main St.</span> 1.227 + <span class="locality">Beverly Hills</span> 1.228 + <span class="region">California</span> 1.229 + <span class="country-name">United States of America</span> 1.230 + <span class="postal-code">90210</span> 1.231 + </p> 1.232 +<!-- many type subproperties, each with their own class name --> 1.233 + <div class="adr"> 1.234 + <ul> 1.235 + <li class="type">dom</li> 1.236 + <li class="type">intl</li> 1.237 + <li class="type">postal</li> 1.238 + <li class="type">parcel</li> 1.239 + <li class="type">home</li> 1.240 + <li class="type">work</li> 1.241 + <li class="type">pref</li> 1.242 + </ul> 1.243 + <span class="street-address">1234 Main St.</span> 1.244 + <span class="locality">Beverly Hills</span> 1.245 + <span class="region">California</span> 1.246 + <span class="country-name">United States of America</span> 1.247 + <span class="postal-code">90210</span> 1.248 + </div> 1.249 + </div> 1.250 + 1.251 + <p class="vcard" id="23-abbr-title-everything"> 1.252 +<!-- perhaps the most annoying test ever --> 1.253 + <abbr class="fn" title="John Doe">foo</abbr> 1.254 + <span class="n"> 1.255 + <abbr class="honorific-prefix" title="Mister">Mr.</abbr> 1.256 + <abbr class="given-name" title="Jonathan">John</abbr> 1.257 + <abbr class="additional-name" title="John">J</abbr> 1.258 + <abbr class="family-name" title="Doe-Smith">Doe</abbr> 1.259 + <abbr class="honorific-suffix" title="Medical Doctor">M.D</abbr> 1.260 + </span> 1.261 + <abbr class="nickname" title="JJ">jj</abbr> 1.262 + <abbr class="bday" title="2006-04-04">April 4, 2006</abbr> 1.263 + <span class="adr"> 1.264 + <abbr class="post-office-box" title="Box 1234">B. 1234</abbr> 1.265 + <abbr class="extended-address" title="Suite 100">Ste. 100</abbr> 1.266 + <abbr class="street-address" title="123 Fake Street">123 Fake St.</abbr> 1.267 + <abbr class="locality" title="San Francisco">San Fran</abbr> 1.268 + <abbr class="region" title="California">CA</abbr> 1.269 + <abbr class="postal-code" title="12345-6789">12345</abbr> 1.270 + <abbr class="country-name" title="United States of America">USA</abbr> 1.271 + <abbr class="type" title="work">workplace</abbr> 1.272 + </span> 1.273 + <abbr class="tel" title="415.555.1234">1234</abbr> 1.274 + <abbr class="tel-type-value" title="work">workplace</abbr> 1.275 +<!-- mailer --> 1.276 + <abbr class="tz" title="-0700">Pacific Time</abbr> 1.277 + <span class="geo"> 1.278 + <abbr class="latitude" title="37.77">Northern</abbr> 1.279 + <abbr class="longitude" title="-122.41">California</abbr> 1.280 + </span> 1.281 + <abbr class="title" title="President">pres.</abbr> and 1.282 + <abbr class="role" title="Chief">cat wrangler</abbr> 1.283 +<!-- <span class="agent"></span> --> 1.284 + <span class="org"> 1.285 + <abbr class="organization-name" title="Intellicorp">foo</abbr> 1.286 + <abbr class="organization-unit" title="Intelligence">bar</abbr> 1.287 + </span> 1.288 +<!-- <abbr class="category" title=""></abbr> --> 1.289 + <abbr class="note" title="this is a note">this is not a note</abbr> 1.290 +<!-- <abbr class="rev" title=""></abbr> (revision datetime) --> 1.291 +<!-- <abbr class="sort-string" title=""></abbr> --> 1.292 + <abbr class="uid" title="abcdefghijklmnopqrstuvwxyz">alpha</abbr> 1.293 + <abbr class="class" title="public">pub</abbr> 1.294 +<!-- <abbr class="key" title=""></abbr> --> 1.295 + </p> 1.296 + 1.297 + There is no 24 1.298 + 1.299 + <p class="vcard" id="25-geo-abbr"> 1.300 + <abbr class="geo" title="30.267991;-97.739568"><span class="fn org">Paradise</span></abbr> 1.301 + </p> 1.302 + 1.303 +<!-- This test is to make sure that parsers look at ancestors, not just children.--> 1.304 + <div class="vcard" id="26-ancestors"> 1.305 + <!-- perhaps the second most annoying test ever --> 1.306 + <div> 1.307 + <span class="fn"><span>John</span> <span>Doe</span></span> 1.308 + <span class="n"> 1.309 + <span> 1.310 + <span class="honorific-prefix"><strong>Mister</strong></span> 1.311 + <span class="given-name"><i>Jonathan</i></span> 1.312 + <span class="additional-name"><b>John</b></span> 1.313 + <span class="family-name"><em>Doe-Smith</em></span> 1.314 + <span class="honorific-suffix">Medical Doctor</span> 1.315 + </span> 1.316 + </span> 1.317 + <span class="nickname"><span>JJ</span></span> 1.318 + <span class="bday">2006-04-04</span> 1.319 + <span class="adr"> 1.320 + <span> 1.321 + <span class="post-office-box"><samp>Box 1234</samp></span> 1.322 + <span class="extended-address"><dfn>Suite 100</dfn></span> 1.323 + <span class="street-address"><span>123 Fake Street</span></span> 1.324 + <span class="locality"><em>San Francisco</em></span> 1.325 + <span class="region"><strong>California</strong></span> 1.326 + <span class="postal-code"><abbr>12345-6789</abbr></span> 1.327 + <span class="country-name"><acronym>United States of America</acronym></span> 1.328 + <span class="type"><span>work</span></span> 1.329 + </span> 1.330 + </span> 1.331 + <span class="tel"><span>415</span>.<span>555</span>.<span>1234</span></span> 1.332 + <span class="tel-type-value">work</span> 1.333 + <!-- @TODO mailer? --> 1.334 + <span class="tz"><span>-0700</span></span> 1.335 + <span class="geo"> 1.336 + <span> 1.337 + <span class="latitude"><code>37.77</code></span> 1.338 + <span class="longitude"><tt>-122.41</tt></span> 1.339 + </span> 1.340 + </span> 1.341 + <span class="title"><strong>President</strong></span> and 1.342 + <span class="role"><em>Chief</em></span> 1.343 + <span class="agent vcard"> 1.344 + <span class="fn">Bob Smith</span> 1.345 + <span class="title">Executive Assistant</span> 1.346 + </span> 1.347 + <!-- <span class="agent</span> @TODO --> 1.348 + <span class="org"> 1.349 + <span class="organization-name"><strong>Intellicorp</strong></span> 1.350 + <span class="organization-unit"><em>Intelligence</em></span> 1.351 + </span> 1.352 + <!-- @TODO <span class="category"></span> --> 1.353 + <span class="note"><cite>this is a note</cite></span> 1.354 + <!-- @TODO <span class="rev"></span> (revision datetime) --> 1.355 + <!-- @TODO <span class="sort-string"></span> --> 1.356 + <span class="uid"><kbd>abcdefghijklmnopqrstuvwxyz</kbd></span> 1.357 + <span class="class"><samp>public</samp></span> 1.358 + <!-- @TODO <span class="key"></span> --> 1.359 + </div> 1.360 + </div> 1.361 + 1.362 + <p class="vcard" id="27-bday-date"> 1.363 + <span class="fn">john doe</span>, 1.364 + <abbr class="bday" title="2000-01-01">January 1st, 2000</abbr> 1.365 + </p> 1.366 + 1.367 + <p class="vcard" id="28-bday-datetime"> 1.368 + <span class="fn">john doe</span>, 1.369 + <abbr class="bday" title="2000-01-01T00:00:00">January 1st, 2000 at midnight</abbr> 1.370 + </p> 1.371 + 1.372 + <p class="vcard" id="29-bday-datetime-timezone"> 1.373 + <span class="fn">john doe</span>, 1.374 + <abbr class="bday" title="2000-01-01T00:00:00-0800">January 1st, 2000 at midnight on the north american west coast</abbr> 1.375 + </p> 1.376 + 1.377 + <div class="vcard" id="30-fn-org.1"> 1.378 + <div class="fn org">W3C</div> 1.379 + </div> 1.380 + <div class="vcard" id="30-fn-org.2"> 1.381 + <div class="fn">Dan Connolly</div> 1.382 + <div class="org">W3C</div> 1.383 + </div> 1.384 + <div class="vcard" id="30-fn-org.3"> 1.385 + <img class="fn" src="http://mochi.test:8888/tests/browser/microformats/test/picture.png" alt="W3C" /> 1.386 + <div class="org">W3C</div> 1.387 + </div> 1.388 + <div class="vcard" id="30-fn-org.4"> 1.389 + <img class="fn org" src="http://mochi.test:8888/tests/browser/microformats/test/picture.png" 1.390 + alt="World Wide Web Consortium" /> 1.391 + </div> 1.392 + <div class="vcard" id="30-fn-org.5"> 1.393 + <object data="http://mochi.test:8888/tests/browser/microformats/test/w3c_home"> 1.394 + <abbr class="fn org" title="World Wide Web Consortium">W3C</abbr> 1.395 + </object> 1.396 + </div> 1.397 + 1.398 + <p id="email1"><a href="mailto:correct@example.com" class="email">my email</a></p> 1.399 + <p id="email2"><a href="mailto:incorrect@example.com" class="email">my email</a></p> 1.400 + <div class="vcard" id="31-include.1"> 1.401 + <a class="url fn" href="http://suda.co.uk/">Brian Suda</a> 1.402 + <object data="#email1" class="include" type="text/html"/> 1.403 + <object data="#email2" type="text/html"/> 1.404 + </div> 1.405 + <div class="vcard" id="31-include.2"> 1.406 + <a class="url fn" href="http://suda.co.uk/">Brian Suda</a> 1.407 + <a href="#email1" class="include"></a> 1.408 + <a href="#email2"/> 1.409 + </div> 1.410 + <div class="vcard" id="31-include.3"> 1.411 + <a class="url fn" href="http://suda.co.uk/">Brian Suda</a> 1.412 + <a href="#email1" class="include"/> 1.413 + <a href="#email2"/> 1.414 + </div> 1.415 + <div class="vcard" id="31-include.4"> 1.416 + <a class="url fn" href="http://suda.co.uk/">Brian Suda</a> 1.417 + <a href="#email" class="include"/> 1.418 + </div> 1.419 + 1.420 + <table> 1.421 + <tr> 1.422 + <th id="org" ><a class="url org" href="http://example.org/">example.org</a></th> 1.423 + </tr> 1.424 + <tr> 1.425 + <td class="vcard" id="32-header.1" headers="org"><span class="fn">Brian Suda</span></td> 1.426 + </tr> 1.427 + <tr> 1.428 + <td class="vcard" id="32-header.2" headers="org"><span class="fn">John Doe</span></td> 1.429 + </tr> 1.430 + </table> 1.431 + 1.432 + <div class="vcard" id="33-area.1"> 1.433 + <map id="mailto-test-1"> 1.434 + <area class="fn email" href="mailto:joe@example.com" alt="Joe Public"/> 1.435 + <area class="url" href="http://example.com/" alt="my website!" /> 1.436 + </map> 1.437 + </div> 1.438 + <div class="vcard" id="33-area.2"> 1.439 + <map id="mailto-test-2"> 1.440 + <area class="fn email" href="mailto:joe@example.com" alt="Joe Public"/> 1.441 + <area class="url" href="http://example.com/" alt="my website!" /> 1.442 + <area class="org" href="http://example.com/" alt="Joe Public" /> 1.443 + </map> 1.444 + </div> 1.445 + <div class="vcard" id="33-area.3"> 1.446 + <map id="mailto-test-3"> 1.447 + <area class="fn email" href="mailto:joe@example.com" alt="Joe Public"/> 1.448 + <area class="url" href="http://example.com/" alt="my website!" /> 1.449 + </map> 1.450 + <img class="org" src="http://mochi.test:8888/tests/browser/microformats/test/picture.png" alt="Joe Public" /> 1.451 + </div> 1.452 + <div class="vcard" id="33-area.4"> 1.453 + <map id="mailto-test-4"> 1.454 + <area class="fn email" href="mailto:joe@example.com" alt="Joe Public"/> 1.455 + <area class="url" href="http://example.com/" alt="my website!" /> 1.456 + </map> 1.457 + <div class="org">Joe Public</div> 1.458 + </div> 1.459 + <div class="vcard" id="33-area.5"> 1.460 + <map id="mailto-test-5"> 1.461 + <area class="fn email" href="mailto:joe@example.com" alt="Joe Public"/> 1.462 + <area class="url" href="http://example.com/" alt="my website!" /> 1.463 + </map> 1.464 + <abbr class="org" title="Joe Public">Joe</abbr> 1.465 + </div> 1.466 + 1.467 + <div class="vcard" id="34-notes"> 1.468 + <a class="fn email" href="mailto:joe@example.com">Joe Public</a> 1.469 + <span class="note">Note 1</span> 1.470 + <span class="foorbar">Note 2</span> 1.471 + <span class="note foorbar">Note 3</span> 1.472 + <span class="note foorbar">Note 4 with a ; and a , to be escaped<!-- this <strong>should</strong> be ignored--></span> 1.473 + </div> 1.474 + 1.475 + <div class="vcard" id="35-include-pattern.1"> 1.476 + <span class="fn n" id="j"> 1.477 + <span class="given-name">James</span> <span class="family-name">Levine</span> 1.478 + </span> 1.479 + </div> 1.480 + <div class="vcard" id="35-include-pattern.2"> 1.481 + <object data="#j" class="include" type="text/html"></object> 1.482 + <span class="org">SimplyHired</span> 1.483 + <span class="title">Microformat Brainstormer</span> 1.484 + </div> 1.485 + <div class="vcard" id="35-include-pattern.3"> 1.486 + <span class="fn n" id="j2"> 1.487 + <span class="given-name">James</span> <span class="family-name">Levine</span> 1.488 + </span> 1.489 + <span class="org">SimplyHired</span> 1.490 + <span class="title">Microformat Brainstormer</span> 1.491 + </div> 1.492 + 1.493 + <p class="vcard" id="36-categories.1"> 1.494 + <span class="fn">john doe</span>, 1.495 + <abbr class="category" title="C1">C1a</abbr> 1.496 + <a class="category" href="http://example.com" title="C2">C2a</a> 1.497 + <a class="category" href="http://example.com/C3" rel="tag" title="C3a">C3b</a> 1.498 + <img class="category" src="http://mochi.test:8888/tests/browser/microformats/test/picture.png" alt="C4"/> 1.499 + <a class="category" href="http://example.com/C5/" rel="tag" title="C5a">C5b</a> 1.500 + <a class="category" href="http://example.com/C6?tag=false" rel="tag" title="C6a">C6b</a> 1.501 + <a class="category" href="http://example.com/C7#anchor" rel="tag" title="C7a">C7b</a> 1.502 + <a class="category" href="http://example.com/C8?tag=trailing-slash/" rel="tag" title="C8a">C8b</a> 1.503 + <a class="category" href="http://example.com/C9/?tag=trailing-slash/" rel="tag" title="C9a">C9b</a> 1.504 + </p> 1.505 + <div class="vcard" id="36-categories.2"> 1.506 + <span class="fn n"> 1.507 + <span class="given-name">Joe</span> <span class="family-name">User</span> 1.508 + </span> 1.509 + <span class="category">User</span> 1.510 + <a class="category" rel="tag" href="http://example.com/luser">a big luser!</a> 1.511 + </div> 1.512 + 1.513 + <p class="vcard" id="37-singleton"> 1.514 + <span class="fn n"><span class="given-name">john</span> <span class="family-name"><span class="sort-string">d</span>oe</span> 1</span> 1.515 + <span class="fn n"><span class="given-name"><span class="sort-string">j</span>ohn</span> <span class="family-name">doe</span> 2</span> 1.516 + <abbr class="bday" title="20060707">today</abbr> 1.517 + <abbr class="bday" title="20060708">tomorrow</abbr> 1.518 + <abbr class="geo" title="123.45;67.89">Here</abbr> 1.519 + <abbr class="geo" title="98.765;43.21">There</abbr> 1.520 + <abbr class="rev" title="20060707">today</abbr> 1.521 + <abbr class="rev" title="20060708">tomorrow</abbr> 1.522 + <abbr class="uid" title="unique-id-1">id-1</abbr> 1.523 + <abbr class="uid" title="unique-id-2">id-2</abbr> 1.524 + <span class="tz">+0600</span> 1.525 + <span class="tz">+0800</span> 1.526 + <span class="class">public</span> 1.527 + <span class="class">private</span> 1.528 + </p> 1.529 + 1.530 + <div class="vcard" id="38-uid.1"> 1.531 + <span class="fn">Ryan King</span> 1.532 + <a class="url uid" href="http://theryanking.com/contact/">My other hCard</a> 1.533 + </div> 1.534 + <div class="vcard" id="38-uid.2"> 1.535 + <span class="fn">Ryan King</span> 1.536 + <object class="url uid" data="http://mochi.test:8888/tests/browser/microformats/test/contact/">My other hCard</object> 1.537 + </div> 1.538 + <div class="vcard" id="38-uid.3"> 1.539 + <span class="fn">Ryan King</span> 1.540 + <img class="url uid" src="http://mochi.test:8888/tests/browser/microformats/test/contact/" alt="my other hcard" /> 1.541 + </div> 1.542 + <div class="vcard" id="38-uid.4"> 1.543 + <span class="fn">Ryan King</span> 1.544 + <map id="foo"><area class="url uid" href="http://theryanking.com/contact/" alt="my other hcard" /></map> 1.545 + </div> 1.546 + 1.547 + <div class="vcard" id="39-noteHTML"> 1.548 + <a class="fn">Joe Public</a> 1.549 + <span class="note"><b>Note</b></span> 1.550 + </div> 1.551 + 1.552 + <div class="vcard" id="email-type"> 1.553 + <span class="fn">John Doe</span> 1.554 + <span class="email"> 1.555 + <span class="type">internet</span> 1.556 + <a href="mailto:notthis@example.com">john@example.com</a> 1.557 + </span> 1.558 + </div> 1.559 + 1.560 + 1.561 +</div> 1.562 +<pre id="test"> 1.563 +<script class="testbody" type="text/javascript"> 1.564 + 1.565 +test_Microformats(); 1.566 +test_hCard(); 1.567 + 1.568 +function test_Microformats() { 1.569 + var Microformats = SpecialPowers.Cu.import("resource://gre/modules/Microformats.js").Microformats; 1.570 + 1.571 + ok(Microformats, "Check global access to Microformats"); 1.572 +}; 1.573 + 1.574 +function test_hCard() { 1.575 + var hCard = SpecialPowers.Cu.import("resource://gre/modules/Microformats.js").hCard; 1.576 + 1.577 + var hcard; 1.578 + 1.579 + hcard = new hCard(document.getElementById("01-tantek-basic")); 1.580 + 1.581 + is(hcard.fn, "Tantek Çelik", "01-tantek-basic - fn"); 1.582 + is(hcard.url, "http://tantek.com/", "01-tantek-basic - url"); 1.583 + is(hcard.n["given-name"][0], "Tantek", "01-tantek-basic - given-name"); 1.584 + is(hcard.n["family-name"][0], "Çelik", "01-tantek-basic - family-name"); 1.585 + is(hcard.org[0]["organization-name"], "Technorati", "01-tantek-basic - organization-name"); 1.586 + 1.587 + hcard = new hCard(document.getElementById("02-multiple-class-names-on-vcard.1")); 1.588 + 1.589 + is(hcard.fn, "Ryan King", "02-multiple-class-names-on-vcard.1 - fn"); 1.590 + is(hcard.n["given-name"][0], "Ryan", "02-multiple-class-names-on-vcard.1 - given-name"); 1.591 + is(hcard.n["family-name"][0], "King", "02-multiple-class-names-on-vcard.1 - family-name"); 1.592 + 1.593 + hcard = new hCard(document.getElementById("02-multiple-class-names-on-vcard.2")); 1.594 + 1.595 + is(hcard.fn, "Ryan King", "02-multiple-class-names-on-vcard.2 - fn"); 1.596 + is(hcard.n["given-name"][0], "Ryan", "02-multiple-class-names-on-vcard.2 - given-name"); 1.597 + is(hcard.n["family-name"][0], "King", "02-multiple-class-names-on-vcard.2 - family-name"); 1.598 + 1.599 + hcard = new hCard(document.getElementById("02-multiple-class-names-on-vcard.3")); 1.600 + 1.601 + is(hcard.fn, "Ryan King", "02-multiple-class-names-on-vcard.3 - fn"); 1.602 + is(hcard.n["given-name"][0], "Ryan", "02-multiple-class-names-on-vcard.3 - given-name"); 1.603 + is(hcard.n["family-name"][0], "King", "02-multiple-class-names-on-vcard.3 - family-name"); 1.604 + 1.605 + hcard = new hCard(document.getElementById("03-implied-n.1")); 1.606 + 1.607 + is(hcard.fn, "Ryan King", "03-implied-n.1 - fn"); 1.608 + is(hcard.n["given-name"][0], "Ryan", "03-implied-n.1 - given-name"); 1.609 + is(hcard.n["family-name"][0], "King", "03-implied-n.1 - family-name"); 1.610 + 1.611 + hcard = new hCard(document.getElementById("03-implied-n.2")); 1.612 + 1.613 + is(hcard.fn, "Ryan King", "03-implied-n.2 - fn"); 1.614 + is(hcard.n["given-name"][0], "Ryan", "03-implied-n.2 - given-name"); 1.615 + is(hcard.n["family-name"][0], "King", "03-implied-n.2 - family-name"); 1.616 + 1.617 + hcard = new hCard(document.getElementById("03-implied-n.3")); 1.618 + 1.619 + is(hcard.fn, "Ryan King", "03-implied-n.3 - fn"); 1.620 + is(hcard.n["given-name"][0], "Ryan", "03-implied-n.3 - given-name"); 1.621 + is(hcard.n["family-name"][0], "King", "03-implied-n.3 - family-name"); 1.622 + 1.623 + hcard = new hCard(document.getElementById("03-implied-n.4")); 1.624 + 1.625 + is(hcard.fn, "Brian Suda", "03-implied-n.4 - fn"); 1.626 + is(hcard.n["given-name"][0], "Brian", "03-implied-n.4 - given-name"); 1.627 + is(hcard.n["family-name"][0], "Suda", "03-implied-n.4 - family-name"); 1.628 + 1.629 + hcard = new hCard(document.getElementById("03-implied-n.5")); 1.630 + 1.631 + is(hcard.fn, "King, Ryan", "03-implied-n.5 - fn"); 1.632 + is(hcard.n["given-name"][0], "Ryan", "03-implied-n.5 - given-name"); 1.633 + is(hcard.n["family-name"][0], "King", "03-implied-n.5 - family-name"); 1.634 + 1.635 + hcard = new hCard(document.getElementById("03-implied-n.6")); 1.636 + 1.637 + is(hcard.fn, "King, R", "03-implied-n.6 - fn"); 1.638 + is(hcard.n["given-name"][0], "R", "03-implied-n.6 - given-name"); 1.639 + is(hcard.n["family-name"][0], "King", "03-implied-n.6 - family-name"); 1.640 + 1.641 + hcard = new hCard(document.getElementById("03-implied-n.7")); 1.642 + 1.643 + is(hcard.fn, "King R", "03-implied-n.7 - fn"); 1.644 + is(hcard.n["given-name"][0], "R", "03-implied-n.7 - given-name"); 1.645 + is(hcard.n["family-name"][0], "King", "03-implied-n.7 - family-name"); 1.646 + 1.647 + hcard = new hCard(document.getElementById("03-implied-n.8")); 1.648 + 1.649 + is(hcard.fn, "King R.", "03-implied-n.8 - fn"); 1.650 + is(hcard.n["given-name"][0], "R.", "03-implied-n.8 - given-name"); 1.651 + is(hcard.n["family-name"][0], "King", "03-implied-n.8 - family-name"); 1.652 + 1.653 + hcard = new hCard(document.getElementById("03-implied-n.9")); 1.654 + 1.655 + is(hcard.fn, "Jesse James Garrett", "03-implied-n.9 - fn"); 1.656 + ok(hcard.n === undefined, "03-implied-n.9 -n"); 1.657 + 1.658 + hcard = new hCard(document.getElementById("03-implied-n.10")); 1.659 + 1.660 + is(hcard.fn, "Thomas Vander Wal", "03-implied-n.10 - fn"); 1.661 + ok(hcard.n === undefined, "03-implied-n.10 -n"); 1.662 + 1.663 + hcard = new hCard(document.getElementById("04-ignore-unknowns")); 1.664 + 1.665 + is(hcard.fn, "Ryan King", "04-ignore-unknowns - fn"); 1.666 + is(hcard.n["given-name"][0], "Ryan", "04-ignore-unknowns - given-name"); 1.667 + is(hcard.n["family-name"][0], "King", "04-ignore-unknowns - family-name"); 1.668 + 1.669 + hcard = new hCard(document.getElementById("05-mailto-1")); 1.670 + 1.671 + is(hcard.fn, "Ryan King", "05-mailto-1 - fn"); 1.672 + is(hcard.n["given-name"][0], "Ryan", "05-mailto-1 - given-name"); 1.673 + is(hcard.n["family-name"][0], "King", "05-mailto-1 - family-name"); 1.674 + is(hcard.email[0].value, "ryan@technorati.com", "05-mailto-1 - email"); 1.675 + 1.676 + hcard = new hCard(document.getElementById("06-mailto-2")); 1.677 + 1.678 + is(hcard.fn, "Brian Suda", "06-mailto-2 - fn"); 1.679 + is(hcard.n["given-name"][0], "Brian", "06-mailto-2 - given-name"); 1.680 + is(hcard.n["family-name"][0], "Suda", "06-mailto-2 - family-name"); 1.681 + is(hcard.email[0].value, "brian@example.com", "06-mailto-2 - email"); 1.682 + 1.683 + hcard = new hCard(document.getElementById("07-relative-url")); 1.684 + 1.685 + is(hcard.fn, "John Doe", "07-relative-url - fn"); 1.686 + is(hcard.n["given-name"][0], "John", "07-relative-url - given-name"); 1.687 + is(hcard.n["family-name"][0], "Doe", "07-relative-url - family-name"); 1.688 +// is(hcard.url[0], "http://microformats.org/home/blah", "07-relative-url - url"); 1.689 + is(hcard.url, "http://mochi.test:8888/home/blah", "07-relative-url - url"); 1.690 + 1.691 + hcard = new hCard(document.getElementById("11-multiple-urls")); 1.692 + 1.693 + is(hcard.fn, "John Doe", "11-multiple-urls - fn"); 1.694 + is(hcard.n["given-name"][0], "John", "11-multiple-urls - given-name"); 1.695 + is(hcard.n["family-name"][0], "Doe", "11-multiple-urls - family-name"); 1.696 + is(hcard.url[0], "http://example.com/foo", "11-multiple-urls - url"); 1.697 + is(hcard.url[1], "http://example.com/bar", "11-multiple-urls - url"); 1.698 + 1.699 + hcard = new hCard(document.getElementById("12-img-src-url")); 1.700 + 1.701 + is(hcard.fn, "John Doe", "12-img-src-url - fn"); 1.702 + is(hcard.n["given-name"][0], "John", "12-img-src-url - given-name"); 1.703 + is(hcard.n["family-name"][0], "Doe", "12-img-src-url - family-name"); 1.704 + is(hcard.url[0], "http://mochi.test:8888/tests/browser/microformats/test/picture.png", "12-img-src-url - url"); 1.705 + 1.706 + hcard = new hCard(document.getElementById("13-photo-logo")); 1.707 + 1.708 + is(hcard.fn, "John Doe", "13-photo-logo - fn"); 1.709 + is(hcard.n["given-name"][0], "John", "13-photo-logo - given-name"); 1.710 + is(hcard.n["family-name"][0], "Doe", "13-photo-logo - family-name"); 1.711 + is(hcard.logo, "http://mochi.test:8888/tests/browser/microformats/test/picture.png", "13-photo-logo - logo"); 1.712 + is(hcard.photo, "http://mochi.test:8888/tests/browser/microformats/test/picture.png", "13-photo-logo - photo"); 1.713 + 1.714 + hcard = new hCard(document.getElementById("14-img-src-data-url")); 1.715 + 1.716 + is(hcard.fn, "John Doe", "14-img-src-data-url - fn"); 1.717 + is(hcard.n["given-name"][0], "John", "14-img-src-data-url - given-name"); 1.718 + is(hcard.n["family-name"][0], "Doe", "14-img-src-data-url - family-name"); 1.719 + is(hcard.logo, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASUExURf///8zMzJmZmWZmZjMzMwAAAPOPemkAAAM1SURBVHjaYmBgYGBkYQUBFkYWFiCPCchixQAMCCZAACF0MAMVM4K4TFh0IGsBCCAkOxhYmBnAAKaHhZkZmxaAAGJgYIbpYGBihGgBWsTMzMwE4jIhaWGAYoAAYmCECDExYAcwGxkg5oNIgABigDqLARdgZmGB2wICrKwAAcSA3xKgIxlZ0PwCEEAMBCxhgHoWSQtAADFAAxgfYEJ1GEAAQbQw4tUCsocBYQVAADEgu4uRkREeUCwszEwwLhOKLQABhNDCBA4aSDgwwhIAJKqYUPwCEEAMUK/AUwnc9aywJMCI7DAgAAggBohZ8JTBhGIJzCoWZL8ABBCYidAB8RUjWppkYUG2BSCAGMDqEMZiswUtXgACiAHsFYixTMywGGLGpgUWYgABxAA2mQkWCMyMqFoYmdD8ACQAAogBHJHMrCxg1cyIiICmCkYWDFsAAgiihYmZCewFFpR0BfI3LLch+QUggBiQ0iQjEyMDmh54qCBlUIAAYsCRJsElADQvgWKTlRGeKwECiAF3XgGmMEYQYADZzcoA9z5AAMG9RQCAtEC9DxBADFiyFyMjVi0wABBAWLQwQdIiuhYGWJIACCBg+KKUJ9BoBRdS2LQALQMIIGDQIEmwAO1kYcVWHCDZAhBAqFqYmOAxj2YNtAwDAYAAYmDEiBYWzHKKkRERYiwAAYSphZEZwxZGZiZQVEJTJkAAMTCyokc7M5oORlC5wcoEjxeAAAJqQXU0UB6W5WFmABMtEzMi1wEEEFAbE0YyAUuzMMEsYQalMkQSBQggUDmNPU3C9IA4LCxI+QUggEBiKOU8yExgqccCL3chnkPKlQABhGo6ejHBDKmdUHMlQAAhhQvQaGZGkBIkjcAMywLmI+VKgABCSowsTJhZkhlWXiBpAQggYBqBZl9GVOdBcz0LZqEEEEAMqLULMBLg1THWog9IAwQQA0qiZcRW5aPbAhBADCg1El4tMAAQQAxoiZYZXnTh1AIQQAzo2QlYpDDjcBgrxGEAAcSAJTthswmiBUwDBBC2GpkZJTaRvQ+mAQKIAUuuxdZWQvILQABBmSxMjBj5EpcWgACCMoFOYYSpZyHQHgMIMACt2hmoVEikCQAAAABJRU5ErkJggg==", "14-img-src-data-url - logo"); 1.720 + is(hcard.photo, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASUExURf///8zMzJmZmWZmZjMzMwAAAPOPemkAAAM1SURBVHjaYmBgYGBkYQUBFkYWFiCPCchixQAMCCZAACF0MAMVM4K4TFh0IGsBCCAkOxhYmBnAAKaHhZkZmxaAAGJgYIbpYGBihGgBWsTMzMwE4jIhaWGAYoAAYmCECDExYAcwGxkg5oNIgABigDqLARdgZmGB2wICrKwAAcSA3xKgIxlZ0PwCEEAMBCxhgHoWSQtAADFAAxgfYEJ1GEAAQbQw4tUCsocBYQVAADEgu4uRkREeUCwszEwwLhOKLQABhNDCBA4aSDgwwhIAJKqYUPwCEEAMUK/AUwnc9aywJMCI7DAgAAggBohZ8JTBhGIJzCoWZL8ABBCYidAB8RUjWppkYUG2BSCAGMDqEMZiswUtXgACiAHsFYixTMywGGLGpgUWYgABxAA2mQkWCMyMqFoYmdD8ACQAAogBHJHMrCxg1cyIiICmCkYWDFsAAgiihYmZCewFFpR0BfI3LLch+QUggBiQ0iQjEyMDmh54qCBlUIAAYsCRJsElADQvgWKTlRGeKwECiAF3XgGmMEYQYADZzcoA9z5AAMG9RQCAtEC9DxBADFiyFyMjVi0wABBAWLQwQdIiuhYGWJIACCBg+KKUJ9BoBRdS2LQALQMIIGDQIEmwAO1kYcVWHCDZAhBAqFqYmOAxj2YNtAwDAYAAYmDEiBYWzHKKkRERYiwAAYSphZEZwxZGZiZQVEJTJkAAMTCyokc7M5oORlC5wcoEjxeAAAJqQXU0UB6W5WFmABMtEzMi1wEEEFAbE0YyAUuzMMEsYQalMkQSBQggUDmNPU3C9IA4LCxI+QUggEBiKOU8yExgqccCL3chnkPKlQABhGo6ejHBDKmdUHMlQAAhhQvQaGZGkBIkjcAMywLmI+VKgABCSowsTJhZkhlWXiBpAQggYBqBZl9GVOdBcz0LZqEEEEAMqLULMBLg1THWog9IAwQQA0qiZcRW5aPbAhBADCg1El4tMAAQQAxoiZYZXnTh1AIQQAzo2QlYpDDjcBgrxGEAAcSAJTthswmiBUwDBBC2GpkZJTaRvQ+mAQKIAUuuxdZWQvILQABBmSxMjBj5EpcWgACCMoFOYYSpZyHQHgMIMACt2hmoVEikCQAAAABJRU5ErkJggg==", "14-img-src-data-url - photo"); 1.721 + 1.722 + hcard = new hCard(document.getElementById("15-honorific-additional-single")); 1.723 + 1.724 + is(hcard.fn, "Mr. John Maurice Doe, Ph.D.", "15-honorific-additional-single - fn"); 1.725 + is(hcard.n["given-name"][0], "John", "15-honorific-additional-single - given-name"); 1.726 + is(hcard.n["family-name"][0], "Doe", "15-honorific-additional-single - family-name"); 1.727 + is(hcard.n["honorific-prefix"], "Mr.", "15-honorific-additional-single - honorific-prefix"); 1.728 + is(hcard.n["additional-name"], "Maurice", "15-honorific-additional-single - additional-name"); 1.729 + is(hcard.n["honorific-suffix"], "Ph.D.", "15-honorific-additional-single - honorific-suffix"); 1.730 + 1.731 + hcard = new hCard(document.getElementById("16-honorific-additional-multiple")); 1.732 + 1.733 + is(hcard.fn, "Mr. Dr. John Maurice Benjamin Doe Ph.D., J.D.", "16-honorific-additional-multiple - fn"); 1.734 + is(hcard.n["given-name"][0], "John", "16-honorific-additional-multiple - given-name"); 1.735 + is(hcard.n["family-name"][0], "Doe", "16-honorific-additional-multiple - family-name"); 1.736 + is(hcard.n["honorific-prefix"][0], "Mr.", "16-honorific-additional-multiple - honorific-prefix"); 1.737 + is(hcard.n["honorific-prefix"][1], "Dr.", "16-honorific-additional-multiple - honorific-prefix"); 1.738 + is(hcard.n["additional-name"][0], "Maurice", "16-honorific-additional-multiple - additional-name"); 1.739 + is(hcard.n["additional-name"][1], "Benjamin", "16-honorific-additional-multiple - additional-name"); 1.740 + is(hcard.n["honorific-suffix"][0], "Ph.D.", "16-honorific-additional-multiple - honorific-suffix"); 1.741 + is(hcard.n["honorific-suffix"][1], "J.D.", "16-honorific-additional-multiple - honorific-suffix"); 1.742 + 1.743 + hcard = new hCard(document.getElementById("17-email-not-uri")); 1.744 + 1.745 + is(hcard.fn, "John Doe", "17-email-not-uri - fn"); 1.746 + is(hcard.n["given-name"][0], "John", "17-email-not-uri - given-name"); 1.747 + is(hcard.n["family-name"][0], "Doe", "17-email-not-uri - family-name"); 1.748 + is(hcard.email[0].value, "john@example.com", "17-email-not-uri - email"); 1.749 + 1.750 + hcard = new hCard(document.getElementById("18-object-data-http-uri")); 1.751 + 1.752 + is(hcard.fn, "John Doe", "18-object-data-http-uri - fn"); 1.753 + is(hcard.n["given-name"][0], "John", "18-object-data-http-uri - given-name"); 1.754 + is(hcard.n["family-name"][0], "Doe", "18-object-data-http-uri - family-name"); 1.755 + is(hcard.logo, "http://mochi.test:8888/tests/browser/microformats/test/picture.png", "18-object-data-http-uri - logo"); 1.756 + is(hcard.photo, "http://mochi.test:8888/tests/browser/microformats/test/picture.png", "18-object-data-http-uri - photo"); 1.757 + is(hcard.url, "http://mochi.test:8888/tests/browser/microformats/test/picture.png", "18-object-data-http-uri - url"); 1.758 + 1.759 + hcard = new hCard(document.getElementById("19-object-data-data-uri")); 1.760 + 1.761 + is(hcard.fn, "John Doe", "19-object-data-data-uri - fn"); 1.762 + is(hcard.n["given-name"][0], "John", "19-object-data-data-uri - given-name"); 1.763 + is(hcard.n["family-name"][0], "Doe", "19-object-data-data-uri - family-name"); 1.764 + is(hcard.logo, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASUExURf///8zMzJmZmWZmZjMzMwAAAPOPemkAAAM1SURBVHjaYmBgYGBkYQUBFkYWFiCPCchixQAMCCZAACF0MAMVM4K4TFh0IGsBCCAkOxhYmBnAAKaHhZkZmxaAAGJgYIbpYGBihGgBWsTMzMwE4jIhaWGAYoAAYmCECDExYAcwGxkg5oNIgABigDqLARdgZmGB2wICrKwAAcSA3xKgIxlZ0PwCEEAMBCxhgHoWSQtAADFAAxgfYEJ1GEAAQbQw4tUCsocBYQVAADEgu4uRkREeUCwszEwwLhOKLQABhNDCBA4aSDgwwhIAJKqYUPwCEEAMUK/AUwnc9aywJMCI7DAgAAggBohZ8JTBhGIJzCoWZL8ABBCYidAB8RUjWppkYUG2BSCAGMDqEMZiswUtXgACiAHsFYixTMywGGLGpgUWYgABxAA2mQkWCMyMqFoYmdD8ACQAAogBHJHMrCxg1cyIiICmCkYWDFsAAgiihYmZCewFFpR0BfI3LLch+QUggBiQ0iQjEyMDmh54qCBlUIAAYsCRJsElADQvgWKTlRGeKwECiAF3XgGmMEYQYADZzcoA9z5AAMG9RQCAtEC9DxBADFiyFyMjVi0wABBAWLQwQdIiuhYGWJIACCBg+KKUJ9BoBRdS2LQALQMIIGDQIEmwAO1kYcVWHCDZAhBAqFqYmOAxj2YNtAwDAYAAYmDEiBYWzHKKkRERYiwAAYSphZEZwxZGZiZQVEJTJkAAMTCyokc7M5oORlC5wcoEjxeAAAJqQXU0UB6W5WFmABMtEzMi1wEEEFAbE0YyAUuzMMEsYQalMkQSBQggUDmNPU3C9IA4LCxI+QUggEBiKOU8yExgqccCL3chnkPKlQABhGo6ejHBDKmdUHMlQAAhhQvQaGZGkBIkjcAMywLmI+VKgABCSowsTJhZkhlWXiBpAQggYBqBZl9GVOdBcz0LZqEEEEAMqLULMBLg1THWog9IAwQQA0qiZcRW5aPbAhBADCg1El4tMAAQQAxoiZYZXnTh1AIQQAzo2QlYpDDjcBgrxGEAAcSAJTthswmiBUwDBBC2GpkZJTaRvQ+mAQKIAUuuxdZWQvILQABBmSxMjBj5EpcWgACCMoFOYYSpZyHQHgMIMACt2hmoVEikCQAAAABJRU5ErkJggg==", "19-object-data-data-uri - logo"); 1.765 + is(hcard.photo, "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAMAAAAp4XiDAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAASUExURf///8zMzJmZmWZmZjMzMwAAAPOPemkAAAM1SURBVHjaYmBgYGBkYQUBFkYWFiCPCchixQAMCCZAACF0MAMVM4K4TFh0IGsBCCAkOxhYmBnAAKaHhZkZmxaAAGJgYIbpYGBihGgBWsTMzMwE4jIhaWGAYoAAYmCECDExYAcwGxkg5oNIgABigDqLARdgZmGB2wICrKwAAcSA3xKgIxlZ0PwCEEAMBCxhgHoWSQtAADFAAxgfYEJ1GEAAQbQw4tUCsocBYQVAADEgu4uRkREeUCwszEwwLhOKLQABhNDCBA4aSDgwwhIAJKqYUPwCEEAMUK/AUwnc9aywJMCI7DAgAAggBohZ8JTBhGIJzCoWZL8ABBCYidAB8RUjWppkYUG2BSCAGMDqEMZiswUtXgACiAHsFYixTMywGGLGpgUWYgABxAA2mQkWCMyMqFoYmdD8ACQAAogBHJHMrCxg1cyIiICmCkYWDFsAAgiihYmZCewFFpR0BfI3LLch+QUggBiQ0iQjEyMDmh54qCBlUIAAYsCRJsElADQvgWKTlRGeKwECiAF3XgGmMEYQYADZzcoA9z5AAMG9RQCAtEC9DxBADFiyFyMjVi0wABBAWLQwQdIiuhYGWJIACCBg+KKUJ9BoBRdS2LQALQMIIGDQIEmwAO1kYcVWHCDZAhBAqFqYmOAxj2YNtAwDAYAAYmDEiBYWzHKKkRERYiwAAYSphZEZwxZGZiZQVEJTJkAAMTCyokc7M5oORlC5wcoEjxeAAAJqQXU0UB6W5WFmABMtEzMi1wEEEFAbE0YyAUuzMMEsYQalMkQSBQggUDmNPU3C9IA4LCxI+QUggEBiKOU8yExgqccCL3chnkPKlQABhGo6ejHBDKmdUHMlQAAhhQvQaGZGkBIkjcAMywLmI+VKgABCSowsTJhZkhlWXiBpAQggYBqBZl9GVOdBcz0LZqEEEEAMqLULMBLg1THWog9IAwQQA0qiZcRW5aPbAhBADCg1El4tMAAQQAxoiZYZXnTh1AIQQAzo2QlYpDDjcBgrxGEAAcSAJTthswmiBUwDBBC2GpkZJTaRvQ+mAQKIAUuuxdZWQvILQABBmSxMjBj5EpcWgACCMoFOYYSpZyHQHgMIMACt2hmoVEikCQAAAABJRU5ErkJggg==", "19-object-data-data-uri - photo"); 1.766 + 1.767 + 1.768 + hcard = new hCard(document.getElementById("20-image-alt")); 1.769 + 1.770 + is(hcard.fn, "John Doe", "20-image-alt - fn"); 1.771 + is(hcard.n["given-name"][0], "John", "20-image-alt - given-name"); 1.772 + is(hcard.n["family-name"][0], "Doe", "20-image-alt - family-name"); 1.773 + is(hcard.logo, "http://mochi.test:8888/tests/browser/microformats/test/picture.png", "20-image-alt - logo"); 1.774 + is(hcard.photo, "http://mochi.test:8888/tests/browser/microformats/test/picture.png", "20-image-alt - photo"); 1.775 + 1.776 + hcard = new hCard(document.getElementById("21-tel")); 1.777 + 1.778 + is(hcard.fn, "John Doe", "21-tel - fn"); 1.779 + is(hcard.n["given-name"][0], "John", "21-tel - given-name"); 1.780 + is(hcard.n["family-name"][0], "Doe", "21-tel - family-name"); 1.781 + is(hcard.tel[0].value, "+1.415.555.1231", "21-tel - tel"); 1.782 + is(hcard.tel[1].value, "+1 415 555 1232", "21-tel - tel"); 1.783 + is(hcard.tel[1].type[0], "home", "21-tel - type"); 1.784 + is(hcard.tel[2].value, "+14155551233", "21-tel - tel"); 1.785 + is(hcard.tel[2].type[0], "msg", "21-tel - type"); 1.786 + is(hcard.tel[2].type[1], "home", "21-tel - type"); 1.787 + is(hcard.tel[2].type[2], "work", "21-tel - type"); 1.788 + is(hcard.tel[2].type[3], "pref", "21-tel - type"); 1.789 + is(hcard.tel[2].type[4], "voice", "21-tel - type"); 1.790 + is(hcard.tel[2].type[5], "fax", "21-tel - type"); 1.791 + is(hcard.tel[2].type[6], "cell", "21-tel - type"); 1.792 + is(hcard.tel[2].type[7], "video", "21-tel - type"); 1.793 + is(hcard.tel[2].type[8], "pager", "21-tel - type"); 1.794 + is(hcard.tel[2].type[9], "bbs", "21-tel - type"); 1.795 + is(hcard.tel[2].type[10], "car", "21-tel - type"); 1.796 + is(hcard.tel[2].type[11], "isdn", "21-tel - type"); 1.797 + is(hcard.tel[2].type[12], "pcs", "21-tel - type"); 1.798 + isnot(hcard.tel[2].type[13], "invalid", "21-tel - type"); 1.799 + is(hcard.tel[3].value, "+1 415 555 1234", "21-tel - tel"); 1.800 + is(hcard.tel[3].type[0], "home", "21-tel - type"); 1.801 + is(hcard.tel[4].value, "+1.415.555.1235", "21-tel - tel"); 1.802 + is(hcard.tel[5].value, "+1.415.555.1236", "21-tel - tel"); 1.803 + is(hcard.tel[6].value, "+1.415.555.1238", "21-tel - tel"); 1.804 + is(hcard.tel[7].value, "+1.415.555.1239", "21-tel - tel"); 1.805 + is(hcard.tel[8].value, "+1.415.555.1241", "21-tel - tel"); 1.806 + is(hcard.tel[9].value, "+1.415.555.1242", "21-tel - tel"); 1.807 + 1.808 + hcard = new hCard(document.getElementById("21-tel.2")); 1.809 + 1.810 + is(hcard.tel[0].type[0], "home", "21-tel.2 - type"); 1.811 + is(hcard.tel[0].value, "+1.415.555.1212", "21-tel.2 - tel"); 1.812 + 1.813 + hcard = new hCard(document.getElementById("21-tel.3")); 1.814 + 1.815 + is(hcard.tel[0].type[0], "home", "21-tel.3 - type (home)"); 1.816 + is(hcard.tel[0].type[1], "pref", "21-tel.3 - type (pref)"); 1.817 + is(hcard.tel[0].value, "+1.415.555.1212", "21-tel.3 - tel"); 1.818 + 1.819 + hcard = new hCard(document.getElementById("22-adr")); 1.820 + 1.821 + is(hcard.fn, "John Doe", "22-adr - fn"); 1.822 + is(hcard.n["given-name"][0], "John", "22-adr - given-name"); 1.823 + is(hcard.n["family-name"][0], "Doe", "22-adr - family-name"); 1.824 + is(hcard.adr[0]["street-address"][0], "1231 Main St.", "22-adr - street-address"); 1.825 + is(hcard.adr[0].locality, "Beverly Hills", "22-adr - locality"); 1.826 + is(hcard.adr[0].region, "California", "22-adr - region"); 1.827 + is(hcard.adr[0]["postal-code"], "90210", "22-adr - postal-code"); 1.828 + is(hcard.adr[0]["country-name"], "United States of America", "22-adr - country-name"); 1.829 + is(hcard.adr[1]["post-office-box"], "PO Box 1234", "22-adr - post-office-box"); 1.830 + is(hcard.adr[1]["street-address"][0], "1232 Main St.", "22-adr - street-address"); 1.831 + is(hcard.adr[1]["street-address"][1], "Suite 100", "22-adr - street-address"); 1.832 + is(hcard.adr[1].locality, "Beverly Hills", "22-adr - locality"); 1.833 + is(hcard.adr[1].region, "California", "22-adr - region"); 1.834 + is(hcard.adr[1]["postal-code"], "90210", "22-adr - postal-code"); 1.835 + is(hcard.adr[1]["country-name"], "United States of America", "22-adr - country-name"); 1.836 + is(hcard.adr[2]["type"][0], "home", "22-adr - type"); 1.837 + is(hcard.adr[2]["street-address"][0], "1233 Main St.", "22-adr - street-address"); 1.838 + is(hcard.adr[2].locality, "Beverly Hills", "22-adr - locality"); 1.839 + is(hcard.adr[2].region, "California", "22-adr - region"); 1.840 + is(hcard.adr[2]["postal-code"], "90210", "22-adr - postal-code"); 1.841 + is(hcard.adr[2]["country-name"], "United States of America", "22-adr - country-name"); 1.842 + is(hcard.adr[3]["type"][0], "dom", "22-adr - type"); 1.843 + is(hcard.adr[3]["type"][1], "intl", "22-adr - type"); 1.844 + is(hcard.adr[3]["type"][2], "postal", "22-adr - type"); 1.845 + is(hcard.adr[3]["type"][3], "parcel", "22-adr - type"); 1.846 + is(hcard.adr[3]["type"][4], "home", "22-adr - type"); 1.847 + is(hcard.adr[3]["type"][5], "work", "22-adr - type"); 1.848 + is(hcard.adr[3]["type"][6], "pref", "22-adr - type"); 1.849 + is(hcard.adr[3]["street-address"][0], "1234 Main St.", "22-adr - street-address"); 1.850 + is(hcard.adr[3].locality, "Beverly Hills", "22-adr - locality"); 1.851 + is(hcard.adr[3].region, "California", "22-adr - region"); 1.852 + is(hcard.adr[3]["postal-code"], "90210", "22-adr - postal-code"); 1.853 + is(hcard.adr[3]["country-name"], "United States of America", "22-adr - country-name"); 1.854 + 1.855 + hcard = new hCard(document.getElementById("23-abbr-title-everything")); 1.856 + 1.857 + is(hcard.fn, "John Doe", "23-abbr-title-everything - fn"); 1.858 + is(hcard.n["given-name"][0], "Jonathan", "23-abbr-title-everything - given-name"); 1.859 + is(hcard.n["family-name"][0], "Doe-Smith", "23-abbr-title-everything - family-name"); 1.860 + is(hcard.n["additional-name"], "John", "23-abbr-title-everything - additional-name"); 1.861 + is(hcard.n["honorific-prefix"], "Mister", "23-abbr-title-everything - honorific-prefix"); 1.862 + is(hcard.n["honorific-suffix"], "Medical Doctor", "23-abbr-title-everything - honorific-suffix"); 1.863 + is(hcard["class"], "public", "23-abbr-title-everything - class"); 1.864 + is(hcard.geo.latitude, "37.77", "23-abbr-title-everything - geo.latitude"); 1.865 + is(hcard.geo.longitude, "-122.41", "23-abbr-title-everything - geo.longitude"); 1.866 + is(hcard.bday, "2006-04-04", "23-abbr-title-everything - bday"); 1.867 + is(hcard.nickname[0], "JJ", "23-abbr-title-everything - nickname"); 1.868 + is(hcard.note[0], "this is a note", "23-abbr-title-everything - note"); 1.869 + isnot(hcard.note[0], "this is not a note", "23-abbr-title-everything - note"); 1.870 + is(hcard.org[0]["organization-name"], "Intellicorp", "23-abbr-title-everything - organization-name"); 1.871 + is(hcard.org[0]["organization-unit"][0], "Intelligence", "23-abbr-title-everything - organization-unit"); 1.872 + is(hcard.role, "Chief", "23-abbr-title-everything - role"); 1.873 + is(hcard.tel[0].value, "415.555.1234", "23-abbr-title-everything - tel"); 1.874 + is(hcard.title[0], "President", "23-abbr-title-everything - title"); 1.875 + is(hcard.tz, "-0700", "23-abbr-title-everything - tz"); 1.876 + is(hcard.uid, "abcdefghijklmnopqrstuvwxyz", "23-abbr-title-everything - uid"); 1.877 + is(hcard.adr[0]["post-office-box"], "Box 1234", "23-abbr-title-everything - post-office-box"); 1.878 + is(hcard.adr[0]["street-address"][0], "123 Fake Street", "23-abbr-title-everything - street-address"); 1.879 + is(hcard.adr[0]["extended-address"], "Suite 100", "23-abbr-title-everything - street-address"); 1.880 + is(hcard.adr[0].locality, "San Francisco", "23-abbr-title-everything - locality"); 1.881 + is(hcard.adr[0].region, "California", "23-abbr-title-everything - region"); 1.882 + is(hcard.adr[0]["postal-code"], "12345-6789", "23-abbr-title-everything - postal-code"); 1.883 + is(hcard.adr[0]["country-name"], "United States of America", "23-abbr-title-everything - country-name"); 1.884 + 1.885 + hcard = new hCard(document.getElementById("25-geo-abbr")); 1.886 + 1.887 + is(hcard.fn, "Paradise", "25-geo-abbr - fn"); 1.888 + is(hcard.geo.latitude, "30.267991", "25-geo-abbr - geo.latitude"); 1.889 + is(hcard.geo.longitude, "-97.739568", "25-geo-abbr - geo.longitude"); 1.890 + 1.891 + hcard = new hCard(document.getElementById("26-ancestors")); 1.892 + 1.893 + is(hcard.fn, "John Doe", "26-ancestors - fn"); 1.894 + is(hcard.n["given-name"][0], "Jonathan", "26-ancestors - given-name"); 1.895 + is(hcard.n["family-name"][0], "Doe-Smith", "26-ancestors - family-name"); 1.896 + is(hcard.n["additional-name"], "John", "26-ancestors - additional-name"); 1.897 + is(hcard.n["honorific-prefix"], "Mister", "26-ancestors - honorific-prefix"); 1.898 + is(hcard.n["honorific-suffix"], "Medical Doctor", "26-ancestors - honorific-suffix"); 1.899 + is(hcard["class"], "public", "26-ancestors - class"); 1.900 + is(hcard.geo.latitude, "37.77", "26-ancestors - geo.latitude"); 1.901 + is(hcard.geo.longitude, "-122.41", "26-ancestors - geo.longitude"); 1.902 + is(hcard.bday, "2006-04-04", "26-ancestors - bday"); 1.903 + is(hcard.nickname[0], "JJ", "26-ancestors - nickname"); 1.904 + is(hcard.note[0], "this is a note", "26-ancestors - note"); 1.905 + isnot(hcard.note[0], "this is not a note", "26-ancestors - note"); 1.906 + is(hcard.org[0]["organization-name"], "Intellicorp", "26-ancestors - organization-name"); 1.907 + is(hcard.org[0]["organization-unit"][0], "Intelligence", "26-ancestors - organization-unit"); 1.908 + is(hcard.role, "Chief", "26-ancestors - role"); 1.909 + is(hcard.agent[0].fn, "Bob Smith", "26-ancestors - agent.fn"); 1.910 + is(hcard.agent[0].title, "Executive Assistant", "26-ancestors - agent.title"); 1.911 + is(hcard.tel[0].value, "415.555.1234", "26-ancestors - tel"); 1.912 + is(hcard.title[0], "President", "26-ancestors - title"); 1.913 + is(hcard.tz, "-0700", "26-ancestors - tz"); 1.914 + is(hcard.uid, "abcdefghijklmnopqrstuvwxyz", "26-ancestors - uid"); 1.915 + is(hcard.adr[0]["post-office-box"], "Box 1234", "26-ancestors - post-office-box"); 1.916 + is(hcard.adr[0]["street-address"][0], "123 Fake Street", "26-ancestors - street-address"); 1.917 + is(hcard.adr[0]["extended-address"], "Suite 100", "26-ancestors - street-address"); 1.918 + is(hcard.adr[0].locality, "San Francisco", "26-ancestors - locality"); 1.919 + is(hcard.adr[0].region, "California", "26-ancestors - region"); 1.920 + is(hcard.adr[0]["postal-code"], "12345-6789", "26-ancestors - postal-code"); 1.921 + is(hcard.adr[0]["country-name"], "United States of America", "26-ancestors - country-name"); 1.922 + 1.923 + hcard = new hCard(document.getElementById("27-bday-date")); 1.924 + 1.925 + is(hcard.fn, "john doe", "27-bday-date - fn"); 1.926 + is(hcard.n["given-name"][0], "john", "27-bday-date - given-name"); 1.927 + is(hcard.n["family-name"][0], "doe", "27-bday-date - family-name"); 1.928 + is(hcard.bday, "2000-01-01", "27-bday-date - bday"); 1.929 + 1.930 + hcard = new hCard(document.getElementById("28-bday-datetime")); 1.931 + 1.932 + is(hcard.fn, "john doe", "28-bday-datetime - fn"); 1.933 + is(hcard.n["given-name"][0], "john", "28-bday-datetime - given-name"); 1.934 + is(hcard.n["family-name"][0], "doe", "28-bday-datetime - family-name"); 1.935 + is(hcard.bday, "2000-01-01T00:00:00", "28-bday-datetime - bday"); 1.936 + 1.937 + hcard = new hCard(document.getElementById("29-bday-datetime-timezone")); 1.938 + 1.939 + is(hcard.fn, "john doe", "29-bday-datetime-timezone - fn"); 1.940 + is(hcard.n["given-name"][0], "john", "29-bday-datetime-timezone - given-name"); 1.941 + is(hcard.n["family-name"][0], "doe", "29-bday-datetime-timezone - family-name"); 1.942 + is(hcard.bday, "2000-01-01T00:00:00-0800", "29-bday-datetime-timezone - bday"); 1.943 + 1.944 + hcard = new hCard(document.getElementById("30-fn-org.1")); 1.945 + 1.946 + is(hcard.fn, "W3C", "30-fn-org.1 - fn"); 1.947 + is(hcard.org[0]["organization-name"], "W3C", "30-fn-org.1 - organization-name"); 1.948 + 1.949 + 1.950 + hcard = new hCard(document.getElementById("30-fn-org.2")); 1.951 + 1.952 + is(hcard.fn, "Dan Connolly", "30-fn-org.2 - fn"); 1.953 + is(hcard.n["given-name"][0], "Dan", "30-fn-org.2 - given-name"); 1.954 + is(hcard.n["family-name"][0], "Connolly", "30-fn-org.2 - family-name"); 1.955 + is(hcard.org[0]["organization-name"], "W3C", "30-fn-org.2 - organization-name"); 1.956 + 1.957 + hcard = new hCard(document.getElementById("30-fn-org.3")); 1.958 + 1.959 + is(hcard.fn, "W3C", "30-fn-org.3 - fn"); 1.960 + is(hcard.org[0]["organization-name"], "W3C", "30-fn-org.3 - organization-name"); 1.961 + 1.962 + hcard = new hCard(document.getElementById("30-fn-org.4")); 1.963 + 1.964 + is(hcard.fn, "World Wide Web Consortium", "30-fn-org.4 - fn"); 1.965 + is(hcard.org[0]["organization-name"], "World Wide Web Consortium", "30-fn-org.4 - organization-name"); 1.966 + 1.967 + hcard = new hCard(document.getElementById("30-fn-org.5")); 1.968 + 1.969 + is(hcard.fn, "World Wide Web Consortium", "30-fn-org.5 - fn"); 1.970 + is(hcard.org[0]["organization-name"], "World Wide Web Consortium", "30-fn-org.5 - organization-name"); 1.971 + 1.972 + hcard = new hCard(document.getElementById("31-include.1")); 1.973 + 1.974 + is(hcard.fn, "Brian Suda", "31-include.1 - fn"); 1.975 + is(hcard.n["given-name"][0], "Brian", "31-include.1 - given-name"); 1.976 + is(hcard.n["family-name"][0], "Suda", "31-include.1 - family-name"); 1.977 + is(hcard.url, "http://suda.co.uk/", "31-include.1 - url"); 1.978 + is(hcard.email[0].value, "correct@example.com", "31-include.1 - email"); 1.979 + isnot(hcard.email[0].value, "incorrect@example.com", "31-include.1 - email"); 1.980 + 1.981 + hcard = new hCard(document.getElementById("31-include.2")); 1.982 + 1.983 + is(hcard.fn, "Brian Suda", "31-include.2 - fn"); 1.984 + is(hcard.n["given-name"][0], "Brian", "31-include.2 - given-name"); 1.985 + is(hcard.n["family-name"][0], "Suda", "31-include.2 - family-name"); 1.986 + is(hcard.url, "http://suda.co.uk/", "31-include.2 - url"); 1.987 + is(hcard.email[0].value, "correct@example.com", "31-include.2 - email"); 1.988 + isnot(hcard.email[0].value, "incorrect@example.com", "31-include.2 - email"); 1.989 + 1.990 + hcard = new hCard(document.getElementById("31-include.3")); 1.991 + 1.992 + is(hcard.fn, "Brian Suda", "31-include.3 - fn"); 1.993 + is(hcard.n["given-name"][0], "Brian", "31-include.3 - given-name"); 1.994 + is(hcard.n["family-name"][0], "Suda", "31-include.3 - family-name"); 1.995 + is(hcard.url, "http://suda.co.uk/", "31-include.3 - url"); 1.996 + is(hcard.email[0].value, "correct@example.com", "31-include.3 - email"); 1.997 + isnot(hcard.email[0].value, "incorrect@example.com", "31-include.3 - email"); 1.998 + 1.999 + hcard = new hCard(document.getElementById("31-include.4")); 1.1000 + 1.1001 + is(hcard.fn, "Brian Suda", "31-include.3 - fn"); 1.1002 + is(hcard.n["given-name"][0], "Brian", "31-include.3 - given-name"); 1.1003 + is(hcard.n["family-name"][0], "Suda", "31-include.3 - family-name"); 1.1004 + is(hcard.url, "http://suda.co.uk/", "31-include.3 - url"); 1.1005 + 1.1006 + hcard = new hCard(document.getElementById("32-header.1")); 1.1007 + 1.1008 + is(hcard.fn, "Brian Suda", "32-header.1 - fn"); 1.1009 + is(hcard.n["given-name"][0], "Brian", "32-header.1 - given-name"); 1.1010 + is(hcard.n["family-name"][0], "Suda", "32-header.1 - family-name"); 1.1011 + is(hcard.org[0]["organization-name"], "example.org", "32-header.1 - organization-name"); 1.1012 + is(hcard.url, "http://example.org/", "32-header.1 - url"); 1.1013 + 1.1014 + hcard = new hCard(document.getElementById("32-header.2")); 1.1015 + 1.1016 + is(hcard.fn, "John Doe", "32-header.2 - fn"); 1.1017 + is(hcard.n["given-name"][0], "John", "32-header.2 - given-name"); 1.1018 + is(hcard.n["family-name"][0], "Doe", "32-header.2 - family-name"); 1.1019 + is(hcard.org[0]["organization-name"], "example.org", "32-header.2 - organization-name"); 1.1020 + is(hcard.url, "http://example.org/", "32-header.2 - url"); 1.1021 + 1.1022 + hcard = new hCard(document.getElementById("33-area.1")); 1.1023 + 1.1024 + is(hcard.fn, "Joe Public", "33-area.1 - fn"); 1.1025 + is(hcard.n["given-name"][0], "Joe", "33-area.1 - given-name"); 1.1026 + is(hcard.n["family-name"][0], "Public", "33-area.1 - family-name"); 1.1027 + is(hcard.url, "http://example.com/", "33-area.1 - url"); 1.1028 + is(hcard.email[0].value, "joe@example.com", "33-area.1 - email"); 1.1029 + 1.1030 + hcard = new hCard(document.getElementById("33-area.2")); 1.1031 + 1.1032 + is(hcard.fn, "Joe Public", "33-area.2 - fn"); 1.1033 + is(hcard.url, "http://example.com/", "33-area.2 - url"); 1.1034 + is(hcard.email[0].value, "joe@example.com", "33-area.2 - email"); 1.1035 + is(hcard.org[0]["organization-name"], "Joe Public", "33-area.2 - organization-name"); 1.1036 + 1.1037 + hcard = new hCard(document.getElementById("33-area.3")); 1.1038 + 1.1039 + is(hcard.fn, "Joe Public", "33-area.3 - fn"); 1.1040 + is(hcard.url, "http://example.com/", "33-area.3 - url"); 1.1041 + is(hcard.email[0].value, "joe@example.com", "33-area.3 - email"); 1.1042 + is(hcard.org[0]["organization-name"], "Joe Public", "33-area.3 - organization-name"); 1.1043 + 1.1044 + hcard = new hCard(document.getElementById("33-area.4")); 1.1045 + 1.1046 + is(hcard.fn, "Joe Public", "33-area.4 - fn"); 1.1047 + is(hcard.url, "http://example.com/", "33-area.4 - url"); 1.1048 + is(hcard.email[0].value, "joe@example.com", "33-area.4 - email"); 1.1049 + is(hcard.org[0]["organization-name"], "Joe Public", "33-area.4 - organization-name"); 1.1050 + 1.1051 + hcard = new hCard(document.getElementById("33-area.5")); 1.1052 + 1.1053 + is(hcard.fn, "Joe Public", "33-area.5 - fn"); 1.1054 + is(hcard.url, "http://example.com/", "33-area.5 - url"); 1.1055 + is(hcard.email[0].value, "joe@example.com", "33-area.5 - email"); 1.1056 + is(hcard.org[0]["organization-name"], "Joe Public", "33-area.5 - organization-name"); 1.1057 + 1.1058 + hcard = new hCard(document.getElementById("34-notes")); 1.1059 + 1.1060 + is(hcard.fn, "Joe Public", "34-notes - fn"); 1.1061 + is(hcard.n["given-name"][0], "Joe", "34-notes - given-name"); 1.1062 + is(hcard.n["family-name"][0], "Public", "34-notes - family-name"); 1.1063 + is(hcard.note[0], "Note 1", "34-notes - note"); 1.1064 + isnot(hcard.note[1], "Note 2", "34-notes - note"); 1.1065 + is(hcard.note[1], "Note 3", "34-notes - note"); 1.1066 + is(hcard.note[2], "Note 4 with a ; and a , to be escaped", "34-notes - note"); 1.1067 + 1.1068 + hcard = new hCard(document.getElementById("35-include-pattern.1")); 1.1069 + 1.1070 + is(hcard.fn, "James Levine", "35-include-pattern.1 - fn"); 1.1071 + is(hcard.n["given-name"][0], "James", "35-include-pattern.1 - given-name"); 1.1072 + is(hcard.n["family-name"][0], "Levine", "35-include-pattern.1 - family-name"); 1.1073 + 1.1074 + hcard = new hCard(document.getElementById("35-include-pattern.2")); 1.1075 + 1.1076 + is(hcard.fn, "James Levine", "35-include-pattern.2 - fn"); 1.1077 + is(hcard.n["given-name"][0], "James", "35-include-pattern.2 - given-name"); 1.1078 + is(hcard.n["family-name"][0], "Levine", "35-include-pattern.2 - family-name"); 1.1079 + is(hcard.org[0]["organization-name"], "SimplyHired", "35-include-pattern.2 - organization-name"); 1.1080 + is(hcard.title[0], "Microformat Brainstormer", "35-include-pattern.2 - title"); 1.1081 + 1.1082 + hcard = new hCard(document.getElementById("35-include-pattern.3")); 1.1083 + 1.1084 + is(hcard.fn, "James Levine", "35-include-pattern.3 - fn"); 1.1085 + is(hcard.n["given-name"][0], "James", "35-include-pattern.3 - given-name"); 1.1086 + is(hcard.n["family-name"][0], "Levine", "35-include-pattern.3 - family-name"); 1.1087 + is(hcard.org[0]["organization-name"], "SimplyHired", "35-include-pattern.3 - organization-name"); 1.1088 + is(hcard.title[0], "Microformat Brainstormer", "35-include-pattern.3 - title"); 1.1089 + 1.1090 + hcard = new hCard(document.getElementById("36-categories.1")); 1.1091 + 1.1092 + is(hcard.fn, "john doe", "36-categories.1 - fn"); 1.1093 + is(hcard.n["given-name"][0], "john", "36-categories.1 - given-name"); 1.1094 + is(hcard.n["family-name"][0], "doe", "36-categories.1 - family-name"); 1.1095 + is(hcard.category[0], "C1", "36-categories.1 - category"); 1.1096 + isnot(hcard.category[0], "C1a", "36-categories.1 - category"); 1.1097 + is(hcard.category[1], "C2a", "36-categories.1 - category"); 1.1098 + isnot(hcard.category[1], "C2", "36-categories.1 - category"); 1.1099 + is(hcard.category[2], "C3", "36-categories.1 - category"); 1.1100 + isnot(hcard.category[2], "C3a", "36-categories.1 - category"); 1.1101 + isnot(hcard.category[2], "C3b", "36-categories.1 - category"); 1.1102 + is(hcard.category[3], "C4", "36-categories.1 - category"); 1.1103 + is(hcard.category[4], "C5", "36-categories.1 - category"); 1.1104 + isnot(hcard.category[4], "C5a", "36-categories.1 - category"); 1.1105 + isnot(hcard.category[4], "C5b", "36-categories.1 - category"); 1.1106 + is(hcard.category[5], "C6", "36-categories.1 - category"); 1.1107 + isnot(hcard.category[4], "C6a", "36-categories.1 - category"); 1.1108 + isnot(hcard.category[4], "C6b", "36-categories.1 - category"); 1.1109 + is(hcard.category[6], "C7", "36-categories.1 - category"); 1.1110 + isnot(hcard.category[4], "C7a", "36-categories.1 - category"); 1.1111 + isnot(hcard.category[4], "C7b", "36-categories.1 - category"); 1.1112 + is(hcard.category[7], "C8", "36-categories.1 - category"); 1.1113 + isnot(hcard.category[4], "C8a", "36-categories.1 - category"); 1.1114 + isnot(hcard.category[4], "C8b", "36-categories.1 - category"); 1.1115 + is(hcard.category[8], "C9", "36-categories.1 - category"); 1.1116 + isnot(hcard.category[4], "C9a", "36-categories.1 - category"); 1.1117 + isnot(hcard.category[4], "C9b", "36-categories.1 - category"); 1.1118 + 1.1119 + hcard = new hCard(document.getElementById("37-singleton")); 1.1120 + 1.1121 + is(hcard.fn, "john doe 1", "37-singleton - fn"); 1.1122 + is(hcard.n["given-name"][0], "john", "37-singleton - given-name"); 1.1123 + is(hcard.n["family-name"][0], "doe", "37-singleton - family-name"); 1.1124 + is(hcard.uid, "unique-id-1", "37-singleton - uid"); 1.1125 + is(hcard.tz, "+0600", "37-singleton - tz"); 1.1126 + is(hcard["sort-string"], "d", "37-singleton - sort-string"); 1.1127 + is(hcard.geo.latitude, "123.45", "37-singleton - geo.latitude"); 1.1128 + is(hcard.geo.longitude, "67.89", "37-singleton - geo.longitude"); 1.1129 + is(hcard["class"], "public", "37-singleton - class"); 1.1130 + is(hcard.bday, "2006-07-07", "37-singleton - bday"); 1.1131 + is(hcard.rev, "2006-07-07", "37-singleton - rev"); 1.1132 + 1.1133 + hcard = new hCard(document.getElementById("38-uid.1")); 1.1134 + 1.1135 + is(hcard.fn, "Ryan King", "38-uid.1 - fn"); 1.1136 + is(hcard.n["given-name"][0], "Ryan", "38-uid.1 - given-name"); 1.1137 + is(hcard.n["family-name"][0], "King", "38-uid.1 - family-name"); 1.1138 + is(hcard.uid, "http://theryanking.com/contact/", "38-uid.1 - uid"); 1.1139 + is(hcard.url[0], "http://theryanking.com/contact/", "38-uid.1 - url"); 1.1140 + 1.1141 + hcard = new hCard(document.getElementById("38-uid.2")); 1.1142 + 1.1143 + is(hcard.fn, "Ryan King", "38-uid.2 - fn"); 1.1144 + is(hcard.n["given-name"][0], "Ryan", "38-uid.2 - given-name"); 1.1145 + is(hcard.n["family-name"][0], "King", "38-uid.2 - family-name"); 1.1146 + is(hcard.uid, "http://mochi.test:8888/tests/browser/microformats/test/contact/", "38-uid.2 - uid"); 1.1147 + is(hcard.url[0], "http://mochi.test:8888/tests/browser/microformats/test/contact/", "38-uid.2 - url"); 1.1148 + 1.1149 + hcard = new hCard(document.getElementById("38-uid.3")); 1.1150 + 1.1151 + is(hcard.fn, "Ryan King", "38-uid.3 - fn"); 1.1152 + is(hcard.n["given-name"][0], "Ryan", "38-uid.3 - given-name"); 1.1153 + is(hcard.n["family-name"][0], "King", "38-uid.3 - family-name"); 1.1154 + is(hcard.uid, "http://mochi.test:8888/tests/browser/microformats/test/contact/", "38-uid.3 - uid"); 1.1155 + is(hcard.url[0], "http://mochi.test:8888/tests/browser/microformats/test/contact/", "38-uid.3 - url"); 1.1156 + 1.1157 + hcard = new hCard(document.getElementById("38-uid.4")); 1.1158 + 1.1159 + is(hcard.fn, "Ryan King", "38-uid.4 - fn"); 1.1160 + is(hcard.n["given-name"][0], "Ryan", "38-uid.4 - given-name"); 1.1161 + is(hcard.n["family-name"][0], "King", "38-uid.4 - family-name"); 1.1162 + is(hcard.uid, "http://theryanking.com/contact/", "38-uid.4 - uid"); 1.1163 + is(hcard.url[0], "http://theryanking.com/contact/", "38-uid.4 - url"); 1.1164 + 1.1165 + hcard = new hCard(document.getElementById("39-noteHTML")); 1.1166 + 1.1167 + is(hcard.note[0], "Note", "39-noteHTML - note"); 1.1168 + is(hcard.note[0].toHTML(), "<b>Note</b>", "39-noteHTML - note as HTML"); 1.1169 + is(hcard.note[0].match("Note"), "Note", "39-noteHTML - match in note"); 1.1170 + 1.1171 + hcard = new hCard(document.getElementById("email-type")); 1.1172 + is(hcard.email[0].type, "internet", "email - type no value (type)"); 1.1173 + is(hcard.email[0].value, "john@example.com", "email - type no value (value)"); 1.1174 +} 1.1175 + 1.1176 +</script> 1.1177 +</pre> 1.1178 +</body> 1.1179 +</html>