]> git.saurik.com Git - apple/javascriptcore.git/blob - tests/mozilla/js1_5/Object/regress-96284-002.js
JavaScriptCore-7601.1.46.3.tar.gz
[apple/javascriptcore.git] / tests / mozilla / js1_5 / Object / regress-96284-002.js
1 /*
2 * The contents of this file are subject to the Netscape Public
3 * License Version 1.1 (the "License"); you may not use this file
4 * except in compliance with the License. You may obtain a copy of
5 * the License at http://www.mozilla.org/NPL/
6 *
7 * Software distributed under the License is distributed on an "AS
8 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
9 * implied. See the License for the specific language governing
10 * rights and limitations under the License.
11 *
12 * The Original Code is mozilla.org code.
13 *
14 * The Initial Developer of the Original Code is Netscape
15 * Communications Corporation. Portions created by Netscape are
16 * Copyright (C) 1998 Netscape Communications Corporation.
17 * All Rights Reserved.
18 *
19 * Contributor(s): pschwartau@netscape.com
20 * Date: 03 September 2001
21 *
22 * SUMMARY: Double quotes should be escaped in uneval(new Error('""'))
23 * See http://bugzilla.mozilla.org/show_bug.cgi?id=96284
24 *
25 * The real point here is this: we should be able to reconstruct an object
26 * obj from uneval(obj). We'll test this on various types of objects.
27 *
28 * Method: define obj2 = eval(uneval(obj1)) and verify that
29 * obj2.toSource() == obj1.toSource().
30 */
31 //-----------------------------------------------------------------------------
32 var UBound = 0;
33 var bug = 96284;
34 var summary = 'Double quotes should be escaped in Error.prototype.toSource()';
35 var status = '';
36 var statusitems = [];
37 var actual = '';
38 var actualvalues = [];
39 var expect= '';
40 var expectedvalues = [];
41 var obj1 = {};
42 var obj2 = {};
43 var cnTestString = '"This is a \" STUPID \" test string!!!"\\';
44
45
46 // various NativeError objects -
47 status = inSection(1);
48 obj1 = Error(cnTestString);
49 obj2 = eval(uneval(obj1));
50 actual = obj2.toSource();
51 expect = obj1.toSource();
52 addThis();
53
54 status = inSection(2);
55 obj1 = EvalError(cnTestString);
56 obj2 = eval(uneval(obj1));
57 actual = obj2.toSource();
58 expect = obj1.toSource();
59 addThis();
60
61 status = inSection(3);
62 obj1 = RangeError(cnTestString);
63 obj2 = eval(uneval(obj1));
64 actual = obj2.toSource();
65 expect = obj1.toSource();
66 addThis();
67
68 status = inSection(4);
69 obj1 = ReferenceError(cnTestString);
70 obj2 = eval(uneval(obj1));
71 actual = obj2.toSource();
72 expect = obj1.toSource();
73 addThis();
74
75 status = inSection(5);
76 obj1 = SyntaxError(cnTestString);
77 obj2 = eval(uneval(obj1));
78 actual = obj2.toSource();
79 expect = obj1.toSource();
80 addThis();
81
82 status = inSection(6);
83 obj1 = TypeError(cnTestString);
84 obj2 = eval(uneval(obj1));
85 actual = obj2.toSource();
86 expect = obj1.toSource();
87 addThis();
88
89 status = inSection(7);
90 obj1 = URIError(cnTestString);
91 obj2 = eval(uneval(obj1));
92 actual = obj2.toSource();
93 expect = obj1.toSource();
94 addThis();
95
96
97 // other types of objects -
98 status = inSection(8);
99 obj1 = new String(cnTestString);
100 obj2 = eval(uneval(obj1));
101 actual = obj2.toSource();
102 expect = obj1.toSource();
103 addThis();
104
105 status = inSection(9);
106 obj1 = {color:'red', texture:cnTestString, hasOwnProperty:42};
107 obj2 = eval(uneval(obj1));
108 actual = obj2.toSource();
109 expect = obj1.toSource();
110 addThis();
111
112 status = inSection(10);
113 obj1 = function(x) {function g(y){return y+1;} return g(x);};
114 obj2 = eval(uneval(obj1));
115 actual = obj2.toSource();
116 expect = obj1.toSource();
117 addThis();
118
119 status = inSection(11);
120 obj1 = new Number(eval('6'));
121 obj2 = eval(uneval(obj1));
122 actual = obj2.toSource();
123 expect = obj1.toSource();
124 addThis();
125
126 status = inSection(12);
127 obj1 = /ad;(lf)kj(2309\/\/)\/\//;
128 obj2 = eval(uneval(obj1));
129 actual = obj2.toSource();
130 expect = obj1.toSource();
131 addThis();
132
133
134
135 //-----------------------------------------------------------------------------
136 test();
137 //-----------------------------------------------------------------------------
138
139
140 function addThis()
141 {
142 statusitems[UBound] = status;
143 actualvalues[UBound] = actual;
144 expectedvalues[UBound] = expect;
145 UBound++;
146 }
147
148
149 function test()
150 {
151 enterFunc ('test');
152 printBugNumber (bug);
153 printStatus (summary);
154
155 for (var i = 0; i < UBound; i++)
156 {
157 reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]);
158 }
159
160 exitFunc ('test');
161 }