OLD | NEW |
| (Empty) |
1 // Copyright (c) 2014, 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 | |
5 /// Tests for [minArgs] and [maxArgs]. | |
6 library smoke.test.args_test; | |
7 | |
8 import 'package:smoke/smoke.dart' show minArgs, maxArgs, SUPPORTED_ARGS; | |
9 import 'package:unittest/unittest.dart'; | |
10 | |
11 main() { | |
12 var a = new A(); | |
13 var instanceMethods = [ a.m1, a.m2, a.m3, a.m4, a.m5, a.m6, a.m7, a.m8, a.m9, | |
14 a.m10, a.m11, a.m12, a.m13, a.m14, a.m15, a.m16, a.m17, a.m18, a.m19, | |
15 a.m20, a.m21]; | |
16 group('instance methods', () => checkMethods(instanceMethods)); | |
17 group('static methods', () => checkMethods(staticMethods)); | |
18 group('closures', () => checkMethods(closures)); | |
19 group('top level methods', () => checkMethods(topLevelMethods)); | |
20 } | |
21 | |
22 checkMethods(List methods) { | |
23 test('min args', () { | |
24 expect(methods.map((m) => minArgs(m)), expectedMin); | |
25 }); | |
26 | |
27 test('max args', () { | |
28 expect(methods.map((m) => maxArgs(m)), expectedMax); | |
29 }); | |
30 } | |
31 | |
32 class A { | |
33 // required args only | |
34 static s1() {} | |
35 static s2(p1) {} | |
36 static s3(p1, p2) {} | |
37 static s4(p1, p2, p3) {} | |
38 static s5(p1, p2, p3, p4) {} | |
39 static s6(p1, p2, p3, p4, p5) {} | |
40 | |
41 // optional args only | |
42 static s7([o1]) {} | |
43 static s8([o1, o2]) {} | |
44 static s9([o1, o2, o3]) {} | |
45 static s10([o1, o2, o3, o4]) {} | |
46 static s11([o1, o2, o3, o4, o5]) {} | |
47 | |
48 // 1 required, some optional | |
49 static s12(p1, [o2]) {} | |
50 static s13(p1, [o2, o3]) {} | |
51 static s14(p1, [o2, o3, o4]) {} | |
52 static s15(p1, [o2, o3, o4, o5]) {} | |
53 | |
54 // 2 required, some optional | |
55 static s16(p1, p2, [o3]) {} | |
56 static s17(p1, p2, [o3, o4]) {} | |
57 static s18(p1, p2, [o3, o4, o5]) {} | |
58 | |
59 // 3 required, some optional | |
60 static s19(p1, p2, p3, [o4]) {} | |
61 static s20(p1, p2, p3, [o4, o5]) {} | |
62 | |
63 // 4 required, some optional | |
64 static s21(p1, p2, p3, p4, [o5]) {} | |
65 | |
66 m1() {} | |
67 m2(p1) {} | |
68 m3(p1, p2) {} | |
69 m4(p1, p2, p3) {} | |
70 m5(p1, p2, p3, p4) {} | |
71 m6(p1, p2, p3, p4, p5) {} | |
72 m7([o1]) {} | |
73 m8([o1, o2]) {} | |
74 m9([o1, o2, o3]) {} | |
75 m10([o1, o2, o3, o4]) {} | |
76 m11([o1, o2, o3, o4, o5]) {} | |
77 m12(p1, [o2]) {} | |
78 m13(p1, [o2, o3]) {} | |
79 m14(p1, [o2, o3, o4]) {} | |
80 m15(p1, [o2, o3, o4, o5]) {} | |
81 m16(p1, p2, [o3]) {} | |
82 m17(p1, p2, [o3, o4]) {} | |
83 m18(p1, p2, [o3, o4, o5]) {} | |
84 m19(p1, p2, p3, [o4]) {} | |
85 m20(p1, p2, p3, [o4, o5]) {} | |
86 m21(p1, p2, p3, p4, [o5]) {} | |
87 } | |
88 | |
89 t1() {} | |
90 t2(p1) {} | |
91 t3(p1, p2) {} | |
92 t4(p1, p2, p3) {} | |
93 t5(p1, p2, p3, p4) {} | |
94 t6(p1, p2, p3, p4, p5) {} | |
95 t7([o1]) {} | |
96 t8([o1, o2]) {} | |
97 t9([o1, o2, o3]) {} | |
98 t10([o1, o2, o3, o4]) {} | |
99 t11([o1, o2, o3, o4, o5]) {} | |
100 t12(p1, [o2]) {} | |
101 t13(p1, [o2, o3]) {} | |
102 t14(p1, [o2, o3, o4]) {} | |
103 t15(p1, [o2, o3, o4, o5]) {} | |
104 t16(p1, p2, [o3]) {} | |
105 t17(p1, p2, [o3, o4]) {} | |
106 t18(p1, p2, [o3, o4, o5]) {} | |
107 t19(p1, p2, p3, [o4]) {} | |
108 t20(p1, p2, p3, [o4, o5]) {} | |
109 t21(p1, p2, p3, p4, [o5]) {} | |
110 | |
111 List closures = [ | |
112 () {}, | |
113 (p1) {}, | |
114 (p1, p2) {}, | |
115 (p1, p2, p3) {}, | |
116 (p1, p2, p3, p4) {}, | |
117 (p1, p2, p3, p4, p5) {}, | |
118 ([o1]) {}, | |
119 ([o1, o2]) {}, | |
120 ([o1, o2, o3]) {}, | |
121 ([o1, o2, o3, o4]) {}, | |
122 ([o1, o2, o3, o4, o5]) {}, | |
123 (p1, [o2]) {}, | |
124 (p1, [o2, o3]) {}, | |
125 (p1, [o2, o3, o4]) {}, | |
126 (p1, [o2, o3, o4, o5]) {}, | |
127 (p1, p2, [o3]) {}, | |
128 (p1, p2, [o3, o4]) {}, | |
129 (p1, p2, [o3, o4, o5]) {}, | |
130 (p1, p2, p3, [o4]) {}, | |
131 (p1, p2, p3, [o4, o5]) {}, | |
132 (p1, p2, p3, p4, [o5]) {}, | |
133 ]; | |
134 | |
135 List staticMethods = [ A.s1, A.s2, A.s3, A.s4, A.s5, A.s6, A.s7, A.s8, A.s9, | |
136 A.s10, A.s11, A.s12, A.s13, A.s14, A.s15, A.s16, A.s17, A.s18, A.s19, | |
137 A.s20, A.s21]; | |
138 | |
139 List topLevelMethods = [ t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, | |
140 t13, t14, t15, t16, t17, t18, t19, t20, t21]; | |
141 | |
142 const MIN_NOT_KNOWN = SUPPORTED_ARGS + 1; | |
143 List expectedMin = const [ | |
144 0, 1, 2, 3, MIN_NOT_KNOWN, MIN_NOT_KNOWN, // required only | |
145 0, 0, 0, 0, 0, // optional only | |
146 1, 1, 1, 1, // 1 required | |
147 2, 2, 2, // 2 required | |
148 3, 3, // 3 required | |
149 MIN_NOT_KNOWN // 4 required | |
150 ]; | |
151 | |
152 const MAX_NOT_KNOWN = -1; | |
153 List expectedMax = const [ | |
154 0, 1, 2, 3, MAX_NOT_KNOWN, MAX_NOT_KNOWN, // required only | |
155 1, 2, 3, 3, 3, // optional only | |
156 2, 3, 3, 3, // 1 required | |
157 3, 3, 3, // 2 required | |
158 3, 3, // 3 required | |
159 MAX_NOT_KNOWN // 4 required | |
160 ]; | |
OLD | NEW |