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 */
52function writeLineToLog( string ) {
53  document.write( string + "<br>\n");
54}
55
56var testcases = new Array();
57var tc = testcases.length;
58var bug = '';
59var summary = '';
60var description = '';
61var expected = '';
62var actual = '';
63var msg = '';
64
65
66function 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
79var gInReportCompare = false;
80
81var _reportCompare = reportCompare;
82
83reportCompare = 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
93var _reportFailure = reportFailure;
94reportFailure = 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
138function gc()
139{
140}
141
142function quit()
143{
144}
145
146window.onerror = reportFailure;
147
148