summaryrefslogtreecommitdiffstats
path: root/js/src/tests/js1_5/extensions/regress-50447.js
blob: 32044a8edc4e75b23f81da2d92ed194d93a8669f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
// |reftest| skip -- obsolete test
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


/*
 * SUMMARY: New properties fileName, lineNumber have been added to Error objects
 * in SpiderMonkey. These are non-ECMA extensions and do not exist in Rhino.
 *
 * See http://bugzilla.mozilla.org/show_bug.cgi?id=50447
 */

//-----------------------------------------------------------------------------
var BUGNUMBER = 50447;
var summary = 'Test (non-ECMA) Error object properties fileName, lineNumber';


//-----------------------------------------------------------------------------
test();
//-----------------------------------------------------------------------------


function test()
{
  enterFunc ('test');
  printBugNumber(BUGNUMBER);
  printStatus (summary);

  testRealError();
  test1();
  test2();
  test3();
  test4();

  exitFunc('test');
}


function testRealError()
{
  /* throw a real error, and see what it looks like */
  enterFunc ("testRealError");

  try
  {
    blabla;
  }
  catch (e)
  {
    if (e.fileName.search (/-50447\.js$/i) == -1)
      reportCompare('PASS', 'FAIL',
		    "expected fileName to end with '-50447.js'");

    reportCompare (83, e.lineNumber,
		   "lineNumber property returned unexpected value.");
  }

  exitFunc ("testRealError");
}


function test1()
{
  /* generate an error with msg, file, and lineno properties */
  enterFunc ("test1");

  var e = new InternalError ("msg", "file", 2);
  reportCompare ("(new InternalError(\"msg\", \"file\", 2))",
		 e.toSource(),
		 "toSource() returned unexpected result.");
  reportCompare ("file", e.fileName,
		 "fileName property returned unexpected value.");
  reportCompare (2, e.lineNumber,
		 "lineNumber property returned unexpected value.");

  exitFunc ("test1");
}


function test2()
{
  /* generate an error with only msg property */
  enterFunc ("test2");

  var e = new InternalError ("msg");
  reportCompare ("(new InternalError(\"msg\", \"\"))",
		 e.toSource(),
		 "toSource() returned unexpected result.");
  reportCompare ("", e.fileName,
		 "fileName property returned unexpected value.");
  reportCompare (0, e.lineNumber,
		 "lineNumber property returned unexpected value.");

  exitFunc ("test2");
}


function test3()
{
  /* generate an error with only msg and lineNo properties */
  enterFunc ("test3");

  var e = new InternalError ("msg");
  e.lineNumber = 10;
  reportCompare ("(new InternalError(\"msg\", \"\", 10))",
		 e.toSource(),
		 "toSource() returned unexpected result.");
  reportCompare ("", e.fileName,
		 "fileName property returned unexpected value.");
  reportCompare (10, e.lineNumber,
		 "lineNumber property returned unexpected value.");

  exitFunc ("test3");
}


function test4()
{
  /* generate an error with only msg and filename properties */
  enterFunc ("test4");

  var e = new InternalError ("msg", "file");
  reportCompare ("(new InternalError(\"msg\", \"file\"))",
		 e.toSource(),
		 "toSource() returned unexpected result.");
  reportCompare ("file", e.fileName,
		 "fileName property returned unexpected value.");
  reportCompare (0, e.lineNumber,
		 "lineNumber property returned unexpected value.");

  exitFunc ("test4");
}