toolkit/components/microformats/tests/test_Microformats_count.html

Fri, 16 Jan 2015 18:13:44 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 16 Jan 2015 18:13:44 +0100
branch
TOR_BUG_9701
changeset 14
925c144e1f1f
permissions
-rw-r--r--

Integrate suggestion from review to improve consistency with existing code.

     1 <html>
     2 <head>
     3   <title>Testing Mixed Up Microformat APIs</title>
     4   <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
     5   <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
     6   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"></link>
     7 </head>
     8 <body id="contentbody">
     9   <!-- hCard -->
    10   <p class="vcard" id="23-abbr-title-everything">
    11 <!-- perhaps the most annoying test ever -->
    12     <abbr class="fn" title="John Doe">foo</abbr>
    13     <span class="n">
    14       <abbr class="honorific-prefix" title="Mister">Mr.</abbr>
    15       <abbr class="given-name" title="Jonathan">John</abbr>
    16       <abbr class="additional-name" title="John">J</abbr>
    17       <abbr class="family-name" title="Doe-Smith">Doe</abbr>
    18       <abbr class="honorific-suffix" title="Medical Doctor">M.D</abbr>
    19     </span>
    20     <abbr class="nickname" title="JJ">jj</abbr>
    21     <abbr class="bday" title="2006-04-04">April 4, 2006</abbr>
    22     <span class="adr">
    23       <abbr class="post-office-box" title="Box 1234">B. 1234</abbr>
    24       <abbr class="extended-address" title="Suite 100">Ste. 100</abbr>
    25       <abbr class="street-address" title="123 Fake Street">123 Fake St.</abbr>
    26       <abbr class="locality" title="San Francisco">San Fran</abbr>
    27       <abbr class="region" title="California">CA</abbr>
    28       <abbr class="postal-code" title="12345-6789">12345</abbr>
    29       <abbr class="country-name" title="United States of America">USA</abbr>
    30       <abbr class="type" title="work">workplace</abbr>
    31     </span>
    32     <abbr class="tel" title="415.555.1234">1234</abbr>
    33     <abbr class="tel-type-value" title="work">workplace</abbr>
    34 <!--       mailer  -->
    35     <abbr class="tz" title="-0700">Pacific Time</abbr>
    36     <span class="geo">
    37       <abbr class="latitude" title="37.77">Northern</abbr>
    38       <abbr class="longitude" title="-122.41">California</abbr>
    39     </span>
    40     <abbr class="title" title="President">pres.</abbr> and
    41     <abbr class="role" title="Chief">cat wrangler</abbr>
    42 <!--       <span class="agent"></span> -->
    43     <span class="org">
    44       <abbr class="organization-name" title="Intellicorp">foo</abbr>
    45       <abbr class="organization-unit" title="Intelligence">bar</abbr>
    46     </span>
    47 <!--       <abbr class="category" title=""></abbr> -->
    48     <abbr class="note" title="this is a note">this is not a note</abbr>
    49 <!--       <abbr class="rev" title=""></abbr>  (revision datetime) -->
    50 <!--       <abbr class="sort-string" title=""></abbr> -->
    51     <abbr class="uid" title="abcdefghijklmnopqrstuvwxyz">alpha</abbr>
    52     <abbr class="class" title="public">pub</abbr>
    53 <!--       <abbr class="key" title=""></abbr> -->
    54   </p>
    56   <!-- hCalendar -->
    57   <frameset>
    58     <frame id="frame1">
    59       <div>
    60         <span class="notAMicroformat" id="notme">
    61           <abbr> class="foo">I am not a microformat</abbr>
    62           <abbr> class="title">Foolish title, not a format</abbr>
    63         </span>
    64       </div>
    65     </frame>
    66     <frame id="frame3">
    67       <span class="geo" id="02-geo-abbr-latlong" >
    68         <abbr class="latitude" title="75.77">Far Northern</abbr>
    69         <abbr class="longitude" title="-122.41">Canada</abbr>
    70       </span>
    71     <frame id="frame2">
    72       <div class="vcalendar">
    73         <span class="vevent" id="15-calendar-xml-lang">
    74           <a class="url" href="http://www.web2con.com/">
    75           <span class="summary">Web 2.0 Conference</span>: 
    76           <abbr class="dtstart" title="2005-10-05">October 5</abbr>-
    77           <abbr class="dtend" title="2005-10-08">7</abbr>,
    78           at the <span class="location">Argent Hotel, San Francisco, CA</span>
    79           </a>
    80         </span>
    81       </div>
    82     </frame>
    83   </frameset>
    85   <!-- Put the test code before the iframe just to be
    86     extra-sure it's been evaluated before the iframe onload fires -->
    87   <script class="testbody" type="text/javascript">
    88   // Called from the onload of the iframe
    89   function test_MicroformatsAPI() {
    90     // I'm going to try to do this without getting XPConnect priv's, make sure
    91     // we throw
    92     try {
    93       Components.utils.import("resource://gre/modules/Microformats.js");
    94       ok(false, "Should not execute this code");
    95     } catch(ex) {
    96       ok(true, "Expected exception");
    97     }
    99     // Gonna do things the right way
   100     var Microformats = SpecialPowers.Cu.import("resource://gre/modules/Microformats.js").Microformats;
   102     // Test Microformat frame recursion - start with counting
   103     var count = Microformats.count("adr",
   104                                    document.getElementById("contentbody"),
   105                                    {recurseExternalFrames: false}, // do not recurse frames
   106                                    0);    // current count
   107     is(count, 2, "No frame recursion, finds 2 adr's (none in frames)");
   109     // Try it with frame recursion
   110     count = Microformats.count("adr",
   111                                document.getElementById("contentbody"),
   112                                {recurseExternalFrames: true},
   113                                count);
   114     // Should still find 2
   115     is(count, 2, "Only 2 adr nodes, even when recursing frames");
   117     // Since "recurseExternalFrames" only affects the external frames, the microformat
   118     // in the <frameset> will always be counted.
   119     count = Microformats.count("geo",
   120                               document.getElementById("contentbody"),
   121                               {recurseExternalFrames: false},
   122                               0);
   123     is(count, 2, "Should find two geo if we don't recurse external frames");
   125     count = Microformats.count("geo",
   126                               document.getElementById("contentbody"),
   127                               {recurseExternalFrames: true},
   128                               0);
   129     is(count, 3, "Three geos,one outside, one in a frameset, and one in iframe");
   131     count = Microformats.count("hCalendar",
   132                                document.getElementById("contentbody"),
   133                                {recurseExternalFrames: true},
   134                                0);
   135     is(count, 1, "One hCalendar");
   137     count = Microformats.count("hCard",
   138                                document.getElementById("contentbody"),
   139                                {recurseExternalFrames: true});
   140     is(count, 1, "One hCard");
   141   }
   142   </script>
   144   <!-- Geo Fire the test from here so we know this is loaded at the outset -->
   145   <iframe src="geo.html" onload="test_MicroformatsAPI();">
   146   </iframe>
   148   <!-- adr -->
   149   <div class="adr" id="01-extended-address">
   150     <span class="extended-address">Park Bench</span>
   151   </div>
   153 </body>
   154 </html>

mercurial