2004-03-01 Larry Ewing <lewing@ximian.com>
[mono-project.git] / mcs / tests / README.tests
blob37406820097976e6c297e8135e4190f0f5e0d8b7
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 test-221.cs
20 * Events and Delegates
22   test-149.cs test-164.cs verify-3.cs
24 * Constant Folding
26   test-150.cs
28 * Switch blocks
30   test-152.cs test-193.cs verify-4.cs
32 * Member Access & Simple Names
34   test-151.cs test-159.cs test-160.cs test-161.cs test-190.cs
36 * Invocation and Casts
38   test-153.cs test-163.c test-207.cs test-210.cs test-211.cs test-223.cs
40 * Flow Analysis
42   test-154.cs test-162.cs test-185.cs
44 * Type Containers
46   test-155.cs test-156.cs
48 * Attributes
50   test-157.cs test-158.cs test-177.cs test-230.cs
52 * Arrays and array creation
54   test-165.cs, test-167.cs
56 * Labels and goto
58   verify-5.cs
60 * Enums
62   verify-6.cs
64 * Type resolution and name lookup
66   test-198.cs test-201.cs test-202.cs test-203.cs test-214.cs
68 Test cases listed by Number:
69 ============================
71 test-91.cs
72 ----------
74 Tests various permissions sets based on the visiblity flags.
76 test-146.cs
77 -----------
78 Test for Binary.EmitBrancheable() to ensure we're emitting correct
79 unsinged branch targets.
81 test-147.cs
82 -----------
83 Testing `new' modifier.
85 test-148.cs
86 -----------
87 Testing the `IndexerName' attribute in interface indexers.
89 test-149.cs
90 -----------
91 Testing interface events.
93 test-150.cs
94 -----------
95 Test for folding of UIntConstants.  See bug #28106.
96 FIXME:  We should all all possible test cases to this test.
98 test-151.cs
99 -----------
101   A.Iface b;
102   void doit (Object A) {
103     b = (A.Iface)A;
106 test-152.cs
107 -----------
108 Scope of variables declared inside a switch case.
110 test-153.cs
111 -----------
112 Testing invocation of varargs function.
114 test-154.cs
115 -----------
116 Flow analysis: This test contains all situations which are "allowed".
118 test-155.cs
119 -----------
120 Nested interfaces.
122 test-156.cs
123 -----------
124 Check whether base types are at least as accessible than the current type.
126 test-157.cs
127 -----------
128 Attributes.
130 test-158.cs
131 -----------
132 Attributes.
134 test-159.cs
135 -----------
136 SimpleNameLookup: Cast to `A.Iface' type when there's a parameter called `A'.
138 test-160.cs
139 -----------
140 ResolveMemberLookup: `B look; return look.s.a' must work in static context.
142 test-161.cs
143 -----------
144 ResolveMemberLookup: Field initializer references `DateTime.Now' when there's
145 an instance property/field `DateTime'.
147 test-162.cs
148 -----------
149 Control Flow Analysis wrt. structs.
151 test-163.cs
152 -----------
153 Test to check we select string over object when we have a Null literal as the argument.
155 test-164.cs
156 -----------
157 Virtual functions in delegate creation expressions.
159 test-165.cs
160 -----------
161 Enums in array creation expression.
163 test-166.cs
164 -----------
165 Using property from interface which is inherited multiple times.
167 test-173.cs
168 -----------
169 Check whether we select the correct function, don't report CS0121
170 for integer literals.
172 test-174.cs
173 -----------
174 Checks access to protected properties on base classes, and access to 
175 private properties on container classes.
177 test-175.cs
178 -----------
179 Check for user-defined implicit conversions if both arguments of a
180 binary operator are of a user-defined type.  Bug #30443.
182 test-176.cs
183 -----------
184 This tests checks that we perform constant folding on byte values.  The
185 compiler had a bug where it did not do so.
187 test-177.cs
188 -----------
189 This tests that the compiler is generating "return:" attributes for a 
190 method.  This was a separate code path, and was not handled in the past.
193 test-178.cs
194 -----------
195 Ensure that we emit attributes only once for operators. Bug #45876
198 test-179.cs
199 -----------
200 Tests various uses of the indexers in the presence of the `new' keyword
201 and various different argument types.
203 test-180.cs
204 -----------
205 This test is part of a bug report in which casting an enumeration value
206 into System.Enum was not wrapped correctly, and the wrong method was
207 called.
209 test-181.cs
210 -----------
211 Test whenever mcs correctly handles the MethodImplAttributes
212 custom attribute.
214 test-182.cs
215 -----------
216 Tests that bug 37473 is gone.  The problem was that we were generating
217 incorrect code for field references on a value type.  The code was originally
218 written by Martin, but I turned it off as I did not see what it did fix.  The
219 code is now turned on again.  
221 test-183.cs
222 -----------
223 This test just verifies that we generate the proper signature for
224 EndInvoke, something that we were not doing before in the presence
225 of out parameters
227 test-184.cs
228 -----------
229 This test fixes a bug that exposed a problem when calling a struct
230 constructor that is initialized from an instance constructor
232 test-185.cs
233 -----------
234 Flow analysis wrt. infinite loops.  Bug #37708.
236 test-186.cs
237 -----------
238 Typecasts were not being constant-folded/reduced, which triggered
239 the bug 37363.   (String) null was not a null constant in attributes.
241 test-187.cs
242 -----------
243 This test verifies that we resolve the source expression in a compound
244 expression before we attempt to use it.
246 test-188.cs
247 -----------
248 Test that the foreach statement generated by mcs invokes the Dispose()
249 method even if the enumerator class returned by GetEnumerator () does not
250 implement IDisposable.
252 test-189.cs
253 -----------
254 Test to ensure proper overload resolution of params method under various cases.
256 test-190.cs
257 -----------
258 Accessing private field of outer class from which we derive.
260 tests-191.cs
261 ------------
262 Some accessibility tests that exist in Corlib and System, to probe the new
263 functionality in the compiler for accessibility of private nested classes.
265 test-192.cs
266 -----------
267 Fix for bug 41952, basically, we were not using the `unchecked' bit during
268 constant resolution due to the nature of EmitMeta.
270 test-193.cs
271 -----------
272 Fix for bug 39828, allow goto to a label in another switch section.
274 test-194.cs
275 -----------
276 Fix for bug #39108 - ensure that the correct form of a params method is called:
278 "explicit conversion of argument to object
279 (type object cannot be implicitly converted to type
280 object[]) affects resolution of normal/expanded form
281 of method invocation."
283 test-195.cs
284 -----------
286 Fix for bug #45149, constructors that call another constructor in the
287 same class (using ": this()") should not emit instance field initializers. 
289 test-196.cs:
290 ------------
292 The optimization that we perform in uint & int-constant was triggering a bug
293 because we returned always, when we should have continued the processing if the
294 conditions were not correct.
296 test-197.cs
297 -----------
299 Fix for bug #42973.
301 test-198.cs
302 -----------
304 Type resolution and name lookup.  Fixes for bugs #36316, #36314.
306 test-199.cs
307 -----------
309 Name resolution wrt. inaccessible types.  Fixes bug #36313.
311 test-200.cs
312 -----------
314 Compound assignment (x = (y += 3)).  Fixes bug #45854.
316 test-201.cs
317 -----------
319 Fix for bug #35631.
321 test-202.cs
322 -----------
324 Fix for bug #41975.
326 test-203.cs
327 -----------
329 Fix for bug #33026.
331 test-204.cs
332 -----------
334 User defined conditional logical operators; bug #40505.
336 test-206.cs
337 -----------
339 Indexers; bug #46502.
341 test-207.cs
342 -----------
344 Expressions which return delegates.
346 test-208.cs
347 -----------
349 Indexers; bug #46788.
351 test-209.cs
352 -----------
354 Embedded assignments; while fixing a bug and making a mistake, I discovered some
355 problems during class libs compilation.  Let's just add a testcase for them here.
357 test-210.cs
358 -----------
360 Cast something to a delegate and then invoke it; bug #46923.
362 test-211.cs
363 -----------
365 Multiple casts.
367 test-212.cs
368 -----------
370 Params overload resolution with implicit user conversion
372 test-213.cs
373 -----------
375 Unboxing struct from interface type; bug #47822.
377 test-214.cs
378 -----------
380 Namespace lookups; bug #47853.
382 test-215.cs
383 -----------
385 Namespace lookups; bug #47927.
387 test-216.cs:
388 ------------
389 Accessability bug fix #48710 on events
391 test-217.cs
392 -----------
394 >= and <= operators; bug #48679
396 test-218.cs
397 -----------
398 Tests delegate creation inside an array;  This exposed a bug in the
399 fact that New is called for DoResolve twice from array initialization.
400 Bug #48800
402 test-219.cs:
403 ------------
404 Tests that we can call typeof(void) in an attribtue delcaration, since
405 we removed previously typeof (System.Void) as a valid way of referencing void.
407 test-220.cs:
408 ------------
409 Test for a bug in foreach, where it would pick the wrong GetEnumerator in a class.
410 Bug # was 51446
412 test-221.cs:
413 ------------
414 Test for correct scanning for base properties.
416 test-222.cs:
417 ------------
418 Compilation test to check overload resolution. We should prefer int->uint over int->ulong.
420 test-223.cs:
421 ------------
422 This tests that conversions from Enum and ValueType to structs
423 are treated as unboxing conversions, and the `unbox' opcode
424 is emitted. #52569.
426 test-224.cs:
427 ------------
428 This tests the compilation of attributes with array parameters.
430 test-229.cs:
431 ------------
432 Test enumerating on:
433 public class List : IEnumerable {
435         public MyEnumerator GetEnumerator () {
436                 return new MyEnumerator(this);
437         }
438         
439         IEnumerator IEnumerable.GetEnumerator () {
440                 ...
441         }
442         
443         public struct MyEnumerator : IEnumerator {
444                 ...
445         }
448 test-231.cs:
449 ------------
450 Test for emitting callvirt when we need it.
452 verify-1.cs
453 -----------
454 Test whether we do not jump out of the method in a Try/Finally block.
456 verify-2.cs
457 -----------
458 Test whether `return' in a Try/Catch block actually returns.  Test
459 whether continue uses Leave when the branch is across Try/Catch
460 boundaries.
462 verify-3.cs
463 -----------
464 Checks default add/remove method of static events.
466 verify-4.cs
467 -----------
468 When there's an unreachable break in a switch section, it must not emit a jump out of
469 the method.
471 verify-6.cs
472 -----------
473 Casts from/to System.Enum.
475 unsafe-6.cs:
476 ------------
477 Tests the correct computation of compound operators in the context of a pointer 
478 dereference on the left side.
480 gen-1.cs:
481 ---------
483 Simple constructed type.
485 gen-2.cs:
486 ---------
488 Type parameter as field.
490 gen-3.cs:
491 ---------
493 Field of constructed type.
495 gen-4.cs:
496 ---------
498 Method argument of constructed type.
500 gen-5.cs:
501 ---------
503 Local variable of constructed type.
505 gen-6.cs:
506 ---------
508 More complex example.
510 gen-7.cs:
511 ---------
513 Constructed type deriving from a class type.
515 gen-8.cs:
516 ---------
518 `where' clauses.
520 gen-9.cs:
521 ---------
523 `where T : ICloneable' and then calling t.Clone ().
525 gen-10.cs:
526 ----------
528 `where T : I, J' - I is an inferface, J a class.
530 gen-15.cs:
531 ----------
533 Generic methods.
535 2test-1.cs
536 ----------
537 C# 2.0 Iterators: Enumerator and Enumerable with foreach
539 2test-2.cs
540 ----------
541 C# 2.0 Iterators: Obtaining the enumerator manually
543 2test-3.cs
544 ----------
545 C# 2.0 Iterators: Multi-dimensional arrays as arguments to iterator method
547 2test-4.cs
548 ----------
549 C# 2.0 Iterators: Use of a local variable in an enumerator.
551 2test-5.cs
552 ----------
553 Method group conversions for C# 2.0
555 2test-6.cs
556 ----------
557 Test iterators using foreach where you have to load the address of a struct