| OLD | NEW | 
 | (Empty) | 
|    1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |  | 
|    2           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |  | 
|    3 <html> |  | 
|    4   <!-- Copyright 2009 Google Inc.  All rights reserved. --> |  | 
|    5   <head> |  | 
|    6     <title> SRPC Socket Address API Test </title> |  | 
|    7     <META HTTP-EQUIV="Pragma" CONTENT="no-cache" /> |  | 
|    8     <META HTTP-EQUIV="Expires" CONTENT="-1" /> |  | 
|    9     <style type="text/css"> |  | 
|   10       td.notrun { background-color: skyblue } |  | 
|   11       td.pass { background-color: lime } |  | 
|   12       td.fail { background-color: red } |  | 
|   13     </style> |  | 
|   14     <script type="application/x-javascript"> |  | 
|   15       //<![CDATA[ |  | 
|   16 var SetTestResult = function(element_id, result) { |  | 
|   17   var element = document.getElementById(element_id); |  | 
|   18   element.className = result; |  | 
|   19 } |  | 
|   20  |  | 
|   21 // The NaCl module.  Used to produce handles and for __shmFactory invocations. |  | 
|   22 var server; |  | 
|   23 // The default socket address for the plugin. |  | 
|   24 var default_addr; |  | 
|   25 // The count of failing tests.  Set from the queue length, and decremented |  | 
|   26 // whenever a test passes. |  | 
|   27 var failing_count; |  | 
|   28  |  | 
|   29 // The queue of small tests. |  | 
|   30 var testQueue = [ ]; |  | 
|   31 var appendTest = function(test_descr) { |  | 
|   32   testQueue[testQueue.length] = test_descr; |  | 
|   33 } |  | 
|   34  |  | 
|   35 var expectPass = function(element, has_return, fp) { |  | 
|   36   appendTest(new Array('pass', element, has_return, fp)); |  | 
|   37 } |  | 
|   38  |  | 
|   39 var expectFail = function(element, fp) { |  | 
|   40   appendTest(new Array('fail', element, fp)); |  | 
|   41 } |  | 
|   42  |  | 
|   43 var DefaultSocketAddress = function() { |  | 
|   44   // Test the creation of socket address objects. |  | 
|   45   // Attempt to retrieve with the wrong number of parameters. |  | 
|   46   expectFail('default_too_many', |  | 
|   47              function() { |  | 
|   48                return server.__defaultSocketAddress('extra'); |  | 
|   49              }); |  | 
|   50   // Attempt to get the default socket address. |  | 
|   51   expectPass('default_conforming', |  | 
|   52              true, |  | 
|   53              function() { |  | 
|   54                return server.__defaultSocketAddress(); |  | 
|   55              }); |  | 
|   56 } |  | 
|   57  |  | 
|   58 var Connect = function() { |  | 
|   59   // Test connection to socket address objects. |  | 
|   60   // Attempt to create with the wrong number of parameters. |  | 
|   61   expectFail('connect_too_many', |  | 
|   62              function() { |  | 
|   63                return default_addr.connect('extra'); |  | 
|   64              }); |  | 
|   65   // Attempt to connect to the default socket address. |  | 
|   66   expectPass('connect_default', |  | 
|   67              true, |  | 
|   68              function() { |  | 
|   69                return default_addr.connect(); |  | 
|   70              }); |  | 
|   71   // Attempt to connect to a socket address returned from a NaCl module. |  | 
|   72   expectPass('connect_nacl', |  | 
|   73              true, |  | 
|   74              function() { |  | 
|   75                var sockaddr = server.start_server(); |  | 
|   76                return sockaddr.connect(); |  | 
|   77              }); |  | 
|   78 } |  | 
|   79  |  | 
|   80 // The test run functions. |  | 
|   81 var testExpectedPass = function(element, has_return, fp) { |  | 
|   82   var result = undefined; |  | 
|   83   try { |  | 
|   84     result = fp(); |  | 
|   85     if (has_return && (undefined == result)) { |  | 
|   86       SetTestResult(element, 'fail'); |  | 
|   87     } else { |  | 
|   88       SetTestResult(element, 'pass'); |  | 
|   89       --failing_count; |  | 
|   90     } |  | 
|   91   } catch (string) { |  | 
|   92     SetTestResult(element, 'fail'); |  | 
|   93   } |  | 
|   94 } |  | 
|   95  |  | 
|   96 var testExpectedFail = function(element, fp) { |  | 
|   97   var result = undefined; |  | 
|   98   try { |  | 
|   99     result = fp(); |  | 
|  100     SetTestResult(element, 'fail'); |  | 
|  101   } catch (string) { |  | 
|  102     if (undefined == result) { |  | 
|  103       SetTestResult(element, 'pass'); |  | 
|  104       --failing_count; |  | 
|  105     } else { |  | 
|  106       SetTestResult(element, 'fail'); |  | 
|  107     } |  | 
|  108   } |  | 
|  109 } |  | 
|  110  |  | 
|  111 var RunAllTests = function() { |  | 
|  112   var i; |  | 
|  113   var len = testQueue.length; |  | 
|  114   // All tests are considered failure until they have run successfully. |  | 
|  115   // This catches runs that end prematurely. |  | 
|  116   failing_count = len; |  | 
|  117   for (i = 0; i < len; ++i) { |  | 
|  118     var test_descr = testQueue[i]; |  | 
|  119     if ('pass' == test_descr[0]) { |  | 
|  120       testExpectedPass(test_descr[1], test_descr[2], test_descr[3]); |  | 
|  121     } else { |  | 
|  122       testExpectedFail(test_descr[1], test_descr[2]); |  | 
|  123     } |  | 
|  124   } |  | 
|  125   if (0 == failing_count) { |  | 
|  126     // Set the magic Selenium variable to signal success. |  | 
|  127     document.cookie = 'status=OK'; |  | 
|  128   } |  | 
|  129 } |  | 
|  130  |  | 
|  131 var EnqueueAndRunTests = function() { |  | 
|  132   // Setup -- abort entire test if this fails. |  | 
|  133   try { |  | 
|  134     // If these fail at the beginning, all the tests will abort. |  | 
|  135     // Otherwise more specific tests are done on them. |  | 
|  136     default_addr = server.__defaultSocketAddress(); |  | 
|  137   } catch (string) { |  | 
|  138     window.alert('Socket address test setup failed.'); |  | 
|  139     return; |  | 
|  140   } |  | 
|  141   // Enqueue the tests. |  | 
|  142   DefaultSocketAddress(); |  | 
|  143   Connect(); |  | 
|  144   // Run them all. |  | 
|  145   RunAllTests(); |  | 
|  146 } |  | 
|  147       //]]> |  | 
|  148     </script> |  | 
|  149   </head> |  | 
|  150   <body onload="nacllib.waitForModulesAndRunTests();" |  | 
|  151         onunload="nacllib.cleanUp();" > |  | 
|  152     <h1> SRPC Socket Address API Test </h1> |  | 
|  153     <table cellspacing=5 cellpadding=5 border=5 summary="Test status table"> |  | 
|  154       <tr> |  | 
|  155         <td> |  | 
|  156         </td> |  | 
|  157         <td> |  | 
|  158           <b> __defaultSocketAddress tests </b> |  | 
|  159         </td> |  | 
|  160         <td> |  | 
|  161           <b> connect tests </b> |  | 
|  162         </td> |  | 
|  163       </tr> |  | 
|  164       <tr> |  | 
|  165         <td> |  | 
|  166           <b> Argument count tests </b> |  | 
|  167         </td> |  | 
|  168         <td> |  | 
|  169           <table summary="Default argument count test"> |  | 
|  170             <tr> |  | 
|  171               <td id="default_too_many" class="notrun"> |  | 
|  172                 argc: too many |  | 
|  173               </td> |  | 
|  174             </tr> |  | 
|  175           </table> |  | 
|  176         </td> |  | 
|  177         <td> |  | 
|  178           <table summary="Connect argument count test"> |  | 
|  179             <tr> |  | 
|  180               <td id="connect_too_many" class="notrun"> |  | 
|  181                 argc: too many |  | 
|  182               </td> |  | 
|  183             </tr> |  | 
|  184           </table> |  | 
|  185         </td> |  | 
|  186       </tr> |  | 
|  187  |  | 
|  188       <tr> |  | 
|  189         <td> |  | 
|  190           <b> Expected behavior </b> |  | 
|  191         </td> |  | 
|  192         <td valign=top> |  | 
|  193           <table summary="Default behavior tests"> |  | 
|  194             <tr> |  | 
|  195               <td id="default_conforming" class="notrun"> |  | 
|  196                 conforming invocation |  | 
|  197               </td> |  | 
|  198             </tr> |  | 
|  199           </table> |  | 
|  200         </td> |  | 
|  201         <td valign=top> |  | 
|  202           <table summary="Connection behavior tests"> |  | 
|  203             <tr> |  | 
|  204               <td id="connect_default" class="notrun"> |  | 
|  205                 to default |  | 
|  206               </td> |  | 
|  207             </tr> |  | 
|  208             <tr> |  | 
|  209               <td id="connect_nacl" class="notrun"> |  | 
|  210                 to address returned from NaCl |  | 
|  211               </td> |  | 
|  212             </tr> |  | 
|  213           </table> |  | 
|  214         </td> |  | 
|  215       </tr> |  | 
|  216     </table> |  | 
|  217  |  | 
|  218     <table summary="The color codes used for identifying test outcomes"> |  | 
|  219       <tr> <td align="center"> <em> Legend </em> </td> </tr> |  | 
|  220       <tr> <td align="center" class="notrun"> Test not run </td> </tr> |  | 
|  221       <tr> <td align="center" class="pass"> Test passed </td> </tr> |  | 
|  222       <tr> <td align="center" class="fail"> Test failed </td> </tr> |  | 
|  223     </table> |  | 
|  224     <p> |  | 
|  225     <b> |  | 
|  226       NOTE: Some versions of some WebKit-based browsers do not correctly report |  | 
|  227       JavaScript exceptions raised by NPAPI plugins.  This can cause some of |  | 
|  228       the above tests to spuriously report failure. |  | 
|  229     </b> |  | 
|  230     </p> |  | 
|  231  |  | 
|  232     <div id=status>NO-STATUS</div> |  | 
|  233  |  | 
|  234     <embed type="application/x-nacl" id="nacl_server" name="nacl_module" |  | 
|  235             width="0" height="0" src="srpc_nrd_server.nexe" /> |  | 
|  236  |  | 
|  237     <script type="text/javascript" src="nacl_js_lib.js"></script> |  | 
|  238     <script type="text/javascript"> |  | 
|  239       //<![CDATA[ |  | 
|  240       var nacllib = new NaclLib("nacl_module", "status", 500); |  | 
|  241  |  | 
|  242       nacllib.test = function() { |  | 
|  243         server = document.getElementById("nacl_server"); |  | 
|  244         EnqueueAndRunTests(); |  | 
|  245         if (0 == testQueue.length) { |  | 
|  246           return "No tests run."; |  | 
|  247         } else if (0 != failing_count) { |  | 
|  248           return "Tests failed."; |  | 
|  249         } else { |  | 
|  250           return ""; |  | 
|  251         } |  | 
|  252       } |  | 
|  253       //]]> |  | 
|  254     </script> |  | 
|  255   </body> |  | 
|  256 </html> |  | 
| OLD | NEW |