tizen beta release
[framework/web/webkit-efl.git] / LayoutTests / fast / js / script-tests / array-sort-exception.js
1 description(
2 "Test of array sort with toString() override that throws exception."
3 );
4
5 var size = 200;
6 var digits = 3;
7 var exceptionString = 'From toString()';
8 var catchArg = "";
9
10 var a = new Array(size);
11
12 function do_gc() {
13     if (window.GCController)
14         return GCController.collect();
15     
16     for (var i = 0; i < 1000; i++)
17         new String(i);
18 }
19
20 function Item(val) {
21     this.value = val;
22 }
23
24 function toString_throw() {
25     var s = this.value.toString();
26     
27     if (this.value >= size/2)
28         throw(exceptionString);
29     
30     s = ('0000' + s).slice(-digits);
31
32     return s;
33 }
34
35 function test() {
36     for (var i = 0; i < a.length; i++) {
37         a[i] = new Item(a.length - i - 1);
38         a[i].toString = toString_throw;
39     }
40
41     try {
42         a.sort();
43     } catch(err) {
44         catchArg = err;
45         shouldBe("catchArg", "exceptionString");
46
47         do_gc();
48
49         return;
50     }
51     
52     debug('ERROR: Never got toString() exception');
53 }
54
55 test();