Home | History | Annotate | Download | only in js1_6
      1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* ***** BEGIN LICENSE BLOCK *****
      3  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
      4  *
      5  * The contents of this file are subject to the Mozilla Public License Version
      6  * 1.1 (the "License"); you may not use this file except in compliance with
      7  * the License. You may obtain a copy of the License at
      8  * http://www.mozilla.org/MPL/
      9  *
     10  * Software distributed under the License is distributed on an "AS IS" basis,
     11  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
     12  * for the specific language governing rights and limitations under the
     13  * License.
     14  *
     15  * The Original Code is mozilla.org code.
     16  *
     17  * The Initial Developer of the Original Code is
     18  * Netscape Communications Corporation.
     19  * Portions created by the Initial Developer are Copyright (C) 1998
     20  * the Initial Developer. All Rights Reserved.
     21  *
     22  * Contributor(s):
     23  *
     24  * Alternatively, the contents of this file may be used under the terms of
     25  * either the GNU General Public License Version 2 or later (the "GPL"), or
     26  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
     27  * in which case the provisions of the GPL or the LGPL are applicable instead
     28  * of those above. If you wish to allow use of your version of this file only
     29  * under the terms of either the GPL or the LGPL, and not to allow others to
     30  * use your version of this file under the terms of the MPL, indicate your
     31  * decision by deleting the provisions above and replace them with the notice
     32  * and other provisions required by the GPL or the LGPL. If you do not delete
     33  * the provisions above, a recipient may use your version of this file under
     34  * the terms of any one of the MPL, the GPL or the LGPL.
     35  *
     36  * ***** END LICENSE BLOCK ***** */
     37 
     38 /*
     39  * JavaScript test library shared functions file for running the tests
     40  * in the browser.  Overrides the shell's print function with document.write
     41  * and make everything HTML pretty.
     42  *
     43  * To run the tests in the browser, use the mkhtml.pl script to generate
     44  * html pages that include the shell.js, browser.js (this file), and the
     45  * test js file in script tags.
     46  *
     47  * The source of the page that is generated should look something like this:
     48  *      <script src="./../shell.js"></script>
     49  *      <script src="./../browser.js"></script>
     50  *      <script src="./mytest.js"></script>
     51  */
     52 function writeLineToLog( string ) {
     53   document.write( string + "<br>\n");
     54 }
     55 
     56 var testcases = new Array();
     57 var tc = testcases.length;
     58 var bug = '';
     59 var summary = '';
     60 var description = '';
     61 var expected = '';
     62 var actual = '';
     63 var msg = '';
     64 
     65 
     66 function TestCase(n, d, e, a)
     67 {
     68   this.path = (typeof gTestPath == 'undefined') ? '' : gTestPath;
     69   this.name = n;
     70   this.description = d;
     71   this.expect = e;
     72   this.actual = a;
     73   this.passed = ( e == a );
     74   this.reason = '';
     75   this.bugnumber = typeof(bug) != 'undefined' ? bug : '';
     76   testcases[tc++] = this;
     77 }
     78 
     79 var gInReportCompare = false;
     80 
     81 var _reportCompare = reportCompare;
     82 
     83 reportCompare = function(expected, actual, description)
     84 {
     85   gInReportCompare = true;
     86 
     87   var testcase = new TestCase(gTestName, description, expected, actual);
     88   testcase.passed = _reportCompare(expected, actual, description);
     89 
     90   gInReportCompare = false;
     91 };
     92 
     93 var _reportFailure = reportFailure;
     94 reportFailure = function (msg, page, line)
     95 {
     96   var testcase;
     97 
     98   if (gInReportCompare)
     99   {
    100     testcase = testcases[tc - 1];
    101     testcase.passed = false;
    102   }
    103   else
    104   {
    105     if (typeof DESCRIPTION == 'undefined')
    106     {
    107       DESCRIPTION = 'Unknown';
    108     }
    109     if (typeof EXPECTED == 'undefined')
    110     {
    111       EXPECTED = 'Unknown';
    112     }
    113     testcase = new TestCase(gTestName, DESCRIPTION, EXPECTED, "error");
    114     if (document.location.href.indexOf('-n.js') != -1)
    115     {
    116       // negative test
    117       testcase.passed = true;
    118     }
    119   }
    120 
    121   testcase.reason += msg;
    122 
    123   if (typeof(page) != 'undefined')
    124   {
    125     testcase.reason += ' Page: ' + page;
    126   }
    127   if (typeof(line) != 'undefined')
    128   {
    129     testcase.reason += ' Line: ' + line;
    130   }
    131   if (!testcase.passed)
    132   {
    133     _reportFailure(msg);
    134   }
    135 
    136 };
    137 
    138 function gc()
    139 {
    140 }
    141 
    142 function quit()
    143 {
    144 }
    145 
    146 window.onerror = reportFailure;
    147 
    148