OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | |
2 // for details. All rights reserved. Use of this source code is governed by a | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 // Dart test program to test arithmetic operations. | |
5 // @static-clean | |
6 | |
7 class A { | |
8 static foo() => 499; | |
9 } | |
10 | |
11 bool throwsNoSuchMethod(f) { | |
12 try { | |
13 f(); | |
14 return false; | |
15 } catch(NoSuchMethodException e) { | |
16 return true; | |
17 } | |
18 return false; | |
19 } | |
20 | |
21 bool throwsBecauseOfBadArgument(f) { | |
22 try { | |
23 f(); | |
24 return false; | |
25 } catch(NoSuchMethodException e) { | |
26 return true; | |
27 } catch(IllegalArgumentException e) { | |
28 return true; | |
29 } catch(NullPointerException e) { | |
30 return true; | |
31 } catch (TypeError e) { | |
32 // In type checked mode. | |
33 return true; | |
34 } | |
35 return false; | |
36 } | |
37 | |
38 numberOpBadSecondArgument(f) { | |
39 Expect.isTrue(throwsBecauseOfBadArgument(() => f(true))); | |
40 Expect.isTrue(throwsBecauseOfBadArgument(() => f(new A()))); | |
41 Expect.isTrue(throwsBecauseOfBadArgument(() => f("foo"))); | |
42 Expect.isTrue(throwsBecauseOfBadArgument(() => f("5"))); | |
43 Expect.isTrue(throwsBecauseOfBadArgument(() => f(() => 499))); | |
44 Expect.isTrue(throwsBecauseOfBadArgument(() => f(null))); | |
45 Expect.isTrue(throwsBecauseOfBadArgument(() => f(false))); | |
46 Expect.isTrue(throwsBecauseOfBadArgument(() => f([]))); | |
47 Expect.isTrue(throwsBecauseOfBadArgument(() => f({}))); | |
48 Expect.isTrue(throwsBecauseOfBadArgument(() => f(A.foo))); | |
49 } | |
50 | |
51 badOperations(b) { | |
52 Expect.isTrue(throwsNoSuchMethod(() => b - 3)); | |
53 Expect.isTrue(throwsNoSuchMethod(() => b * 3)); | |
54 Expect.isTrue(throwsNoSuchMethod(() => b ~/ 3)); | |
55 Expect.isTrue(throwsNoSuchMethod(() => b / 3)); | |
56 Expect.isTrue(throwsNoSuchMethod(() => b % 3)); | |
57 Expect.isTrue(throwsNoSuchMethod(() => b + 3)); | |
58 Expect.isTrue(throwsNoSuchMethod(() => b[3])); | |
59 Expect.isTrue(throwsNoSuchMethod(() => ~b)); | |
60 Expect.isTrue(throwsNoSuchMethod(() => -b)); | |
61 } | |
62 | |
63 main() { | |
64 numberOpBadSecondArgument((x) => 3 + x); | |
65 numberOpBadSecondArgument((x) => 3 - x); | |
66 numberOpBadSecondArgument((x) => 3 * x); | |
67 numberOpBadSecondArgument((x) => 3 / x); | |
68 numberOpBadSecondArgument((x) => 3 ~/ x); | |
69 numberOpBadSecondArgument((x) => 3 % x); | |
70 badOperations(true); | |
71 badOperations(false); | |
72 badOperations(() => 499); | |
73 badOperations(A.foo); | |
74 } | |
OLD | NEW |