merge 99630:99762
[mono.git] / mcs / tests / README.tests
1 Test cases listed by Category:
2 ==============================
3
4 * Operators
5
6   test-146.cs test-175.cs test-200.cs test-204.cs
7
8 * Overloading
9
10   test-147.cs test-173.cs
11
12 * Try/Catch blocks
13
14   verify-1.cs verify-2.cs
15
16 * Indexers and Properties
17
18   test-148.cs test-166.cs test-206.cs test-208.cs test-209.cs
19   test-221.cs test-236.cs
20
21 * Events and Delegates
22
23   test-149.cs test-164.cs test-237.cs verify-3.cs
24
25 * Constant Folding
26
27   test-150.cs
28
29 * Switch blocks
30
31   test-152.cs test-193.cs test-234.cs verify-4.cs
32
33 * Member Access & Simple Names
34
35   test-151.cs test-159.cs test-160.cs test-161.cs test-190.cs
36
37 * Invocation and Casts
38
39   test-153.cs test-163.c test-207.cs test-210.cs test-211.cs test-223.cs
40
41 * Flow Analysis
42
43   test-154.cs test-162.cs test-185.cs
44
45 * Type Containers
46
47   test-155.cs test-156.cs
48
49 * Attributes
50
51   test-157.cs test-158.cs test-177.cs test-230.cs test-238.cs test-239.cs test-240.cs
52
53 * Arrays and array creation
54
55   test-165.cs, test-167.cs, test-232.cs
56
57 * Labels and goto
58
59   verify-5.cs
60
61 * Enums
62
63   verify-6.cs
64
65 * Type resolution and name lookup
66
67   test-198.cs test-201.cs test-202.cs test-203.cs test-214.cs
68
69 Test cases listed by Number:
70 ============================
71
72 test-91.cs
73 ----------
74
75 Tests various permissions sets based on the visiblity flags.
76
77 test-146.cs
78 -----------
79 Test for Binary.EmitBrancheable() to ensure we're emitting correct
80 unsinged branch targets.
81
82 test-147.cs
83 -----------
84 Testing `new' modifier.
85
86 test-148.cs
87 -----------
88 Testing the `IndexerName' attribute in interface indexers.
89
90 test-149.cs
91 -----------
92 Testing interface events.
93
94 test-150.cs
95 -----------
96 Test for folding of UIntConstants.  See bug #28106.
97 FIXME:  We should all all possible test cases to this test.
98
99 test-151.cs
100 -----------
101
102   A.Iface b;
103   void doit (Object A) {
104     b = (A.Iface)A;
105  }
106
107 test-152.cs
108 -----------
109 Scope of variables declared inside a switch case.
110
111 test-153.cs
112 -----------
113 Testing invocation of varargs function.
114
115 test-154.cs
116 -----------
117 Flow analysis: This test contains all situations which are "allowed".
118
119 test-155.cs
120 -----------
121 Nested interfaces.
122
123 test-156.cs
124 -----------
125 Check whether base types are at least as accessible than the current type.
126
127 test-157.cs
128 -----------
129 Attributes.
130
131 test-158.cs
132 -----------
133 Attributes.
134
135 test-159.cs
136 -----------
137 SimpleNameLookup: Cast to `A.Iface' type when there's a parameter called `A'.
138
139 test-160.cs
140 -----------
141 ResolveMemberLookup: `B look; return look.s.a' must work in static context.
142
143 test-161.cs
144 -----------
145 ResolveMemberLookup: Field initializer references `DateTime.Now' when there's
146 an instance property/field `DateTime'.
147
148 test-162.cs
149 -----------
150 Control Flow Analysis wrt. structs.
151
152 test-163.cs
153 -----------
154 Test to check we select string over object when we have a Null literal as the argument.
155
156 test-164.cs
157 -----------
158 Virtual functions in delegate creation expressions.
159
160 test-165.cs
161 -----------
162 Enums in array creation expression.
163
164 test-166.cs
165 -----------
166 Using property from interface which is inherited multiple times.
167
168 test-173.cs
169 -----------
170 Check whether we select the correct function, don't report CS0121
171 for integer literals.
172
173 test-174.cs
174 -----------
175 Checks access to protected properties on base classes, and access to 
176 private properties on container classes.
177
178 test-175.cs
179 -----------
180 Check for user-defined implicit conversions if both arguments of a
181 binary operator are of a user-defined type.  Bug #30443.
182
183 test-176.cs
184 -----------
185 This tests checks that we perform constant folding on byte values.  The
186 compiler had a bug where it did not do so.
187
188 test-177.cs
189 -----------
190 This tests that the compiler is generating "return:" attributes for a 
191 method.  This was a separate code path, and was not handled in the past.
192
193
194 test-178.cs
195 -----------
196 Ensure that we emit attributes only once for operators. Bug #45876
197
198
199 test-179.cs
200 -----------
201 Tests various uses of the indexers in the presence of the `new' keyword
202 and various different argument types.
203
204 test-180.cs
205 -----------
206 This test is part of a bug report in which casting an enumeration value
207 into System.Enum was not wrapped correctly, and the wrong method was
208 called.
209
210 test-181.cs
211 -----------
212 Test whenever mcs correctly handles the MethodImplAttributes
213 custom attribute.
214
215 test-182.cs
216 -----------
217 Tests that bug 37473 is gone.  The problem was that we were generating
218 incorrect code for field references on a value type.  The code was originally
219 written by Martin, but I turned it off as I did not see what it did fix.  The
220 code is now turned on again.  
221
222 test-183.cs
223 -----------
224 This test just verifies that we generate the proper signature for
225 EndInvoke, something that we were not doing before in the presence
226 of out parameters
227
228 test-184.cs
229 -----------
230 This test fixes a bug that exposed a problem when calling a struct
231 constructor that is initialized from an instance constructor
232
233 test-185.cs
234 -----------
235 Flow analysis wrt. infinite loops.  Bug #37708.
236
237 test-186.cs
238 -----------
239 Typecasts were not being constant-folded/reduced, which triggered
240 the bug 37363.   (String) null was not a null constant in attributes.
241
242 test-187.cs
243 -----------
244 This test verifies that we resolve the source expression in a compound
245 expression before we attempt to use it.
246
247 test-188.cs
248 -----------
249 Test that the foreach statement generated by mcs invokes the Dispose()
250 method even if the enumerator class returned by GetEnumerator () does not
251 implement IDisposable.
252
253 test-189.cs
254 -----------
255 Test to ensure proper overload resolution of params method under various cases.
256
257 test-190.cs
258 -----------
259 Accessing private field of outer class from which we derive.
260
261 tests-191.cs
262 ------------
263 Some accessibility tests that exist in Corlib and System, to probe the new
264 functionality in the compiler for accessibility of private nested classes.
265
266 test-192.cs
267 -----------
268 Fix for bug 41952, basically, we were not using the `unchecked' bit during
269 constant resolution due to the nature of EmitMeta.
270
271 test-193.cs
272 -----------
273 Fix for bug 39828, allow goto to a label in another switch section.
274
275 test-194.cs
276 -----------
277 Fix for bug #39108 - ensure that the correct form of a params method is called:
278
279 "explicit conversion of argument to object
280 (type object cannot be implicitly converted to type
281 object[]) affects resolution of normal/expanded form
282 of method invocation."
283
284 test-195.cs
285 -----------
286
287 Fix for bug #45149, constructors that call another constructor in the
288 same class (using ": this()") should not emit instance field initializers. 
289
290 test-196.cs:
291 ------------
292
293 The optimization that we perform in uint & int-constant was triggering a bug
294 because we returned always, when we should have continued the processing if the
295 conditions were not correct.
296
297 test-197.cs
298 -----------
299
300 Fix for bug #42973.
301
302 test-198.cs
303 -----------
304
305 Type resolution and name lookup.  Fixes for bugs #36316, #36314.
306
307 test-199.cs
308 -----------
309
310 Name resolution wrt. inaccessible types.  Fixes bug #36313.
311
312 test-200.cs
313 -----------
314
315 Compound assignment (x = (y += 3)).  Fixes bug #45854.
316
317 test-201.cs
318 -----------
319
320 Fix for bug #35631.
321
322 test-202.cs
323 -----------
324
325 Fix for bug #41975.
326
327 test-203.cs
328 -----------
329
330 Fix for bug #33026.
331
332 test-204.cs
333 -----------
334
335 User defined conditional logical operators; bug #40505.
336
337 test-206.cs
338 -----------
339
340 Indexers; bug #46502.
341
342 test-207.cs
343 -----------
344
345 Expressions which return delegates.
346
347 test-208.cs
348 -----------
349
350 Indexers; bug #46788.
351
352 test-209.cs
353 -----------
354
355 Embedded assignments; while fixing a bug and making a mistake, I discovered some
356 problems during class libs compilation.  Let's just add a testcase for them here.
357
358 test-210.cs
359 -----------
360
361 Cast something to a delegate and then invoke it; bug #46923.
362
363 test-211.cs
364 -----------
365
366 Multiple casts.
367
368 test-212.cs
369 -----------
370
371 Params overload resolution with implicit user conversion
372
373 test-213.cs
374 -----------
375
376 Unboxing struct from interface type; bug #47822.
377
378 test-214.cs
379 -----------
380
381 Namespace lookups; bug #47853.
382
383 test-215.cs
384 -----------
385
386 Namespace lookups; bug #47927.
387
388 test-216.cs:
389 ------------
390 Accessability bug fix #48710 on events
391
392 test-217.cs
393 -----------
394
395 >= and <= operators; bug #48679
396
397 test-218.cs
398 -----------
399 Tests delegate creation inside an array;  This exposed a bug in the
400 fact that New is called for DoResolve twice from array initialization.
401 Bug #48800
402
403 test-219.cs:
404 ------------
405 Tests that we can call typeof(void) in an attribtue delcaration, since
406 we removed previously typeof (System.Void) as a valid way of referencing void.
407
408 test-220.cs:
409 ------------
410 Test for a bug in foreach, where it would pick the wrong GetEnumerator in a class.
411 Bug # was 51446
412
413 test-221.cs:
414 ------------
415 Test for correct scanning for base properties.
416
417 test-222.cs:
418 ------------
419 Compilation test to check overload resolution. We should prefer int->uint over int->ulong.
420
421 test-223.cs:
422 ------------
423 This tests that conversions from Enum and ValueType to structs
424 are treated as unboxing conversions, and the `unbox' opcode
425 is emitted. #52569.
426
427 test-224.cs:
428 ------------
429 This tests the compilation of attributes with array parameters.
430
431 test-229.cs:
432 ------------
433 Test enumerating on:
434 public class List : IEnumerable {
435
436         public MyEnumerator GetEnumerator () {
437                 return new MyEnumerator(this);
438         }
439         
440         IEnumerator IEnumerable.GetEnumerator () {
441                 ...
442         }
443         
444         public struct MyEnumerator : IEnumerator {
445                 ...
446         }
447 }
448
449 test-231.cs:
450 ------------
451 Test for emitting callvirt when we need it.
452
453 test-232.cs:
454 ------------
455 Tests for {...}-style array creation
456
457 test-233.cs:
458 ------------
459 dup of basic-float.cs from mini, for bug 54303.
460
461 test-234.cs:
462 ------------
463 Switch statement on a [Flags] style enum. bug 55885.
464
465 test-236.cs:
466 -----------
467 Test for bug #56300.  DefaultMemberAttribute should not be created if a
468 class has only private interface indexers.
469
470 test-237.cs:
471 -----------
472 Test for bug #56442.  Verify that delegate invocation and normal method
473 invocation act the same when the 'params' keyword is used.
474
475 test-290.cs:
476 -----------
477 Test for bug reported in 
478
479   http://lists.ximian.com/archives/public/mono-devel-list/2004-September/007777.html
480
481 verify-1.cs
482 -----------
483 Test whether we do not jump out of the method in a Try/Finally block.
484
485 verify-2.cs
486 -----------
487 Test whether `return' in a Try/Catch block actually returns.  Test
488 whether continue uses Leave when the branch is across Try/Catch
489 boundaries.
490
491 verify-3.cs
492 -----------
493 Checks default add/remove method of static events.
494
495 verify-4.cs
496 -----------
497 When there's an unreachable break in a switch section, it must not emit a jump out of
498 the method.
499
500 verify-6.cs
501 -----------
502 Casts from/to System.Enum.
503
504 unsafe-6.cs:
505 ------------
506 Tests the correct computation of compound operators in the context of a pointer 
507 dereference on the left side.
508
509 gen-1.cs:
510 ---------
511
512 Simple constructed type.
513
514 gen-2.cs:
515 ---------
516
517 Type parameter as field.
518
519 gen-3.cs:
520 ---------
521
522 Field of constructed type.
523
524 gen-4.cs:
525 ---------
526
527 Method argument of constructed type.
528
529 gen-5.cs:
530 ---------
531
532 Local variable of constructed type.
533
534 gen-6.cs:
535 ---------
536
537 More complex example.
538
539 gen-7.cs:
540 ---------
541
542 Constructed type deriving from a class type.
543
544 gen-8.cs:
545 ---------
546
547 `where' clauses.
548
549 gen-9.cs:
550 ---------
551
552 `where T : ICloneable' and then calling t.Clone ().
553
554 gen-10.cs:
555 ----------
556
557 `where T : I, J' - I is an inferface, J a class.
558
559 gen-15.cs:
560 ----------
561
562 Generic methods.
563
564 2test-1.cs
565 ----------
566 C# 2.0 Iterators: Enumerator and Enumerable with foreach
567
568 2test-2.cs
569 ----------
570 C# 2.0 Iterators: Obtaining the enumerator manually
571
572 2test-3.cs
573 ----------
574 C# 2.0 Iterators: Multi-dimensional arrays as arguments to iterator method
575
576 2test-4.cs
577 ----------
578 C# 2.0 Iterators: Use of a local variable in an enumerator.
579
580 2test-5.cs
581 ----------
582 Method group conversions for C# 2.0
583
584 2test-6.cs
585 ----------
586 Test iterators using foreach where you have to load the address of a struct
587
588 2test-15.cs
589 -----------
590 Partial type with a destructor.
591
592 pu-ip.cs, pu-pi.cs, pi.cs, pu.cs
593 --------------------------------
594 Test that the order for internal/public in external assemblies does not
595 affect the outcome of a build.  Also checks that multiple `entry points'
596 can be declared in a library. (eg, that it is not confused by two Main
597 methods).