initial import
[vuplus_webkit] / Source / JavaScriptCore / tests / mozilla / js1_4 / shell.js
1 var completed = false;
2 var     testcases;
3 var tc = 0;
4
5 SECTION = "";
6 VERSION = "";
7 BUGNUMBER =     "";
8
9 var     GLOBAL = "[object global]";
10 var PASSED = " PASSED!"
11 var FAILED = " FAILED! expected: ";
12
13 function test() {
14     for ( tc=0; tc < testcases.length; tc++ ) {
15         testcases[tc].passed = writeTestCaseResult(
16                             testcases[tc].expect,
17                             testcases[tc].actual,
18                             testcases[tc].description +" = "+
19                             testcases[tc].actual );
20
21         testcases[tc].reason += ( testcases[tc].passed ) ? "" : "wrong value ";
22     }
23     stopTest();
24     return ( testcases );
25 }
26 /* wrapper for test cas constructor that doesn't require the SECTION
27  * argument.
28  */
29
30 function AddTestCase( description, expect, actual ) {
31     testcases[tc++] = new TestCase( SECTION, description, expect, actual );
32 }
33
34 function TestCase( n, d, e, a ) {
35     this.name        = n;
36     this.description = d;
37     this.expect      = e;
38     this.actual      = a;
39     this.passed      = true;
40     this.reason      = "";
41
42     this.passed = getTestCaseResult( this.expect, this.actual );
43 }
44 function startTest() {
45 /*
46     //  JavaScript 1.3 is supposed to be compliant ecma version 1.0
47     if ( VERSION == "ECMA_1" ) {
48         version ( 130 );
49     }
50     if ( VERSION == "JS_1.3" ) {
51         version ( 130 );
52     }
53     if ( VERSION == "JS_1.2" ) {
54         version ( 120 );
55     }
56     if ( VERSION  == "JS_1.1" ) {
57         version ( 110 );
58     }
59     // for ecma version 2.0, we will leave the javascript version to
60     // the default ( for now ).
61 */
62
63     if ( BUGNUMBER ) {
64             writeLineToLog ("BUGNUMBER: " + BUGNUMBER );
65     }
66
67     testcases = new Array();
68     tc = 0;
69 }
70 function getTestCaseResult( expect, actual ) {
71     //  because ( NaN == NaN ) always returns false, need to do
72     //  a special compare to see if we got the right result.
73         if ( actual != actual ) {
74             if ( typeof actual == "object" ) {
75                 actual = "NaN object";
76             } else {
77                 actual = "NaN number";
78             }
79         }
80         if ( expect != expect ) {
81             if ( typeof expect == "object" ) {
82                 expect = "NaN object";
83             } else {
84                 expect = "NaN number";
85             }
86         }
87
88         var passed = ( expect == actual ) ? true : false;
89
90     //  if both objects are numbers, give a little leeway for rounding.
91         if (    !passed
92                 && typeof(actual) == "number"
93                 && typeof(expect) == "number"
94             ) {
95                 if ( Math.abs(actual-expect) < 0.0000001 ) {
96                     passed = true;
97                 }
98         }
99
100     //  verify type is the same
101         if ( typeof(expect) != typeof(actual) ) {
102             passed = false;
103         }
104
105         return passed;
106 }
107 /*
108  * Begin printing functions.  These functions use the shell's
109  * print function.  When running tests in the browser, these
110  * functions, override these functions with functions that use
111  * document.write.
112  */
113
114 function writeTestCaseResult( expect, actual, string ) {
115                 var     passed = getTestCaseResult(     expect, actual );
116                 writeFormattedResult( expect, actual, string, passed );
117                 return passed;
118 }
119 function writeFormattedResult( expect, actual, string, passed ) {
120         var s = string ;
121         s += ( passed ) ? PASSED : FAILED + expect;
122         writeLineToLog( s);
123         return passed;
124 }
125 function writeLineToLog( string ) {
126         print( string );
127 }
128 function writeHeaderToLog( string )     {
129         print( string );
130 }
131 /* end of print functions */
132
133 function stopTest() {
134    var gc;
135    if ( gc != undefined ) {
136         gc();
137    }
138 }