From afc8c28df2a6616b0d7a5d2a345b3dbafa56627d Mon Sep 17 00:00:00 2001 From: "bclary%bclary.com" Date: Wed, 2 May 2007 16:43:32 +0000 Subject: [PATCH] JavaScript Tests - add js1_8 suite for features not shipping on the 1.8.1 branch, no bug, not part of the build git-svn-id: svn://10.0.0.236/trunk@225461 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/js/tests/js1_8/README | 1 + mozilla/js/tests/js1_8/browser.js | 470 +++++++++++++++++ .../js/tests/js1_8/decompilation/browser.js | 0 mozilla/js/tests/js1_8/decompilation/shell.js | 0 mozilla/js/tests/js1_8/extensions/browser.js | 0 mozilla/js/tests/js1_8/extensions/shell.js | 0 mozilla/js/tests/js1_8/regress/browser.js | 0 mozilla/js/tests/js1_8/regress/shell.js | 0 mozilla/js/tests/js1_8/shell.js | 475 ++++++++++++++++++ mozilla/js/tests/js1_8/template.js | 57 +++ 10 files changed, 1003 insertions(+) create mode 100755 mozilla/js/tests/js1_8/README create mode 100755 mozilla/js/tests/js1_8/browser.js create mode 100644 mozilla/js/tests/js1_8/decompilation/browser.js create mode 100644 mozilla/js/tests/js1_8/decompilation/shell.js create mode 100644 mozilla/js/tests/js1_8/extensions/browser.js create mode 100644 mozilla/js/tests/js1_8/extensions/shell.js create mode 100644 mozilla/js/tests/js1_8/regress/browser.js create mode 100644 mozilla/js/tests/js1_8/regress/shell.js create mode 100644 mozilla/js/tests/js1_8/shell.js create mode 100755 mozilla/js/tests/js1_8/template.js diff --git a/mozilla/js/tests/js1_8/README b/mozilla/js/tests/js1_8/README new file mode 100755 index 00000000000..3dc2f56a9ec --- /dev/null +++ b/mozilla/js/tests/js1_8/README @@ -0,0 +1 @@ +JavaScript 1.8 diff --git a/mozilla/js/tests/js1_8/browser.js b/mozilla/js/tests/js1_8/browser.js new file mode 100755 index 00000000000..b027c24d7ef --- /dev/null +++ b/mozilla/js/tests/js1_8/browser.js @@ -0,0 +1,470 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is mozilla.org code. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +/* + * JavaScript test library shared functions file for running the tests + * in the browser. Overrides the shell's print function with document.write + * and make everything HTML pretty. + * + * To run the tests in the browser, use the mkhtml.pl script to generate + * html pages that include the shell.js, browser.js (this file), and the + * test js file in script tags. + * + * The source of the page that is generated should look something like this: + * + * + * + */ + +function htmlesc(str) { + if (str == '<') + return '<'; + if (str == '>') + return '>'; + if (str == '&') + return '&'; + return str; +} + +function DocumentWrite(s) +{ + try + { + var msgDiv = document.createElement('div'); + msgDiv.innerHTML = s; + document.body.appendChild(msgDiv); + msgDiv = null; + } + catch(excp) + { + document.write(s + '
\n'); + } +} + +function print() { + var s = ''; + var a; + for (var i = 0; i < arguments.length; i++) + { + a = arguments[i]; + s += String(a) + ' '; + } + + if (typeof dump == 'function') + { + dump( s + '\n'); + } + + s = s.replace(/[<>&]/g, htmlesc); + + DocumentWrite(s); +} + +var testcases = new Array(); +var tc = testcases.length; +var bug = ''; +var summary = ''; +var description = ''; +var expected = ''; +var actual = ''; +var msg = ''; + + +function TestCase(n, d, e, a) +{ + this.path = (typeof gTestPath == 'undefined') ? '' : gTestPath; + this.name = n; + this.description = d; + this.expect = e; + this.actual = a; + this.passed = ( e == a ); + this.reason = ''; + this.bugnumber = typeof(bug) != 'undefined' ? bug : ''; + testcases[tc++] = this; +} + +var gInReportCompare = false; + +var _reportCompare = reportCompare; + +reportCompare = function(expected, actual, description) +{ + gInReportCompare = true; + + var testcase = new TestCase(gTestName, description, expected, actual); + testcase.passed = _reportCompare(expected, actual, description); + + gInReportCompare = false; +}; + +var _reportFailure = reportFailure; +reportFailure = function (msg, page, line) +{ + var testcase; + + optionsPush(); + + if (gInReportCompare) + { + testcase = testcases[tc - 1]; + testcase.passed = false; + } + else + { + if (typeof DESCRIPTION == 'undefined') + { + DESCRIPTION = 'Unknown'; + } + if (typeof EXPECTED == 'undefined') + { + EXPECTED = 'Unknown'; + } + testcase = new TestCase(gTestName, DESCRIPTION, EXPECTED, "error"); + if (document.location.href.indexOf('-n.js') != -1) + { + // negative test + testcase.passed = true; + } + } + + testcase.reason += msg; + + if (typeof(page) != 'undefined') + { + testcase.reason += ' Page: ' + page; + } + if (typeof(line) != 'undefined') + { + testcase.reason += ' Line: ' + line; + } + if (!testcase.passed) + { + _reportFailure(msg); + } + + gDelayTestDriverEnd = false; + jsTestDriverEnd(); + + optionsReset(); +}; + +function gc() +{ + // Thanks to igor.bukanov@gmail.com + for (var i = 0; i != 100000; ++i) + { + var tmp = new Object(); + } +} + +function jsdgc() +{ + try + { + // Thanks to dveditz + netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); + var jsdIDebuggerService = Components.interfaces.jsdIDebuggerService; + var service = Components.classes['@mozilla.org/js/jsd/debugger-service;1']. + getService(jsdIDebuggerService); + service.GC(); + } + catch(ex) + { + print('gc: ' + ex); + } +} + +function quit() +{ +} + +window.onerror = reportFailure; + +function Preferences(aPrefRoot) +{ + try + { + this.orig = {}; + this.privs = 'UniversalXPConnect UniversalPreferencesRead ' + + 'UniversalPreferencesWrite'; + + if (typeof netscape != 'undefined' && + 'security' in netscape && + 'PrivilegeManager' in netscape.security && + 'enablePrivilege' in netscape.security.PrivilegeManager) + { + netscape.security.PrivilegeManager.enablePrivilege(this.privs); + } + + const nsIPrefService = Components.interfaces.nsIPrefService; + const nsIPrefBranch = Components.interfaces.nsIPrefBranch; + const nsPrefService_CONTRACTID = "@mozilla.org/preferences-service;1"; + + this.prefRoot = aPrefRoot; + this.prefService = Components.classes[nsPrefService_CONTRACTID]. + getService(nsIPrefService); + this.prefBranch = this.prefService.getBranch(aPrefRoot). + QueryInterface(Components.interfaces.nsIPrefBranch2); + } + catch(ex) + { + } + +} + +function Preferences_getPrefRoot() +{ + try + { + if (typeof netscape != 'undefined' && + 'security' in netscape && + 'PrivilegeManager' in netscape.security && + 'enablePrivilege' in netscape.security.PrivilegeManager) + { + netscape.security.PrivilegeManager.enablePrivilege(this.privs); + } + + return this.prefBranch.root; + } + catch(ex) + { + return; + } +} + +function Preferences_getPref(aPrefName) +{ + var value; + try + { + if (typeof netscape != 'undefined' && + 'security' in netscape && + 'PrivilegeManager' in netscape.security && + 'enablePrivilege' in netscape.security.PrivilegeManager) + { + netscape.security.PrivilegeManager.enablePrivilege(this.privs); + } + + try + { + value = this.prefBranch.getBoolPref(aPrefName); + } + catch(ex) + { + //print('Ignoring ' + ex); + } + } + catch(ex) + { + } + return value; +} + +function Preferences_setPref(aPrefName, aPrefValue) +{ + try + { + if (typeof netscape != 'undefined' && + 'security' in netscape && + 'PrivilegeManager' in netscape.security && + 'enablePrivilege' in netscape.security.PrivilegeManager) + { + netscape.security.PrivilegeManager.enablePrivilege(this.privs); + } + + if (typeof this.orig[aPrefName] == 'undefined') + { + this.orig[aPrefName] = this.getPref(aPrefName); + } + + try + { + value = this.prefBranch.setBoolPref(aPrefName, aPrefValue); + } + catch(ex) + { + //print('Ignoring ' + ex); + } + } + catch(ex) + { + } +} + +function Preferences_resetPref(aPrefName) +{ + try + { + if (typeof netscape != 'undefined' && + 'security' in netscape && + 'PrivilegeManager' in netscape.security && + 'enablePrivilege' in netscape.security.PrivilegeManager) + { + netscape.security.PrivilegeManager.enablePrivilege(this.privs); + } + + if (aPrefName in this.orig) + { + this.setPref(aPrefName, this.orig[aPrefName]); + } + } + catch(ex) + { + } +} + +function Preferences_resetAllPrefs() +{ + try + { + var prefName; + var prefValue; + + if (typeof netscape != 'undefined' && + 'security' in netscape && + 'PrivilegeManager' in netscape.security && + 'enablePrivilege' in netscape.security.PrivilegeManager) + { + netscape.security.PrivilegeManager.enablePrivilege(this.privs); + } + + for (prefName in this.orig) + { + this.setPref(prefName, this.orig[prefName]); + } + } + catch(ex) + { + } +} + +function Preferences_clearPref(aPrefName) +{ + try + { + if (typeof netscape != 'undefined' && + 'security' in netscape && + 'PrivilegeManager' in netscape.security && + 'enablePrivilege' in netscape.security.PrivilegeManager) + { + netscape.security.PrivilegeManager.enablePrivilege(this.privs); + } + + this.prefBranch.clearUserPref(aPrefName); + } + catch(ex) + { + } +} + +Preferences.prototype.getPrefRoot = Preferences_getPrefRoot; +Preferences.prototype.getPref = Preferences_getPref; +Preferences.prototype.setPref = Preferences_setPref; +Preferences.prototype.resetAllPrefs = Preferences_resetAllPrefs; +Preferences.prototype.resetPref = Preferences_resetPref; +Preferences.prototype.clearPref = Preferences_clearPref; + +function options(aOptionName) +{ + // return value of options() is a comma delimited list + // of the previously set values + + var value = ''; + for (var optionName in options.currvalues) + { + value += optionName + ','; + } + if (value) + { + value = value.substring(0, value.length-1); + } + + if (aOptionName) + { + if (options.currvalues[aOptionName]) + { + // option is set, toggle it to unset + delete options.currvalues[aOptionName]; + options.preferences.setPref(aOptionName, false); + } + else + { + // option is not set, toggle it to set + options.currvalues[aOptionName] = true; + options.preferences.setPref(aOptionName, true); + } + } + + return value; +} + +function optionsInit() { + + // hash containing the set options + options.currvalues = {strict: '', + werror: '', + atline: '', + xml: '', + relimit: '', + anonfunfux: '' + } + + // record initial values to support resetting + // options to their initial values + options.initvalues = {}; + + // record values in a stack to support pushing + // and popping options + options.stackvalues = []; + + options.preferences = new Preferences('javascript.options.'); + + for (var optionName in options.currvalues) + { + if (!options.preferences.getPref(optionName)) + { + delete options.currvalues[optionName]; + } + else + { + options.initvalues[optionName] = ''; + } + } +} + +optionsInit(); +optionsClear(); diff --git a/mozilla/js/tests/js1_8/decompilation/browser.js b/mozilla/js/tests/js1_8/decompilation/browser.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/mozilla/js/tests/js1_8/decompilation/shell.js b/mozilla/js/tests/js1_8/decompilation/shell.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/mozilla/js/tests/js1_8/extensions/browser.js b/mozilla/js/tests/js1_8/extensions/browser.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/mozilla/js/tests/js1_8/extensions/shell.js b/mozilla/js/tests/js1_8/extensions/shell.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/mozilla/js/tests/js1_8/regress/browser.js b/mozilla/js/tests/js1_8/regress/browser.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/mozilla/js/tests/js1_8/regress/shell.js b/mozilla/js/tests/js1_8/regress/shell.js new file mode 100644 index 00000000000..e69de29bb2d diff --git a/mozilla/js/tests/js1_8/shell.js b/mozilla/js/tests/js1_8/shell.js new file mode 100644 index 00000000000..a0a02e4bf1d --- /dev/null +++ b/mozilla/js/tests/js1_8/shell.js @@ -0,0 +1,475 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- + * + * ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Mozilla Communicator client code, released + * March 31, 1998. + * + * The Initial Developer of the Original Code is + * Netscape Communications Corporation. + * Portions created by the Initial Developer are Copyright (C) 1998 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Rob Ginda rginda@netscape.com + * Bob Clary bob@bclary.com + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +// explicitly turn on js17 +if (typeof version != 'undefined') +{ + version(170); +} + +var FAILED = "FAILED!: "; +var STATUS = "STATUS: "; +var BUGNUMBER = "BUGNUMBER: "; +var VERBOSE = false; +var SECT_PREFIX = 'Section '; +var SECT_SUFFIX = ' of test -'; +var callStack = new Array(); + +/* + * The test driver searches for such a phrase in the test output. + * If such phrase exists, it will set n as the expected exit code. + */ +function expectExitCode(n) +{ + + print('--- NOTE: IN THIS TESTCASE, WE EXPECT EXIT CODE ' + n + ' ---'); + +} + +/* + * Statuses current section of a test + */ +function inSection(x) +{ + + return SECT_PREFIX + x + SECT_SUFFIX; + +} + +/* + * Some tests need to know if we are in Rhino as opposed to SpiderMonkey + */ +function inRhino() +{ + return (typeof defineClass == "function"); +} + +/* + * Report a failure in the 'accepted' manner + */ +function reportFailure (msg) +{ + var lines = msg.split ("\n"); + var l; + var funcName = currentFunc(); + var prefix = (funcName) ? "[reported from " + funcName + "] ": ""; + + for (var i=0; i 2) + { + var lr = new LinearRegression(data); + if (lr.b > 1e-6) + { + // only increase the order if the slope + // is "great" enough + order++; + } + + if (lr.r > 0.98 || lr.Syx < 1 || lr.b < 1e-6) + { + // terminate if close to a line lr.r + // small error lr.Syx + // small slope lr.b + break; + } + data = dataDeriv(data); + } + + if (2 == origLength - order) + { + order = Number.POSITIVE_INFINITY; + } + return order; + + function LinearRegression(data) + { + /* + y = a + bx + for data points (Xi, Yi); 0 <= i < n + + b = (n*SUM(XiYi) - SUM(Xi)*SUM(Yi))/(n*SUM(Xi*Xi) - SUM(Xi)*SUM(Xi)) + a = (SUM(Yi) - b*SUM(Xi))/n + */ + var i; + + if (data.X.length != data.Y.length) + { + throw 'LinearRegression: data point length mismatch'; + } + if (data.X.length < 3) + { + throw 'LinearRegression: data point length < 2'; + } + var n = data.X.length; + var X = data.X; + var Y = data.Y; + + this.Xavg = 0; + this.Yavg = 0; + + var SUM_X = 0; + var SUM_XY = 0; + var SUM_XX = 0; + var SUM_Y = 0; + var SUM_YY = 0; + + for (i = 0; i < n; i++) + { + SUM_X += X[i]; + SUM_XY += X[i]*Y[i]; + SUM_XX += X[i]*X[i]; + SUM_Y += Y[i]; + SUM_YY += Y[i]*Y[i]; + } + + this.b = (n * SUM_XY - SUM_X * SUM_Y)/(n * SUM_XX - SUM_X * SUM_X); + this.a = (SUM_Y - this.b * SUM_X)/n; + + this.Xavg = SUM_X/n; + this.Yavg = SUM_Y/n; + + var SUM_Ydiff2 = 0; + var SUM_Xdiff2 = 0; + var SUM_XdiffYdiff = 0; + + for (i = 0; i < n; i++) + { + var Ydiff = Y[i] - this.Yavg; + var Xdiff = X[i] - this.Xavg; + + SUM_Ydiff2 += Ydiff * Ydiff; + SUM_Xdiff2 += Xdiff * Xdiff; + SUM_XdiffYdiff += Xdiff * Ydiff; + } + + var Syx2 = (SUM_Ydiff2 - Math.pow(SUM_XdiffYdiff/SUM_Xdiff2, 2))/(n - 2); + var r2 = Math.pow((n*SUM_XY - SUM_X * SUM_Y), 2) / + ((n*SUM_XX - SUM_X*SUM_X)*(n*SUM_YY-SUM_Y*SUM_Y)); + + this.Syx = Math.sqrt(Syx2); + this.r = Math.sqrt(r2); + + } + + function dataDeriv(data) + { + if (data.X.length != data.Y.length) + { + throw 'length mismatch'; + } + var length = data.X.length; + + if (length < 2) + { + throw 'length ' + length + ' must be >= 2'; + } + var X = data.X; + var Y = data.Y; + + var deriv = {X: [], Y: [] }; + + for (var i = 0; i < length - 1; i++) + { + deriv.X[i] = (X[i] + X[i+1])/2; + deriv.Y[i] = (Y[i+1] - Y[i])/(X[i+1] - X[i]); + } + return deriv; + } + +} + +function compareSource(expect, actual, summary) +{ + // compare source + var expectP = expect. + replace(/([(){},.:\[\]])/mg, ' $1 '). + replace(/(\w+)/mg, ' $1 '). + replace(/<(\/)? (\w+) (\/)?>/mg, '<$1$2$3>'). + replace(/\s+/mg, ' '). + replace(/new (\w+)\s*\(\s*\)/mg, 'new $1'); + + var actualP = actual. + replace(/([(){},.:\[\]])/mg, ' $1 '). + replace(/(\w+)/mg, ' $1 '). + replace(/<(\/)? (\w+) (\/)?>/mg, '<$1$2$3>'). + replace(/\s+/mg, ' '). + replace(/new (\w+)\s*\(\s*\)/mg, 'new $1'); + + print('expect:\n' + expectP); + print('actual:\n' + actualP); + + reportCompare(expectP, actualP, summary + ': compare source'); + + // actual must be compilable if expect is? + try + { + var expectCompile = 'No Error'; + var actualCompile; + + eval(expect); + try + { + eval(actual); + actualCompile = 'No Error'; + } + catch(ex1) + { + actualCompile = ex1 + ''; + } + reportCompare(expectCompile, actualCompile, + summary + ': compile actual'); + } + catch(ex) + { + } +} + +function optionsInit() { + + // record initial values to support resetting + // options to their initial values + options.initvalues = {}; + + // record values in a stack to support pushing + // and popping options + options.stackvalues = []; + + var optionNames = options().split(','); + + for (var i = 0; i < optionNames.length; i++) + { + var optionName = optionNames[i]; + if (optionName) + { + options.initvalues[optionName] = ''; + } + } +} + +function optionsClear() { + + // turn off current settings + var optionNames = options().split(','); + for (var i = 0; i < optionNames.length; i++) + { + var optionName = optionNames[i]; + if (optionName) + { + options(optionName); + } + } +} + +function optionsPush() +{ + var optionsframe = {}; + + options.stackvalues.push(optionsframe); + + var optionNames = options().split(','); + + for (var i = 0; i < optionNames.length; i++) + { + var optionName = optionNames[i]; + if (optionName) + { + optionsframe[optionName] = ''; + } + } + + optionsClear(); +} + +function optionsPop() +{ + var optionsframe = options.stackvalues.pop(); + + optionsClear(); + + for (optionName in optionsframe) + { + options(optionName); + } + +} + +function optionsReset() { + + optionsClear(); + + // turn on initial settings + for (optionName in options.initvalues) + { + options(optionName); + } +} + +if (typeof options == 'function') +{ + optionsInit(); + optionsClear(); +} + diff --git a/mozilla/js/tests/js1_8/template.js b/mozilla/js/tests/js1_8/template.js new file mode 100755 index 00000000000..e5a9ca06a0f --- /dev/null +++ b/mozilla/js/tests/js1_8/template.js @@ -0,0 +1,57 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is JavaScript Engine testing utilities. + * + * The Initial Developer of the Original Code is + * Mozilla Foundation. + * Portions created by the Initial Developer are Copyright (C) 2007 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ +//----------------------------------------------------------------------------- +var bug = 99999; +var summary = ''; +var actual = ''; +var expect = ''; + + +//----------------------------------------------------------------------------- +test(); +//----------------------------------------------------------------------------- + +function test() +{ + enterFunc ('test'); + printBugNumber (bug); + printStatus (summary); + + reportCompare(expect, actual, summary); + + exitFunc ('test'); +}