OLD | NEW |
| (Empty) |
1 // Copyright 2013 the V8 project authors. All rights reserved. | |
2 // Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. | |
3 // | |
4 // Redistribution and use in source and binary forms, with or without | |
5 // modification, are permitted provided that the following conditions | |
6 // are met: | |
7 // 1. Redistributions of source code must retain the above copyright | |
8 // notice, this list of conditions and the following disclaimer. | |
9 // 2. Redistributions in binary form must reproduce the above copyright | |
10 // notice, this list of conditions and the following disclaimer in the | |
11 // documentation and/or other materials provided with the distribution. | |
12 // | |
13 // THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND AN
Y | |
14 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
15 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | |
16 // DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR AN
Y | |
17 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | |
18 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | |
19 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND O
N | |
20 // ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
21 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | |
22 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
23 | |
24 description("KDE JS Test"); | |
25 // Tests for raising --- and non-raising exceptions on access to reference to un
defined things... | |
26 | |
27 // Locals should throw on access if undefined.. | |
28 fnShouldThrow(function() { a = x; }, ReferenceError); | |
29 | |
30 // Read-modify-write versions of assignment should throw as well | |
31 fnShouldThrow(function() { x += "foo"; }, ReferenceError); | |
32 | |
33 // Other reference types should just return undefined... | |
34 a = new Object(); | |
35 fnShouldNotThrow(function() { b = a.x; }); | |
36 fnShouldNotThrow(function() { b = a['x']; }); | |
37 fnShouldNotThrow(function() { a['x'] += 'baz'; }); | |
38 shouldBe("a['x']", '"undefinedbaz"'); | |
39 fnShouldNotThrow(function() { b = a.y; }); | |
40 fnShouldNotThrow(function() { a.y += 'glarch'; }); | |
41 shouldBe("a['y']", '"undefinedglarch"'); | |
42 | |
43 | |
44 // Helpers! | |
45 function fnShouldThrow(f, exType) | |
46 { | |
47 var exception; | |
48 var _av; | |
49 try { | |
50 _av = f(); | |
51 } catch (e) { | |
52 exception = e; | |
53 } | |
54 | |
55 if (exception) { | |
56 if (typeof exType == "undefined" || exception instanceof exType) | |
57 testPassed(f + " threw exception " + exception + "."); | |
58 else | |
59 testFailed(f + " should throw exception " + exType + ". Threw exception "
+ exception + "."); | |
60 } else if (typeof _av == "undefined") | |
61 testFailed(f + " should throw exception " + exType + ". Was undefined."); | |
62 else | |
63 testFailed(f + " should throw exception " + exType + ". Was " + _av + "."); | |
64 } | |
65 | |
66 function fnShouldNotThrow(f) | |
67 { | |
68 try { | |
69 f(); | |
70 testPassed(f + " did not throw an exception"); | |
71 } catch (e) { | |
72 testFailed(f + " threw an exception " + e + " when no exception expected"); | |
73 } | |
74 } | |
OLD | NEW |