2010-04-06 Jb Evain <jbevain@novell.com>
[mcs.git] / tests / README.tests
blob65bc2a6f9614dd6f8a1941fff8f4dd6d4b0e32e9
1 Test cases listed by Category:
2 ==============================
4 * Operators
6   test-146.cs test-175.cs test-200.cs test-204.cs
8 * Overloading
10   test-147.cs test-173.cs
12 * Try/Catch blocks
14   verify-1.cs verify-2.cs
16 * Indexers and Properties
18   test-148.cs test-166.cs test-206.cs test-208.cs test-209.cs
19   test-221.cs test-236.cs
21 * Events and Delegates
23   test-149.cs test-164.cs test-237.cs verify-3.cs
25 * Constant Folding
27   test-150.cs
29 * Switch blocks
31   test-152.cs test-193.cs test-234.cs verify-4.cs
33 * Member Access & Simple Names
35   test-151.cs test-159.cs test-160.cs test-161.cs test-190.cs
37 * Invocation and Casts
39   test-153.cs test-163.c test-207.cs test-210.cs test-211.cs test-223.cs
41 * Flow Analysis
43   test-154.cs test-162.cs test-185.cs
45 * Type Containers
47   test-155.cs test-156.cs
49 * Attributes
51   test-157.cs test-158.cs test-177.cs test-230.cs test-238.cs test-239.cs test-240.cs
53 * Arrays and array creation
55   test-165.cs, test-167.cs, test-232.cs
57 * Labels and goto
59   verify-5.cs
61 * Enums
63   verify-6.cs
65 * Type resolution and name lookup
67   test-198.cs test-201.cs test-202.cs test-203.cs test-214.cs
69 Test cases listed by Number:
70 ============================
72 test-91.cs
73 ----------
75 Tests various permissions sets based on the visiblity flags.
77 test-146.cs
78 -----------
79 Test for Binary.EmitBrancheable() to ensure we're emitting correct
80 unsinged branch targets.
82 test-147.cs
83 -----------
84 Testing `new' modifier.
86 test-148.cs
87 -----------
88 Testing the `IndexerName' attribute in interface indexers.
90 test-149.cs
91 -----------
92 Testing interface events.
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.
99 test-151.cs
100 -----------
102   A.Iface b;
103   void doit (Object A) {
104     b = (A.Iface)A;
107 test-152.cs
108 -----------
109 Scope of variables declared inside a switch case.
111 test-153.cs
112 -----------
113 Testing invocation of varargs function.
115 test-154.cs
116 -----------
117 Flow analysis: This test contains all situations which are "allowed".
119 test-155.cs
120 -----------
121 Nested interfaces.
123 test-156.cs
124 -----------
125 Check whether base types are at least as accessible than the current type.
127 test-157.cs
128 -----------
129 Attributes.
131 test-158.cs
132 -----------
133 Attributes.
135 test-159.cs
136 -----------
137 SimpleNameLookup: Cast to `A.Iface' type when there's a parameter called `A'.
139 test-160.cs
140 -----------
141 ResolveMemberLookup: `B look; return look.s.a' must work in static context.
143 test-161.cs
144 -----------
145 ResolveMemberLookup: Field initializer references `DateTime.Now' when there's
146 an instance property/field `DateTime'.
148 test-162.cs
149 -----------
150 Control Flow Analysis wrt. structs.
152 test-163.cs
153 -----------
154 Test to check we select string over object when we have a Null literal as the argument.
156 test-164.cs
157 -----------
158 Virtual functions in delegate creation expressions.
160 test-165.cs
161 -----------
162 Enums in array creation expression.
164 test-166.cs
165 -----------
166 Using property from interface which is inherited multiple times.
168 test-173.cs
169 -----------
170 Check whether we select the correct function, don't report CS0121
171 for integer literals.
173 test-174.cs
174 -----------
175 Checks access to protected properties on base classes, and access to 
176 private properties on container classes.
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.
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.
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.
194 test-178.cs
195 -----------
196 Ensure that we emit attributes only once for operators. Bug #45876
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.
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.
210 test-181.cs
211 -----------
212 Test whenever mcs correctly handles the MethodImplAttributes
213 custom attribute.
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.  
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
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
233 test-185.cs
234 -----------
235 Flow analysis wrt. infinite loops.  Bug #37708.
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.
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.
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.
253 test-189.cs
254 -----------
255 Test to ensure proper overload resolution of params method under various cases.
257 test-190.cs
258 -----------
259 Accessing private field of outer class from which we derive.
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.
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.
271 test-193.cs
272 -----------
273 Fix for bug 39828, allow goto to a label in another switch section.
275 test-194.cs
276 -----------
277 Fix for bug #39108 - ensure that the correct form of a params method is called:
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."
284 test-195.cs
285 -----------
287 Fix for bug #45149, constructors that call another constructor in the
288 same class (using ": this()") should not emit instance field initializers. 
290 test-196.cs:
291 ------------
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.
297 test-197.cs
298 -----------
300 Fix for bug #42973.
302 test-198.cs
303 -----------
305 Type resolution and name lookup.  Fixes for bugs #36316, #36314.
307 test-199.cs
308 -----------
310 Name resolution wrt. inaccessible types.  Fixes bug #36313.
312 test-200.cs
313 -----------
315 Compound assignment (x = (y += 3)).  Fixes bug #45854.
317 test-201.cs
318 -----------
320 Fix for bug #35631.
322 test-202.cs
323 -----------
325 Fix for bug #41975.
327 test-203.cs
328 -----------
330 Fix for bug #33026.
332 test-204.cs
333 -----------
335 User defined conditional logical operators; bug #40505.
337 test-206.cs
338 -----------
340 Indexers; bug #46502.
342 test-207.cs
343 -----------
345 Expressions which return delegates.
347 test-208.cs
348 -----------
350 Indexers; bug #46788.
352 test-209.cs
353 -----------
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.
358 test-210.cs
359 -----------
361 Cast something to a delegate and then invoke it; bug #46923.
363 test-211.cs
364 -----------
366 Multiple casts.
368 test-212.cs
369 -----------
371 Params overload resolution with implicit user conversion
373 test-213.cs
374 -----------
376 Unboxing struct from interface type; bug #47822.
378 test-214.cs
379 -----------
381 Namespace lookups; bug #47853.
383 test-215.cs
384 -----------
386 Namespace lookups; bug #47927.
388 test-216.cs:
389 ------------
390 Accessability bug fix #48710 on events
392 test-217.cs
393 -----------
395 >= and <= operators; bug #48679
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
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.
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
413 test-221.cs:
414 ------------
415 Test for correct scanning for base properties.
417 test-222.cs:
418 ------------
419 Compilation test to check overload resolution. We should prefer int->uint over int->ulong.
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.
427 test-224.cs:
428 ------------
429 This tests the compilation of attributes with array parameters.
431 test-229.cs:
432 ------------
433 Test enumerating on:
434 public class List : IEnumerable {
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         }
449 test-231.cs:
450 ------------
451 Test for emitting callvirt when we need it.
453 test-232.cs:
454 ------------
455 Tests for {...}-style array creation
457 test-233.cs:
458 ------------
459 dup of basic-float.cs from mini, for bug 54303.
461 test-234.cs:
462 ------------
463 Switch statement on a [Flags] style enum. bug 55885.
465 test-236.cs:
466 -----------
467 Test for bug #56300.  DefaultMemberAttribute should not be created if a
468 class has only private interface indexers.
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.
475 test-290.cs:
476 -----------
477 Test for bug reported in 
479   http://lists.ximian.com/archives/public/mono-devel-list/2004-September/007777.html
481 verify-1.cs
482 -----------
483 Test whether we do not jump out of the method in a Try/Finally block.
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.
491 verify-3.cs
492 -----------
493 Checks default add/remove method of static events.
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.
500 verify-6.cs
501 -----------
502 Casts from/to System.Enum.
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.
509 gen-1.cs:
510 ---------
512 Simple constructed type.
514 gen-2.cs:
515 ---------
517 Type parameter as field.
519 gen-3.cs:
520 ---------
522 Field of constructed type.
524 gen-4.cs:
525 ---------
527 Method argument of constructed type.
529 gen-5.cs:
530 ---------
532 Local variable of constructed type.
534 gen-6.cs:
535 ---------
537 More complex example.
539 gen-7.cs:
540 ---------
542 Constructed type deriving from a class type.
544 gen-8.cs:
545 ---------
547 `where' clauses.
549 gen-9.cs:
550 ---------
552 `where T : ICloneable' and then calling t.Clone ().
554 gen-10.cs:
555 ----------
557 `where T : I, J' - I is an inferface, J a class.
559 gen-15.cs:
560 ----------
562 Generic methods.
564 2test-1.cs
565 ----------
566 C# 2.0 Iterators: Enumerator and Enumerable with foreach
568 2test-2.cs
569 ----------
570 C# 2.0 Iterators: Obtaining the enumerator manually
572 2test-3.cs
573 ----------
574 C# 2.0 Iterators: Multi-dimensional arrays as arguments to iterator method
576 2test-4.cs
577 ----------
578 C# 2.0 Iterators: Use of a local variable in an enumerator.
580 2test-5.cs
581 ----------
582 Method group conversions for C# 2.0
584 2test-6.cs
585 ----------
586 Test iterators using foreach where you have to load the address of a struct
588 2test-15.cs
589 -----------
590 Partial type with a destructor.
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).