1 // TypeTest.cs - NUnit Test Cases for the System.Type class
4 // Zoltan Varga (vargaz@freemail.hu)
7 // (C) 2003 Ximian, Inc. http://www.ximian.com
10 using NUnit.Framework;
12 using System.Threading;
13 using System.Collections;
14 using System.Collections.Generic;
16 using System.Reflection;
18 using System.Reflection.Emit;
20 using System.Runtime.InteropServices;
22 using System.Globalization;
24 class NoNamespaceClass {
27 namespace MonoTests.System
29 class Super : ICloneable
31 public virtual object Clone ()
46 interface IFace2 : IFace1
51 interface IFace3 : IFace2
66 public abstract int this [byte i] {
70 public abstract int this [int i] {
74 public abstract void TestVoid ();
75 public abstract void TestInt (int i);
78 class DeriveVTable : Base
80 public override int this [byte i] {
84 public override int this [int i] {
88 public override void TestVoid ()
93 public override void TestInt (int i)
99 class NewVTable : DeriveVTable
101 public new int this [byte i] {
105 public new int this [int i] {
109 public new void TestVoid ()
114 public new void TestInt (int i)
119 public void Overload ()
123 public void Overload (int i)
127 public NewVTable (out int i)
132 public void byref_method (out int i)
140 public virtual int Foo {
145 public event EventHandler E;
152 class Derived1 : Base1
154 public override int Foo {
159 class Derived2 : Base1
166 public new event Action E;
167 public new void Dummy ()
178 get { throw new NotImplementedException (); }
181 public T Execute (T a)
186 public class Nested<K> {}
193 public interface IBar<T>
197 public class Baz<T> : IBar<T>
203 public static void Bang<S> () {}
206 public class Bug348522
208 public void Test (int __argument)
213 public class FirstMethodBinder : Binder
215 public override MethodBase BindToMethod (BindingFlags bindingAttr, MethodBase [] match, ref object [] args,
216 ParameterModifier [] modifiers, CultureInfo culture, string [] names,
223 public override object ChangeType (object value, Type type1, CultureInfo culture)
228 // The rest is just to please the compiler
229 public override FieldInfo BindToField (BindingFlags a, FieldInfo[] b, object c, CultureInfo d)
234 public override void ReorderArgumentArray(ref object[] a, object b)
238 public override MethodBase SelectMethod(BindingFlags a, MethodBase[] b, Type[] c, ParameterModifier[] d)
243 public override PropertyInfo SelectProperty(BindingFlags a, PropertyInfo[] b, Type c, Type[] d, ParameterModifier[] e)
250 public class TypeTest
253 private ModuleBuilder module;
255 const string ASSEMBLY_NAME = "MonoTests.System.TypeTest";
256 static int typeIndexer = 0;
261 AssemblyName assemblyName = new AssemblyName ();
262 assemblyName.Name = ASSEMBLY_NAME;
264 var assembly = AppDomain.CurrentDomain.DefineDynamicAssembly (
265 assemblyName, AssemblyBuilderAccess.RunAndSave, Path.GetTempPath ());
266 module = assembly.DefineDynamicModule ("module1");
270 private string genTypeName ()
272 return "t" + (typeIndexer++);
275 private void ByrefMethod (ref int i, ref Derived1 j, ref Base1 k)
279 public interface IFace {
282 private void GenericMethod<Q, T1> (Q q, T1 t) where T1 : IFace
287 public void TestIsAssignableFrom ()
289 // Simple tests for inheritance
290 Assert.AreEqual (typeof (Super).IsAssignableFrom (typeof (Duper)) , true, "#01");
291 Assert.AreEqual (typeof (Duper).IsAssignableFrom (typeof (Duper)), true, "#02");
292 Assert.AreEqual (typeof (Object).IsAssignableFrom (typeof (Duper)), true, "#03");
293 Assert.AreEqual (typeof (ICloneable).IsAssignableFrom (typeof (Duper)), true, "#04");
296 Assert.AreEqual (typeof (Super[]).IsAssignableFrom (typeof (Duper[])), true, "#05");
297 Assert.AreEqual (typeof (Duper[]).IsAssignableFrom (typeof (Super[])), false, "#06");
298 Assert.AreEqual (typeof (Object[]).IsAssignableFrom (typeof (Duper[])), true, "#07");
299 Assert.AreEqual (typeof (ICloneable[]).IsAssignableFrom (typeof (Duper[])), true, "#08");
301 // Tests for multiple dimensional arrays
302 Assert.AreEqual (typeof (Super[][]).IsAssignableFrom (typeof (Duper[][])), true, "#09");
303 Assert.AreEqual (typeof (Duper[][]).IsAssignableFrom (typeof (Super[][])), false, "#10");
304 Assert.AreEqual (typeof (Object[][]).IsAssignableFrom (typeof (Duper[][])), true, "#11");
305 Assert.AreEqual (typeof (ICloneable[][]).IsAssignableFrom (typeof (Duper[][])), true, "#12");
307 // Tests for vectors<->one dimensional arrays */
308 Array arr1 = Array.CreateInstance (typeof (int), new int[] {1}, new int[] {0});
309 Array arr2 = Array.CreateInstance (typeof (int), new int[] {1}, new int[] {10});
311 Assert.AreEqual (typeof (int[]).IsAssignableFrom (arr1.GetType ()), true, "#13");
312 Assert.AreEqual (typeof (int[]).IsAssignableFrom (arr2.GetType ()), false, "#14");
314 // Test that arrays of enums can be cast to their base types
315 Assert.AreEqual (typeof (int[]).IsAssignableFrom (typeof (TypeCode[])), true, "#15");
317 // Test that arrays of valuetypes can't be cast to arrays of
319 Assert.AreEqual (typeof (object[]).IsAssignableFrom (typeof (TypeCode[])), false, "#16");
320 Assert.AreEqual (typeof (ValueType[]).IsAssignableFrom (typeof (TypeCode[])), false, "#17");
321 Assert.AreEqual (typeof (Enum[]).IsAssignableFrom (typeof (TypeCode[])), false, "#18");
323 // Test that arrays of enums can't be cast to arrays of references
324 Assert.AreEqual (typeof (object[]).IsAssignableFrom (typeof (TheEnum[])), false, "#19");
325 Assert.AreEqual (typeof (ValueType[]).IsAssignableFrom (typeof (TheEnum[])), false, "#20");
326 Assert.AreEqual (typeof (Enum[]).IsAssignableFrom (typeof (TheEnum[])), false, "#21");
328 // Check that ValueType and Enum are recognized as reference types
329 Assert.AreEqual (typeof (object).IsAssignableFrom (typeof (ValueType)), true, "#22");
330 Assert.AreEqual (typeof (object).IsAssignableFrom (typeof (Enum)), true, "#23");
331 Assert.AreEqual (typeof (ValueType).IsAssignableFrom (typeof (Enum)), true, "#24");
333 Assert.AreEqual (typeof (object[]).IsAssignableFrom (typeof (ValueType[])), true, "#25");
334 Assert.AreEqual (typeof (ValueType[]).IsAssignableFrom (typeof (ValueType[])), true, "#26");
335 Assert.AreEqual (typeof (Enum[]).IsAssignableFrom (typeof (ValueType[])), false, "#27");
337 Assert.AreEqual (typeof (object[]).IsAssignableFrom (typeof (Enum[])), true, "#28");
338 Assert.AreEqual (typeof (ValueType[]).IsAssignableFrom (typeof (Enum[])), true, "#29");
339 Assert.AreEqual (typeof (Enum[]).IsAssignableFrom (typeof (Enum[])), true, "#30");
341 // Tests for byref types
342 MethodInfo mi = typeof (TypeTest).GetMethod ("ByrefMethod", BindingFlags.Instance|BindingFlags.NonPublic);
343 Assert.IsTrue (mi.GetParameters ()[2].ParameterType.IsAssignableFrom (mi.GetParameters ()[1].ParameterType));
344 Assert.IsTrue (mi.GetParameters ()[1].ParameterType.IsAssignableFrom (mi.GetParameters ()[1].ParameterType));
346 // Tests for type parameters
347 mi = typeof (TypeTest).GetMethod ("GenericMethod", BindingFlags.Instance|BindingFlags.NonPublic);
348 Assert.IsTrue (mi.GetParameters ()[0].ParameterType.IsAssignableFrom (mi.GetParameters ()[0].ParameterType));
349 Assert.IsFalse (mi.GetParameters ()[0].ParameterType.IsAssignableFrom (typeof (int)));
351 // Tests for parameters with generic constraints
352 mi = typeof (TypeTest).GetMethod ("GenericMethod", BindingFlags.Instance|BindingFlags.NonPublic);
353 Assert.IsTrue (typeof (IFace).IsAssignableFrom (mi.GetParameters ()[1].ParameterType));
357 [ExpectedException (typeof (ArgumentException))]
358 public void GetInterfaceMapOnInterface ()
360 typeof (IList).GetInterfaceMap (typeof (ICollection));
364 public void TestIsSubclassOf ()
366 Assert.IsTrue (typeof (ICloneable).IsSubclassOf (typeof (object)), "#01");
368 // Tests for byref types
369 Type paramType = typeof (TypeTest).GetMethod ("ByrefMethod", BindingFlags.Instance|BindingFlags.NonPublic).GetParameters () [0].ParameterType;
370 Assert.IsTrue (!paramType.IsSubclassOf (typeof (ValueType)), "#02");
371 //Assert.IsTrue (paramType.IsSubclassOf (typeof (Object)), "#03");
372 Assert.IsTrue (!paramType.IsSubclassOf (paramType), "#04");
376 public void TestGetMethodImpl ()
378 // Test binding of new slot methods (using no types)
379 Assert.AreEqual (typeof (Base), typeof (Base).GetMethod("TestVoid").DeclaringType, "#01");
380 Assert.AreEqual (typeof (NewVTable), typeof (NewVTable).GetMethod ("TestVoid").DeclaringType, "#02");
382 // Test binding of new slot methods (using types)
383 Assert.AreEqual (typeof (Base), typeof (Base).GetMethod ("TestInt", new Type[] { typeof (int) }).DeclaringType, "#03");
384 Assert.AreEqual (typeof (NewVTable), typeof (NewVTable).GetMethod ("TestInt", new Type[] { typeof (int) }).DeclaringType, "#04");
386 // Test overload resolution
387 Assert.AreEqual (0, typeof (NewVTable).GetMethod ("Overload", new Type[0]).GetParameters ().Length, "#05");
389 // Test byref parameters
390 Assert.AreEqual (null, typeof (NewVTable).GetMethod ("byref_method", new Type[] { typeof (int) }), "#06");
391 Type byrefInt = typeof (NewVTable).GetMethod ("byref_method").GetParameters ()[0].ParameterType;
392 Assert.IsNotNull (typeof (NewVTable).GetMethod ("byref_method", new Type[] { byrefInt }), "#07");
396 public void TestGetPropertyImpl ()
398 // Test getting property that is exact
399 Assert.AreEqual (typeof (NewVTable), typeof (NewVTable).GetProperty ("Item", new Type[1] { typeof (Int32) }).DeclaringType, "#01");
401 // Test getting property that is not exact
402 Assert.AreEqual (typeof (NewVTable), typeof (NewVTable).GetProperty ("Item", new Type[1] { typeof (Int16) }).DeclaringType, "#02");
404 // Test overriding of properties when only the set accessor is overriden
405 Assert.AreEqual (1, typeof (Derived1).GetProperties ().Length, "#03");
409 public void GetEvents ()
412 Assert.AreEqual (1, typeof (Derived2).GetEvents ().Length);
413 Assert.AreEqual (typeof (Derived2), typeof (Derived2).GetEvents ()[0].DeclaringType);
417 public void GetProperties ()
419 // Test hide-by-name-and-signature
420 Assert.AreEqual (1, typeof (Derived2).GetProperties ().Length);
421 Assert.AreEqual (typeof (Derived2), typeof (Derived2).GetProperties ()[0].DeclaringType);
424 [Test] // GetProperties (BindingFlags)
425 public void GetProperties_Flags ()
427 PropertyInfo [] props;
428 Type type = typeof (Bar);
431 flags = BindingFlags.Instance | BindingFlags.NonPublic;
432 props = type.GetProperties (flags);
434 Assert.IsFalse (ContainsProperty (props, "PrivInstBase"), "#A1");
435 Assert.IsTrue (ContainsProperty (props, "ProtInstBase"), "#A2");
436 Assert.IsTrue (ContainsProperty (props, "ProIntInstBase"), "#A3");
437 Assert.IsFalse (ContainsProperty (props, "PubInstBase"), "#A4");
438 Assert.IsTrue (ContainsProperty (props, "IntInstBase"), "#A5");
439 Assert.IsTrue (ContainsProperty (props, "PrivInst"), "#A6");
440 Assert.IsTrue (ContainsProperty (props, "ProtInst"), "#A7");
441 Assert.IsTrue (ContainsProperty (props, "ProIntInst"), "#A8");
442 Assert.IsFalse (ContainsProperty (props, "PubInst"), "#A9");
443 Assert.IsTrue (ContainsProperty (props, "IntInst"), "#A10");
444 Assert.IsFalse (ContainsProperty (props, "PrivStatBase"), "#A11");
445 Assert.IsFalse (ContainsProperty (props, "ProtStatBase"), "#A12");
446 Assert.IsFalse (ContainsProperty (props, "ProIntStatBase"), "#A13");
447 Assert.IsFalse (ContainsProperty (props, "PubStatBase"), "#A14");
448 Assert.IsFalse (ContainsProperty (props, "IntStatBase"), "#A15");
449 Assert.IsFalse (ContainsProperty (props, "PrivStat"), "#A16");
450 Assert.IsFalse (ContainsProperty (props, "ProtStat"), "#A17");
451 Assert.IsFalse (ContainsProperty (props, "ProIntStat"), "#A18");
452 Assert.IsFalse (ContainsProperty (props, "PubStat"), "#A19");
453 Assert.IsFalse (ContainsProperty (props, "IntStat"), "#A20");
454 Assert.IsFalse (ContainsProperty (props, "PrivInstBlue"), "#A21");
455 Assert.IsTrue (ContainsProperty (props, "ProtInstBlue"), "#A22");
456 Assert.IsTrue (ContainsProperty (props, "ProIntInstBlue"), "#A23");
457 Assert.IsFalse (ContainsProperty (props, "PubInstBlue"), "#A24");
458 Assert.IsTrue (ContainsProperty (props, "IntInstBlue"), "#A25");
459 Assert.IsFalse (ContainsProperty (props, "PrivStatBlue"), "#A26");
460 Assert.IsFalse (ContainsProperty (props, "ProtStatBlue"), "#A27");
461 Assert.IsFalse (ContainsProperty (props, "ProIntStatBlue"), "#A28");
462 Assert.IsFalse (ContainsProperty (props, "PubStatBlue"), "#A29");
463 Assert.IsFalse (ContainsProperty (props, "IntStatBlue"), "#A30");
465 flags = BindingFlags.Instance | BindingFlags.Public;
466 props = type.GetProperties (flags);
468 Assert.IsFalse (ContainsProperty (props, "PrivInstBase"), "#B1");
469 Assert.IsFalse (ContainsProperty (props, "ProtInstBase"), "#B2");
470 Assert.IsFalse (ContainsProperty (props, "ProIntInstBase"), "#B3");
471 Assert.IsTrue (ContainsProperty (props, "PubInstBase"), "#B4");
472 Assert.IsFalse (ContainsProperty (props, "IntInstBase"), "#B5");
473 Assert.IsFalse (ContainsProperty (props, "PrivInst"), "#B6");
474 Assert.IsFalse (ContainsProperty (props, "ProtInst"), "#B7");
475 Assert.IsFalse (ContainsProperty (props, "ProIntInst"), "#B8");
476 Assert.IsTrue (ContainsProperty (props, "PubInst"), "#B9");
477 Assert.IsFalse (ContainsProperty (props, "IntInst"), "#B10");
478 Assert.IsFalse (ContainsProperty (props, "PrivStatBase"), "#B11");
479 Assert.IsFalse (ContainsProperty (props, "ProtStatBase"), "#B12");
480 Assert.IsFalse (ContainsProperty (props, "ProIntStatBase"), "#B13");
481 Assert.IsFalse (ContainsProperty (props, "PubStatBase"), "#B14");
482 Assert.IsFalse (ContainsProperty (props, "IntStatBase"), "#B15");
483 Assert.IsFalse (ContainsProperty (props, "PrivStat"), "#B16");
484 Assert.IsFalse (ContainsProperty (props, "ProtStat"), "#B17");
485 Assert.IsFalse (ContainsProperty (props, "ProIntStat"), "#B18");
486 Assert.IsFalse (ContainsProperty (props, "PubStat"), "#B19");
487 Assert.IsFalse (ContainsProperty (props, "IntStat"), "#B20");
488 Assert.IsFalse (ContainsProperty (props, "PrivInstBlue"), "#B21");
489 Assert.IsFalse (ContainsProperty (props, "ProtInstBlue"), "#B22");
490 Assert.IsFalse (ContainsProperty (props, "ProIntInstBlue"), "#B23");
491 Assert.IsTrue (ContainsProperty (props, "PubInstBlue"), "#B24");
492 Assert.IsFalse (ContainsProperty (props, "IntInstBlue"), "#B25");
493 Assert.IsFalse (ContainsProperty (props, "PrivStatBlue"), "#B26");
494 Assert.IsFalse (ContainsProperty (props, "ProtStatBlue"), "#B27");
495 Assert.IsFalse (ContainsProperty (props, "ProIntStatBlue"), "#B28");
496 Assert.IsFalse (ContainsProperty (props, "PubStatBlue"), "#B29");
497 Assert.IsFalse (ContainsProperty (props, "IntStatBlue"), "#B30");
499 flags = BindingFlags.Static | BindingFlags.Public;
500 props = type.GetProperties (flags);
502 Assert.IsFalse (ContainsProperty (props, "PrivInstBase"), "#C1");
503 Assert.IsFalse (ContainsProperty (props, "ProtInstBase"), "#C2");
504 Assert.IsFalse (ContainsProperty (props, "ProIntInstBase"), "#C3");
505 Assert.IsFalse (ContainsProperty (props, "PubInstBase"), "#C4");
506 Assert.IsFalse (ContainsProperty (props, "IntInstBase"), "#C5");
507 Assert.IsFalse (ContainsProperty (props, "PrivInst"), "#C6");
508 Assert.IsFalse (ContainsProperty (props, "ProtInst"), "#C7");
509 Assert.IsFalse (ContainsProperty (props, "ProIntInst"), "#C8");
510 Assert.IsFalse (ContainsProperty (props, "PubInst"), "#C9");
511 Assert.IsFalse (ContainsProperty (props, "IntInst"), "#C10");
512 Assert.IsFalse (ContainsProperty (props, "PrivStatBase"), "#C11");
513 Assert.IsFalse (ContainsProperty (props, "ProtStatBase"), "#C12");
514 Assert.IsFalse (ContainsProperty (props, "ProIntStatBase"), "#C13");
515 Assert.IsFalse (ContainsProperty (props, "PubStatBase"), "#C14");
516 Assert.IsFalse (ContainsProperty (props, "IntStatBase"), "#C15");
517 Assert.IsFalse (ContainsProperty (props, "PrivStat"), "#C16");
518 Assert.IsFalse (ContainsProperty (props, "ProtStat"), "#C17");
519 Assert.IsFalse (ContainsProperty (props, "ProIntStat"), "#C18");
520 Assert.IsTrue (ContainsProperty (props, "PubStat"), "#C19");
521 Assert.IsFalse (ContainsProperty (props, "IntStat"), "#C20");
522 Assert.IsFalse (ContainsProperty (props, "PrivInstBlue"), "#C21");
523 Assert.IsFalse (ContainsProperty (props, "ProtInstBlue"), "#C22");
524 Assert.IsFalse (ContainsProperty (props, "ProIntInstBlue"), "#C23");
525 Assert.IsFalse (ContainsProperty (props, "PubInstBlue"), "#C24");
526 Assert.IsFalse (ContainsProperty (props, "IntInstBlue"), "#C25");
527 Assert.IsFalse (ContainsProperty (props, "PrivStatBlue"), "#C26");
528 Assert.IsFalse (ContainsProperty (props, "ProtStatBlue"), "#C27");
529 Assert.IsFalse (ContainsProperty (props, "ProIntStatBlue"), "#C28");
530 Assert.IsFalse (ContainsProperty (props, "PubStatBlue"), "#C29");
531 Assert.IsFalse (ContainsProperty (props, "IntStatBlue"), "#C30");
533 flags = BindingFlags.Static | BindingFlags.NonPublic;
534 props = type.GetProperties (flags);
536 Assert.IsFalse (ContainsProperty (props, "PrivInstBase"), "#D1");
537 Assert.IsFalse (ContainsProperty (props, "ProtInstBase"), "#D2");
538 Assert.IsFalse (ContainsProperty (props, "ProIntInstBase"), "#D3");
539 Assert.IsFalse (ContainsProperty (props, "PubInstBase"), "#D4");
540 Assert.IsFalse (ContainsProperty (props, "IntInstBase"), "#D5");
541 Assert.IsFalse (ContainsProperty (props, "PrivInst"), "#D6");
542 Assert.IsFalse (ContainsProperty (props, "ProtInst"), "#D7");
543 Assert.IsFalse (ContainsProperty (props, "ProIntInst"), "#D8");
544 Assert.IsFalse (ContainsProperty (props, "PubInst"), "#D9");
545 Assert.IsFalse (ContainsProperty (props, "IntInst"), "#D10");
546 Assert.IsFalse (ContainsProperty (props, "PrivStatBase"), "#D11");
547 Assert.IsFalse (ContainsProperty (props, "ProtStatBase"), "#D12");
548 Assert.IsFalse (ContainsProperty (props, "ProIntStatBase"), "#D13");
549 Assert.IsFalse (ContainsProperty (props, "PubStatBase"), "#D14");
550 Assert.IsFalse (ContainsProperty (props, "IntStatBase"), "#D15");
551 Assert.IsTrue (ContainsProperty (props, "PrivStat"), "#D16");
552 Assert.IsTrue (ContainsProperty (props, "ProtStat"), "#D17");
553 Assert.IsTrue (ContainsProperty (props, "ProIntStat"), "#D18");
554 Assert.IsFalse (ContainsProperty (props, "PubStat"), "#D19");
555 Assert.IsTrue (ContainsProperty (props, "IntStat"), "#D20");
556 Assert.IsFalse (ContainsProperty (props, "PrivInstBlue"), "#D21");
557 Assert.IsFalse (ContainsProperty (props, "ProtInstBlue"), "#D22");
558 Assert.IsFalse (ContainsProperty (props, "ProIntInstBlue"), "#D23");
559 Assert.IsFalse (ContainsProperty (props, "PubInstBlue"), "#D24");
560 Assert.IsFalse (ContainsProperty (props, "IntInstBlue"), "#D25");
561 Assert.IsFalse (ContainsProperty (props, "PrivStatBlue"), "#D26");
562 Assert.IsFalse (ContainsProperty (props, "ProtStatBlue"), "#D27");
563 Assert.IsFalse (ContainsProperty (props, "ProIntStatBlue"), "#D28");
564 Assert.IsFalse (ContainsProperty (props, "PubStatBlue"), "#D29");
565 Assert.IsFalse (ContainsProperty (props, "IntStatBlue"), "#D30");
567 flags = BindingFlags.Instance | BindingFlags.NonPublic |
568 BindingFlags.FlattenHierarchy;
569 props = type.GetProperties (flags);
571 Assert.IsFalse (ContainsProperty (props, "PrivInstBase"), "#E1");
572 Assert.IsTrue (ContainsProperty (props, "ProtInstBase"), "#E2");
573 Assert.IsTrue (ContainsProperty (props, "ProIntInstBase"), "#E3");
574 Assert.IsFalse (ContainsProperty (props, "PubInstBase"), "#E4");
575 Assert.IsTrue (ContainsProperty (props, "IntInstBase"), "#E5");
576 Assert.IsTrue (ContainsProperty (props, "PrivInst"), "#E6");
577 Assert.IsTrue (ContainsProperty (props, "ProtInst"), "#E7");
578 Assert.IsTrue (ContainsProperty (props, "ProIntInst"), "#E8");
579 Assert.IsFalse (ContainsProperty (props, "PubInst"), "#E9");
580 Assert.IsTrue (ContainsProperty (props, "IntInst"), "#E10");
581 Assert.IsFalse (ContainsProperty (props, "PrivStatBase"), "#E11");
582 Assert.IsFalse (ContainsProperty (props, "ProtStatBase"), "#E12");
583 Assert.IsFalse (ContainsProperty (props, "ProIntStatBase"), "#E13");
584 Assert.IsFalse (ContainsProperty (props, "PubStatBase"), "#E14");
585 Assert.IsFalse (ContainsProperty (props, "IntStatBase"), "#E15");
586 Assert.IsFalse (ContainsProperty (props, "PrivStat"), "#E16");
587 Assert.IsFalse (ContainsProperty (props, "ProtStat"), "#E17");
588 Assert.IsFalse (ContainsProperty (props, "ProIntStat"), "#E18");
589 Assert.IsFalse (ContainsProperty (props, "PubStat"), "#E19");
590 Assert.IsFalse (ContainsProperty (props, "IntStat"), "#E20");
591 Assert.IsFalse (ContainsProperty (props, "PrivInstBlue"), "#E21");
592 Assert.IsTrue (ContainsProperty (props, "ProtInstBlue"), "#E22");
593 Assert.IsTrue (ContainsProperty (props, "ProIntInstBlue"), "#E23");
594 Assert.IsFalse (ContainsProperty (props, "PubInstBlue"), "#E24");
595 Assert.IsTrue (ContainsProperty (props, "IntInstBlue"), "#E25");
596 Assert.IsFalse (ContainsProperty (props, "PrivStatBlue"), "#E26");
597 Assert.IsFalse (ContainsProperty (props, "ProtStatBlue"), "#E27");
598 Assert.IsFalse (ContainsProperty (props, "ProIntStatBlue"), "#E28");
599 Assert.IsFalse (ContainsProperty (props, "PubStatBlue"), "#E29");
600 Assert.IsFalse (ContainsProperty (props, "IntStatBlue"), "#E30");
602 flags = BindingFlags.Instance | BindingFlags.Public |
603 BindingFlags.FlattenHierarchy;
604 props = type.GetProperties (flags);
606 Assert.IsFalse (ContainsProperty (props, "PrivInstBase"), "#F1");
607 Assert.IsFalse (ContainsProperty (props, "ProtInstBase"), "#F2");
608 Assert.IsFalse (ContainsProperty (props, "ProIntInstBase"), "#F3");
609 Assert.IsTrue (ContainsProperty (props, "PubInstBase"), "#F4");
610 Assert.IsFalse (ContainsProperty (props, "IntInstBase"), "#F5");
611 Assert.IsFalse (ContainsProperty (props, "PrivInst"), "#F6");
612 Assert.IsFalse (ContainsProperty (props, "ProtInst"), "#F7");
613 Assert.IsFalse (ContainsProperty (props, "ProIntInst"), "#F8");
614 Assert.IsTrue (ContainsProperty (props, "PubInst"), "#F9");
615 Assert.IsFalse (ContainsProperty (props, "IntInst"), "#F10");
616 Assert.IsFalse (ContainsProperty (props, "PrivStatBase"), "#F11");
617 Assert.IsFalse (ContainsProperty (props, "ProtStatBase"), "#F12");
618 Assert.IsFalse (ContainsProperty (props, "ProIntStatBase"), "#F13");
619 Assert.IsFalse (ContainsProperty (props, "PubStatBase"), "#F14");
620 Assert.IsFalse (ContainsProperty (props, "IntStatBase"), "#F15");
621 Assert.IsFalse (ContainsProperty (props, "PrivStat"), "#F16");
622 Assert.IsFalse (ContainsProperty (props, "ProtStat"), "#F17");
623 Assert.IsFalse (ContainsProperty (props, "ProIntStat"), "#F18");
624 Assert.IsFalse (ContainsProperty (props, "PubStat"), "#F19");
625 Assert.IsFalse (ContainsProperty (props, "IntStat"), "#F20");
626 Assert.IsFalse (ContainsProperty (props, "PrivInstBlue"), "#F21");
627 Assert.IsFalse (ContainsProperty (props, "ProtInstBlue"), "#F22");
628 Assert.IsFalse (ContainsProperty (props, "ProIntInstBlue"), "#F23");
629 Assert.IsTrue (ContainsProperty (props, "PubInstBlue"), "#F24");
630 Assert.IsFalse (ContainsProperty (props, "IntInstBlue"), "#F25");
631 Assert.IsFalse (ContainsProperty (props, "PrivStatBlue"), "#F26");
632 Assert.IsFalse (ContainsProperty (props, "ProtStatBlue"), "#F27");
633 Assert.IsFalse (ContainsProperty (props, "ProIntStatBlue"), "#F28");
634 Assert.IsFalse (ContainsProperty (props, "PubStatBlue"), "#F29");
635 Assert.IsFalse (ContainsProperty (props, "IntStatBlue"), "#F30");
637 flags = BindingFlags.Static | BindingFlags.Public |
638 BindingFlags.FlattenHierarchy;
639 props = type.GetProperties (flags);
641 Assert.IsFalse (ContainsProperty (props, "PrivInstBase"), "#G1");
642 Assert.IsFalse (ContainsProperty (props, "ProtInstBase"), "#G2");
643 Assert.IsFalse (ContainsProperty (props, "ProIntInstBase"), "#G3");
644 Assert.IsFalse (ContainsProperty (props, "PubInstBase"), "#G4");
645 Assert.IsFalse (ContainsProperty (props, "IntInstBase"), "#G5");
646 Assert.IsFalse (ContainsProperty (props, "PrivInst"), "#G6");
647 Assert.IsFalse (ContainsProperty (props, "ProtInst"), "#G7");
648 Assert.IsFalse (ContainsProperty (props, "ProIntInst"), "#G8");
649 Assert.IsFalse (ContainsProperty (props, "PubInst"), "#G9");
650 Assert.IsFalse (ContainsProperty (props, "IntInst"), "#G10");
651 Assert.IsFalse (ContainsProperty (props, "PrivStatBase"), "#G11");
652 Assert.IsFalse (ContainsProperty (props, "ProtStatBase"), "#G12");
653 Assert.IsFalse (ContainsProperty (props, "ProIntStatBase"), "#G13");
654 Assert.IsTrue (ContainsProperty (props, "PubStatBase"), "#G14");
655 Assert.IsFalse (ContainsProperty (props, "IntStatBase"), "#G15");
656 Assert.IsFalse (ContainsProperty (props, "PrivStat"), "#G16");
657 Assert.IsFalse (ContainsProperty (props, "ProtStat"), "#G17");
658 Assert.IsFalse (ContainsProperty (props, "ProIntStat"), "#G18");
659 Assert.IsTrue (ContainsProperty (props, "PubStat"), "#G19");
660 Assert.IsFalse (ContainsProperty (props, "IntStat"), "#G20");
661 Assert.IsFalse (ContainsProperty (props, "PrivInstBlue"), "#G21");
662 Assert.IsFalse (ContainsProperty (props, "ProtInstBlue"), "#G22");
663 Assert.IsFalse (ContainsProperty (props, "ProIntInstBlue"), "#G23");
664 Assert.IsFalse (ContainsProperty (props, "PubInstBlue"), "#G24");
665 Assert.IsFalse (ContainsProperty (props, "IntInstBlue"), "#G25");
666 Assert.IsFalse (ContainsProperty (props, "PrivStatBlue"), "#G26");
667 Assert.IsFalse (ContainsProperty (props, "ProtStatBlue"), "#G27");
668 Assert.IsFalse (ContainsProperty (props, "ProIntStatBlue"), "#G28");
669 Assert.IsTrue (ContainsProperty (props, "PubStatBlue"), "#G29");
670 Assert.IsFalse (ContainsProperty (props, "IntStatBlue"), "#G30");
672 flags = BindingFlags.Static | BindingFlags.NonPublic |
673 BindingFlags.FlattenHierarchy;
674 props = type.GetProperties (flags);
676 Assert.IsFalse (ContainsProperty (props, "PrivInstBase"), "#H1");
677 Assert.IsFalse (ContainsProperty (props, "ProtInstBase"), "#H2");
678 Assert.IsFalse (ContainsProperty (props, "ProIntInstBase"), "#H3");
679 Assert.IsFalse (ContainsProperty (props, "PubInstBase"), "#H4");
680 Assert.IsFalse (ContainsProperty (props, "IntInstBase"), "#H5");
681 Assert.IsFalse (ContainsProperty (props, "PrivInst"), "#H6");
682 Assert.IsFalse (ContainsProperty (props, "ProtInst"), "#H7");
683 Assert.IsFalse (ContainsProperty (props, "ProIntInst"), "#H8");
684 Assert.IsFalse (ContainsProperty (props, "PubInst"), "#H9");
685 Assert.IsFalse (ContainsProperty (props, "IntInst"), "#H10");
686 Assert.IsFalse (ContainsProperty (props, "PrivStatBase"), "#H11");
687 Assert.IsTrue (ContainsProperty (props, "ProtStatBase"), "#H12");
688 Assert.IsTrue (ContainsProperty (props, "ProIntStatBase"), "#H13");
689 Assert.IsFalse (ContainsProperty (props, "PubStatBase"), "#H14");
690 Assert.IsTrue (ContainsProperty (props, "IntStatBase"), "#H15");
691 Assert.IsTrue (ContainsProperty (props, "PrivStat"), "#H16");
692 Assert.IsTrue (ContainsProperty (props, "ProtStat"), "#H17");
693 Assert.IsTrue (ContainsProperty (props, "ProIntStat"), "#H18");
694 Assert.IsFalse (ContainsProperty (props, "PubStat"), "#H19");
695 Assert.IsTrue (ContainsProperty (props, "IntStat"), "#H20");
696 Assert.IsFalse (ContainsProperty (props, "PrivInstBlue"), "#H21");
697 Assert.IsFalse (ContainsProperty (props, "ProtInstBlue"), "#H22");
698 Assert.IsFalse (ContainsProperty (props, "ProIntInstBlue"), "#H23");
699 Assert.IsFalse (ContainsProperty (props, "PubInstBlue"), "#H24");
700 Assert.IsFalse (ContainsProperty (props, "IntInstBlue"), "#H25");
701 Assert.IsFalse (ContainsProperty (props, "PrivStatBlue"), "#H26");
702 Assert.IsTrue (ContainsProperty (props, "ProtStatBlue"), "#H27");
703 Assert.IsTrue (ContainsProperty (props, "ProIntStatBlue"), "#H28");
704 Assert.IsFalse (ContainsProperty (props, "PubStatBlue"), "#H29");
705 Assert.IsTrue (ContainsProperty (props, "IntStatBlue"), "#H30");
707 flags = BindingFlags.Instance | BindingFlags.NonPublic |
708 BindingFlags.DeclaredOnly;
709 props = type.GetProperties (flags);
711 Assert.IsFalse (ContainsProperty (props, "PrivInstBase"), "#I1");
712 Assert.IsFalse (ContainsProperty (props, "ProtInstBase"), "#I2");
713 Assert.IsFalse (ContainsProperty (props, "ProIntInstBase"), "#I3");
714 Assert.IsFalse (ContainsProperty (props, "PubInstBase"), "#I4");
715 Assert.IsFalse (ContainsProperty (props, "IntInstBase"), "#I5");
716 Assert.IsTrue (ContainsProperty (props, "PrivInst"), "#I6");
717 Assert.IsTrue (ContainsProperty (props, "ProtInst"), "#I7");
718 Assert.IsTrue (ContainsProperty (props, "ProIntInst"), "#I8");
719 Assert.IsFalse (ContainsProperty (props, "PubInst"), "#I9");
720 Assert.IsTrue (ContainsProperty (props, "IntInst"), "#I10");
721 Assert.IsFalse (ContainsProperty (props, "PrivStatBase"), "#I11");
722 Assert.IsFalse (ContainsProperty (props, "ProtStatBase"), "#I12");
723 Assert.IsFalse (ContainsProperty (props, "ProIntStatBase"), "#I13");
724 Assert.IsFalse (ContainsProperty (props, "PubStatBase"), "#I14");
725 Assert.IsFalse (ContainsProperty (props, "IntStatBase"), "#I15");
726 Assert.IsFalse (ContainsProperty (props, "PrivStat"), "#I16");
727 Assert.IsFalse (ContainsProperty (props, "ProtStat"), "#I17");
728 Assert.IsFalse (ContainsProperty (props, "ProIntStat"), "#I18");
729 Assert.IsFalse (ContainsProperty (props, "PubStat"), "#I19");
730 Assert.IsFalse (ContainsProperty (props, "IntStat"), "#I20");
731 Assert.IsFalse (ContainsProperty (props, "PrivInstBlue"), "#I21");
732 Assert.IsFalse (ContainsProperty (props, "ProtInstBlue"), "#I22");
733 Assert.IsFalse (ContainsProperty (props, "ProIntInstBlue"), "#I23");
734 Assert.IsFalse (ContainsProperty (props, "PubInstBlue"), "#I24");
735 Assert.IsFalse (ContainsProperty (props, "IntInstBlue"), "#I25");
736 Assert.IsFalse (ContainsProperty (props, "PrivStatBlue"), "#I26");
737 Assert.IsFalse (ContainsProperty (props, "ProtStatBlue"), "#I27");
738 Assert.IsFalse (ContainsProperty (props, "ProIntStatBlue"), "#I28");
739 Assert.IsFalse (ContainsProperty (props, "PubStatBlue"), "#I29");
740 Assert.IsFalse (ContainsProperty (props, "IntStatBlue"), "#I30");
742 flags = BindingFlags.Instance | BindingFlags.Public |
743 BindingFlags.DeclaredOnly;
744 props = type.GetProperties (flags);
746 Assert.IsFalse (ContainsProperty (props, "PrivInstBase"), "#J1");
747 Assert.IsFalse (ContainsProperty (props, "ProtInstBase"), "#J2");
748 Assert.IsFalse (ContainsProperty (props, "ProIntInstBase"), "#J3");
749 Assert.IsFalse (ContainsProperty (props, "PubInstBase"), "#J4");
750 Assert.IsFalse (ContainsProperty (props, "IntInstBase"), "#J5");
751 Assert.IsFalse (ContainsProperty (props, "PrivInst"), "#J6");
752 Assert.IsFalse (ContainsProperty (props, "ProtInst"), "#J7");
753 Assert.IsFalse (ContainsProperty (props, "ProIntInst"), "#J8");
754 Assert.IsTrue (ContainsProperty (props, "PubInst"), "#J9");
755 Assert.IsFalse (ContainsProperty (props, "IntInst"), "#J10");
756 Assert.IsFalse (ContainsProperty (props, "PrivStatBase"), "#J11");
757 Assert.IsFalse (ContainsProperty (props, "ProtStatBase"), "#J12");
758 Assert.IsFalse (ContainsProperty (props, "ProIntStatBase"), "#J13");
759 Assert.IsFalse (ContainsProperty (props, "PubStatBase"), "#J14");
760 Assert.IsFalse (ContainsProperty (props, "IntStatBase"), "#J15");
761 Assert.IsFalse (ContainsProperty (props, "PrivStat"), "#J16");
762 Assert.IsFalse (ContainsProperty (props, "ProtStat"), "#J17");
763 Assert.IsFalse (ContainsProperty (props, "ProIntStat"), "#J18");
764 Assert.IsFalse (ContainsProperty (props, "PubStat"), "#J19");
765 Assert.IsFalse (ContainsProperty (props, "IntStat"), "#J20");
766 Assert.IsFalse (ContainsProperty (props, "PrivInstBlue"), "#J21");
767 Assert.IsFalse (ContainsProperty (props, "ProtInstBlue"), "#J22");
768 Assert.IsFalse (ContainsProperty (props, "ProIntInstBlue"), "#J23");
769 Assert.IsFalse (ContainsProperty (props, "PubInstBlue"), "#J24");
770 Assert.IsFalse (ContainsProperty (props, "IntInstBlue"), "#J25");
771 Assert.IsFalse (ContainsProperty (props, "PrivStatBlue"), "#J26");
772 Assert.IsFalse (ContainsProperty (props, "ProtStatBlue"), "#J27");
773 Assert.IsFalse (ContainsProperty (props, "ProIntStatBlue"), "#J28");
774 Assert.IsFalse (ContainsProperty (props, "PubStatBlue"), "#J29");
775 Assert.IsFalse (ContainsProperty (props, "IntStatBlue"), "#J30");
777 flags = BindingFlags.Static | BindingFlags.Public |
778 BindingFlags.DeclaredOnly;
779 props = type.GetProperties (flags);
781 Assert.IsFalse (ContainsProperty (props, "PrivInstBase"), "#K1");
782 Assert.IsFalse (ContainsProperty (props, "ProtInstBase"), "#K2");
783 Assert.IsFalse (ContainsProperty (props, "ProIntInstBase"), "#K3");
784 Assert.IsFalse (ContainsProperty (props, "PubInstBase"), "#K4");
785 Assert.IsFalse (ContainsProperty (props, "IntInstBase"), "#K5");
786 Assert.IsFalse (ContainsProperty (props, "PrivInst"), "#K6");
787 Assert.IsFalse (ContainsProperty (props, "ProtInst"), "#K7");
788 Assert.IsFalse (ContainsProperty (props, "ProIntInst"), "#K8");
789 Assert.IsFalse (ContainsProperty (props, "PubInst"), "#K9");
790 Assert.IsFalse (ContainsProperty (props, "IntInst"), "#K10");
791 Assert.IsFalse (ContainsProperty (props, "PrivStatBase"), "#K11");
792 Assert.IsFalse (ContainsProperty (props, "ProtStatBase"), "#K12");
793 Assert.IsFalse (ContainsProperty (props, "ProIntStatBase"), "#K13");
794 Assert.IsFalse (ContainsProperty (props, "PubStatBase"), "#K14");
795 Assert.IsFalse (ContainsProperty (props, "IntStatBase"), "#K15");
796 Assert.IsFalse (ContainsProperty (props, "PrivStat"), "#K16");
797 Assert.IsFalse (ContainsProperty (props, "ProtStat"), "#K17");
798 Assert.IsFalse (ContainsProperty (props, "ProIntStat"), "#K18");
799 Assert.IsTrue (ContainsProperty (props, "PubStat"), "#K19");
800 Assert.IsFalse (ContainsProperty (props, "IntStat"), "#K20");
801 Assert.IsFalse (ContainsProperty (props, "PrivInstBlue"), "#K21");
802 Assert.IsFalse (ContainsProperty (props, "ProtInstBlue"), "#K22");
803 Assert.IsFalse (ContainsProperty (props, "ProIntInstBlue"), "#K23");
804 Assert.IsFalse (ContainsProperty (props, "PubInstBlue"), "#K24");
805 Assert.IsFalse (ContainsProperty (props, "IntInstBlue"), "#K25");
806 Assert.IsFalse (ContainsProperty (props, "PrivStatBlue"), "#K26");
807 Assert.IsFalse (ContainsProperty (props, "ProtStatBlue"), "#K27");
808 Assert.IsFalse (ContainsProperty (props, "ProIntStatBlue"), "#K28");
809 Assert.IsFalse (ContainsProperty (props, "PubStatBlue"), "#K29");
810 Assert.IsFalse (ContainsProperty (props, "IntStatBlue"), "#K30");
812 flags = BindingFlags.Static | BindingFlags.NonPublic |
813 BindingFlags.DeclaredOnly;
814 props = type.GetProperties (flags);
816 Assert.IsFalse (ContainsProperty (props, "PrivInstBase"), "#L1");
817 Assert.IsFalse (ContainsProperty (props, "ProtInstBase"), "#L2");
818 Assert.IsFalse (ContainsProperty (props, "ProIntInstBase"), "#L3");
819 Assert.IsFalse (ContainsProperty (props, "PubInstBase"), "#L4");
820 Assert.IsFalse (ContainsProperty (props, "IntInstBase"), "#L5");
821 Assert.IsFalse (ContainsProperty (props, "PrivInst"), "#L6");
822 Assert.IsFalse (ContainsProperty (props, "ProtInst"), "#L7");
823 Assert.IsFalse (ContainsProperty (props, "ProIntInst"), "#L8");
824 Assert.IsFalse (ContainsProperty (props, "PubInst"), "#L9");
825 Assert.IsFalse (ContainsProperty (props, "IntInst"), "#L10");
826 Assert.IsFalse (ContainsProperty (props, "PrivStatBase"), "#L11");
827 Assert.IsFalse (ContainsProperty (props, "ProtStatBase"), "#L12");
828 Assert.IsFalse (ContainsProperty (props, "ProIntStatBase"), "#L13");
829 Assert.IsFalse (ContainsProperty (props, "PubStatBase"), "#L14");
830 Assert.IsFalse (ContainsProperty (props, "IntStatBase"), "#L15");
831 Assert.IsTrue (ContainsProperty (props, "PrivStat"), "#L16");
832 Assert.IsTrue (ContainsProperty (props, "ProtStat"), "#L17");
833 Assert.IsTrue (ContainsProperty (props, "ProIntStat"), "#L18");
834 Assert.IsFalse (ContainsProperty (props, "PubStat"), "#L19");
835 Assert.IsTrue (ContainsProperty (props, "IntStat"), "#L20");
836 Assert.IsFalse (ContainsProperty (props, "PrivInstBlue"), "#L21");
837 Assert.IsFalse (ContainsProperty (props, "ProtInstBlue"), "#L22");
838 Assert.IsFalse (ContainsProperty (props, "ProIntInstBlue"), "#L23");
839 Assert.IsFalse (ContainsProperty (props, "PubInstBlue"), "#L24");
840 Assert.IsFalse (ContainsProperty (props, "IntInstBlue"), "#L25");
841 Assert.IsFalse (ContainsProperty (props, "PrivStatBlue"), "#L26");
842 Assert.IsFalse (ContainsProperty (props, "ProtStatBlue"), "#L27");
843 Assert.IsFalse (ContainsProperty (props, "ProIntStatBlue"), "#L28");
844 Assert.IsFalse (ContainsProperty (props, "PubStatBlue"), "#L29");
845 Assert.IsFalse (ContainsProperty (props, "IntStatBlue"), "#L30");
847 flags = BindingFlags.Instance | BindingFlags.NonPublic |
849 props = type.GetProperties (flags);
851 Assert.IsFalse (ContainsProperty (props, "PrivInstBase"), "#M1");
852 Assert.IsTrue (ContainsProperty (props, "ProtInstBase"), "#M2");
853 Assert.IsTrue (ContainsProperty (props, "ProIntInstBase"), "#M3");
854 Assert.IsTrue (ContainsProperty (props, "PubInstBase"), "#M4");
855 Assert.IsTrue (ContainsProperty (props, "IntInstBase"), "#M5");
856 Assert.IsTrue (ContainsProperty (props, "PrivInst"), "#M6");
857 Assert.IsTrue (ContainsProperty (props, "ProtInst"), "#M7");
858 Assert.IsTrue (ContainsProperty (props, "ProIntInst"), "#M8");
859 Assert.IsTrue (ContainsProperty (props, "PubInst"), "#M9");
860 Assert.IsTrue (ContainsProperty (props, "IntInst"), "#M10");
861 Assert.IsFalse (ContainsProperty (props, "PrivStatBase"), "#M11");
862 Assert.IsFalse (ContainsProperty (props, "ProtStatBase"), "#M12");
863 Assert.IsFalse (ContainsProperty (props, "ProIntStatBase"), "#M13");
864 Assert.IsFalse (ContainsProperty (props, "PubStatBase"), "#M14");
865 Assert.IsFalse (ContainsProperty (props, "IntStatBase"), "#M15");
866 Assert.IsFalse (ContainsProperty (props, "PrivStat"), "#M16");
867 Assert.IsFalse (ContainsProperty (props, "ProtStat"), "#M17");
868 Assert.IsFalse (ContainsProperty (props, "ProIntStat"), "#M18");
869 Assert.IsFalse (ContainsProperty (props, "PubStat"), "#M19");
870 Assert.IsFalse (ContainsProperty (props, "IntStat"), "#M20");
871 Assert.IsFalse (ContainsProperty (props, "PrivInstBlue"), "#M21");
872 Assert.IsTrue (ContainsProperty (props, "ProtInstBlue"), "#M22");
873 Assert.IsTrue (ContainsProperty (props, "ProIntInstBlue"), "#M23");
874 Assert.IsTrue (ContainsProperty (props, "PubInstBlue"), "#M24");
875 Assert.IsTrue (ContainsProperty (props, "IntInstBlue"), "#M25");
876 Assert.IsFalse (ContainsProperty (props, "PrivStatBlue"), "#M26");
877 Assert.IsFalse (ContainsProperty (props, "ProtStatBlue"), "#M27");
878 Assert.IsFalse (ContainsProperty (props, "ProIntStatBlue"), "#M28");
879 Assert.IsFalse (ContainsProperty (props, "PubStatBlue"), "#M29");
880 Assert.IsFalse (ContainsProperty (props, "IntStatBlue"), "#M30");
882 flags = BindingFlags.Static | BindingFlags.NonPublic |
884 props = type.GetProperties (flags);
886 Assert.IsFalse (ContainsProperty (props, "PrivInstBase"), "#N1");
887 Assert.IsFalse (ContainsProperty (props, "ProtInstBase"), "#N2");
888 Assert.IsFalse (ContainsProperty (props, "ProIntInstBase"), "#N3");
889 Assert.IsFalse (ContainsProperty (props, "PubInstBase"), "#N4");
890 Assert.IsFalse (ContainsProperty (props, "IntInstBase"), "#N5");
891 Assert.IsFalse (ContainsProperty (props, "PrivInst"), "#N6");
892 Assert.IsFalse (ContainsProperty (props, "ProtInst"), "#N7");
893 Assert.IsFalse (ContainsProperty (props, "ProIntInst"), "#N8");
894 Assert.IsFalse (ContainsProperty (props, "PubInst"), "#N9");
895 Assert.IsFalse (ContainsProperty (props, "IntInst"), "#N10");
896 Assert.IsFalse (ContainsProperty (props, "PrivStatBase"), "#N11");
897 Assert.IsFalse (ContainsProperty (props, "ProtStatBase"), "#N12");
898 Assert.IsFalse (ContainsProperty (props, "ProIntStatBase"), "#N13");
899 Assert.IsFalse (ContainsProperty (props, "PubStatBase"), "#N14");
900 Assert.IsFalse (ContainsProperty (props, "IntStatBase"), "#N15");
901 Assert.IsTrue (ContainsProperty (props, "PrivStat"), "#N16");
902 Assert.IsTrue (ContainsProperty (props, "ProtStat"), "#N17");
903 Assert.IsTrue (ContainsProperty (props, "ProIntStat"), "#N18");
904 Assert.IsTrue (ContainsProperty (props, "PubStat"), "#N19");
905 Assert.IsTrue (ContainsProperty (props, "IntStat"), "#N20");
906 Assert.IsFalse (ContainsProperty (props, "PrivInstBlue"), "#N21");
907 Assert.IsFalse (ContainsProperty (props, "ProtInstBlue"), "#N22");
908 Assert.IsFalse (ContainsProperty (props, "ProIntInstBlue"), "#N23");
909 Assert.IsFalse (ContainsProperty (props, "PubInstBlue"), "#N24");
910 Assert.IsFalse (ContainsProperty (props, "IntInstBlue"), "#N25");
911 Assert.IsFalse (ContainsProperty (props, "PrivStatBlue"), "#N26");
912 Assert.IsFalse (ContainsProperty (props, "ProtStatBlue"), "#N27");
913 Assert.IsFalse (ContainsProperty (props, "ProIntStatBlue"), "#N28");
914 Assert.IsFalse (ContainsProperty (props, "PubStatBlue"), "#N29");
915 Assert.IsFalse (ContainsProperty (props, "IntStatBlue"), "#N30");
918 [Test] // GetProperty (String)
919 public void GetProperty1_Name_Null ()
921 Type type = typeof (Bar);
923 type.GetProperty ((string) null);
925 } catch (ArgumentNullException ex) {
926 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
927 Assert.IsNull (ex.InnerException, "#3");
928 Assert.IsNotNull (ex.Message, "#4");
929 Assert.IsNotNull (ex.ParamName, "#5");
930 Assert.AreEqual ("name", ex.ParamName, "#6");
934 [Test] // GetProperty (String, BindingFlags)
935 public void GetProperty2 ()
937 Type type = typeof (Bar);
940 flags = BindingFlags.Instance | BindingFlags.NonPublic;
942 Assert.IsNull (type.GetProperty ("PrivInstBase", flags), "#A1");
943 Assert.IsNotNull (type.GetProperty ("ProtInstBase", flags), "#A2");
944 Assert.IsNotNull (type.GetProperty ("ProIntInstBase", flags), "#A3");
945 Assert.IsNull (type.GetProperty ("PubInstBase", flags), "#A4");
946 Assert.IsNotNull (type.GetProperty ("IntInstBase", flags), "#A5");
947 Assert.IsNotNull (type.GetProperty ("PrivInst", flags), "#A6");
948 Assert.IsNotNull (type.GetProperty ("ProtInst", flags), "#A7");
949 Assert.IsNotNull (type.GetProperty ("ProIntInst", flags), "#A8");
950 Assert.IsNull (type.GetProperty ("PubInst", flags), "#A9");
951 Assert.IsNotNull (type.GetProperty ("IntInst", flags), "#A10");
952 Assert.IsNull (type.GetProperty ("PrivStatBase", flags), "#A11");
953 Assert.IsNull (type.GetProperty ("ProtStatBase", flags), "#A12");
954 Assert.IsNull (type.GetProperty ("ProIntStatBase", flags), "#A13");
955 Assert.IsNull (type.GetProperty ("PubStatBase", flags), "#A14");
956 Assert.IsNull (type.GetProperty ("IntStatBase", flags), "#A15");
957 Assert.IsNull (type.GetProperty ("PrivStat", flags), "#A16");
958 Assert.IsNull (type.GetProperty ("ProtStat", flags), "#A17");
959 Assert.IsNull (type.GetProperty ("ProIntStat", flags), "#A18");
960 Assert.IsNull (type.GetProperty ("PubStat", flags), "#A19");
961 Assert.IsNull (type.GetProperty ("IntStat", flags), "#A20");
962 Assert.IsNull (type.GetProperty ("PrivInstBlue", flags), "#A21");
963 Assert.IsNotNull (type.GetProperty ("ProtInstBlue", flags), "#A22");
964 Assert.IsNotNull (type.GetProperty ("ProIntInstBlue", flags), "#A23");
965 Assert.IsNull (type.GetProperty ("PubInstBlue", flags), "#A24");
966 Assert.IsNotNull (type.GetProperty ("IntInstBlue", flags), "#A25");
967 Assert.IsNull (type.GetProperty ("PrivStatBlue", flags), "#A26");
968 Assert.IsNull (type.GetProperty ("ProtStatBlue", flags), "#A27");
969 Assert.IsNull (type.GetProperty ("ProIntStatBlue", flags), "#A28");
970 Assert.IsNull (type.GetProperty ("PubStatBlue", flags), "#A29");
971 Assert.IsNull (type.GetProperty ("IntStatBlue", flags), "#A30");
973 flags = BindingFlags.Instance | BindingFlags.Public;
975 Assert.IsNull (type.GetProperty ("PrivInstBase", flags), "#B1");
976 Assert.IsNull (type.GetProperty ("ProtInstBase", flags), "#B2");
977 Assert.IsNull (type.GetProperty ("ProIntInstBase", flags), "#B3");
978 Assert.IsNotNull (type.GetProperty ("PubInstBase", flags), "#B4");
979 Assert.IsNull (type.GetProperty ("IntInstBase", flags), "#B5");
980 Assert.IsNull (type.GetProperty ("PrivInst", flags), "#B6");
981 Assert.IsNull (type.GetProperty ("ProtInst", flags), "#B7");
982 Assert.IsNull (type.GetProperty ("ProIntInst", flags), "#B8");
983 Assert.IsNotNull (type.GetProperty ("PubInst", flags), "#B9");
984 Assert.IsNull (type.GetProperty ("IntInst", flags), "#B10");
985 Assert.IsNull (type.GetProperty ("PrivStatBase", flags), "#B11");
986 Assert.IsNull (type.GetProperty ("ProtStatBase", flags), "#B12");
987 Assert.IsNull (type.GetProperty ("ProIntStatBase", flags), "#B13");
988 Assert.IsNull (type.GetProperty ("PubStatBase", flags), "#B14");
989 Assert.IsNull (type.GetProperty ("IntStatBase", flags), "#B15");
990 Assert.IsNull (type.GetProperty ("PrivStat", flags), "#B16");
991 Assert.IsNull (type.GetProperty ("ProtStat", flags), "#B17");
992 Assert.IsNull (type.GetProperty ("ProIntStat", flags), "#B18");
993 Assert.IsNull (type.GetProperty ("PubStat", flags), "#B19");
994 Assert.IsNull (type.GetProperty ("IntStat", flags), "#B20");
995 Assert.IsNull (type.GetProperty ("PrivInstBlue", flags), "#B21");
996 Assert.IsNull (type.GetProperty ("ProtInstBlue", flags), "#B22");
997 Assert.IsNull (type.GetProperty ("ProIntInstBlue", flags), "#B23");
998 Assert.IsNotNull (type.GetProperty ("PubInstBlue", flags), "#B24");
999 Assert.IsNull (type.GetProperty ("IntInstBlue", flags), "#B25");
1000 Assert.IsNull (type.GetProperty ("PrivStatBlue", flags), "#B26");
1001 Assert.IsNull (type.GetProperty ("ProtStatBlue", flags), "#B27");
1002 Assert.IsNull (type.GetProperty ("ProIntStatBlue", flags), "#B28");
1003 Assert.IsNull (type.GetProperty ("PubStatBlue", flags), "#B29");
1004 Assert.IsNull (type.GetProperty ("IntStatBlue", flags), "#B30");
1006 flags = BindingFlags.Static | BindingFlags.Public;
1008 Assert.IsNull (type.GetProperty ("PrivInstBase", flags), "#C1");
1009 Assert.IsNull (type.GetProperty ("ProtInstBase", flags), "#C2");
1010 Assert.IsNull (type.GetProperty ("ProIntInstBase", flags), "#C3");
1011 Assert.IsNull (type.GetProperty ("PubInstBase", flags), "#C4");
1012 Assert.IsNull (type.GetProperty ("IntInstBase", flags), "#C5");
1013 Assert.IsNull (type.GetProperty ("PrivInst", flags), "#C6");
1014 Assert.IsNull (type.GetProperty ("ProtInst", flags), "#C7");
1015 Assert.IsNull (type.GetProperty ("ProIntInst", flags), "#C8");
1016 Assert.IsNull (type.GetProperty ("PubInst", flags), "#C9");
1017 Assert.IsNull (type.GetProperty ("IntInst", flags), "#C10");
1018 Assert.IsNull (type.GetProperty ("PrivStatBase", flags), "#C11");
1019 Assert.IsNull (type.GetProperty ("ProtStatBase", flags), "#C12");
1020 Assert.IsNull (type.GetProperty ("ProIntStatBase", flags), "#C13");
1021 Assert.IsNull (type.GetProperty ("PubStatBase", flags), "#C14");
1022 Assert.IsNull (type.GetProperty ("IntStatBase", flags), "#C15");
1023 Assert.IsNull (type.GetProperty ("PrivStat", flags), "#C16");
1024 Assert.IsNull (type.GetProperty ("ProtStat", flags), "#C17");
1025 Assert.IsNull (type.GetProperty ("ProIntStat", flags), "#C18");
1026 Assert.IsNotNull (type.GetProperty ("PubStat", flags), "#C19");
1027 Assert.IsNull (type.GetProperty ("IntStat", flags), "#C20");
1028 Assert.IsNull (type.GetProperty ("PrivInstBlue", flags), "#C21");
1029 Assert.IsNull (type.GetProperty ("ProtInstBlue", flags), "#C22");
1030 Assert.IsNull (type.GetProperty ("ProIntInstBlue", flags), "#C23");
1031 Assert.IsNull (type.GetProperty ("PubInstBlue", flags), "#C24");
1032 Assert.IsNull (type.GetProperty ("IntInstBlue", flags), "#C25");
1033 Assert.IsNull (type.GetProperty ("PrivStatBlue", flags), "#C26");
1034 Assert.IsNull (type.GetProperty ("ProtStatBlue", flags), "#C27");
1035 Assert.IsNull (type.GetProperty ("ProIntStatBlue", flags), "#C28");
1036 Assert.IsNull (type.GetProperty ("PubStatBlue", flags), "#C29");
1037 Assert.IsNull (type.GetProperty ("IntStatBlue", flags), "#C30");
1039 flags = BindingFlags.Static | BindingFlags.NonPublic;
1041 Assert.IsNull (type.GetProperty ("PrivInstBase", flags), "#D1");
1042 Assert.IsNull (type.GetProperty ("ProtInstBase", flags), "#D2");
1043 Assert.IsNull (type.GetProperty ("ProIntInstBase", flags), "#D3");
1044 Assert.IsNull (type.GetProperty ("PubInstBase", flags), "#D4");
1045 Assert.IsNull (type.GetProperty ("IntInstBase", flags), "#D5");
1046 Assert.IsNull (type.GetProperty ("PrivInst", flags), "#D6");
1047 Assert.IsNull (type.GetProperty ("ProtInst", flags), "#D7");
1048 Assert.IsNull (type.GetProperty ("ProIntInst", flags), "#D8");
1049 Assert.IsNull (type.GetProperty ("PubInst", flags), "#D9");
1050 Assert.IsNull (type.GetProperty ("IntInst", flags), "#D10");
1051 Assert.IsNull (type.GetProperty ("PrivStatBase", flags), "#D11");
1052 Assert.IsNull (type.GetProperty ("ProtStatBase", flags), "#D12");
1053 Assert.IsNull (type.GetProperty ("ProIntStatBase", flags), "#D13");
1054 Assert.IsNull (type.GetProperty ("PubStatBase", flags), "#D14");
1055 Assert.IsNull (type.GetProperty ("IntStatBase", flags), "#D15");
1056 Assert.IsNotNull (type.GetProperty ("PrivStat", flags), "#D16");
1057 Assert.IsNotNull (type.GetProperty ("ProtStat", flags), "#D17");
1058 Assert.IsNotNull (type.GetProperty ("ProIntStat", flags), "#D18");
1059 Assert.IsNull (type.GetProperty ("PubStat", flags), "#D19");
1060 Assert.IsNotNull (type.GetProperty ("IntStat", flags), "#D20");
1061 Assert.IsNull (type.GetProperty ("PrivInstBlue", flags), "#D21");
1062 Assert.IsNull (type.GetProperty ("ProtInstBlue", flags), "#D22");
1063 Assert.IsNull (type.GetProperty ("ProIntInstBlue", flags), "#D23");
1064 Assert.IsNull (type.GetProperty ("PubInstBlue", flags), "#D24");
1065 Assert.IsNull (type.GetProperty ("IntInstBlue", flags), "#D25");
1066 Assert.IsNull (type.GetProperty ("PrivStatBlue", flags), "#D26");
1067 Assert.IsNull (type.GetProperty ("ProtStatBlue", flags), "#D27");
1068 Assert.IsNull (type.GetProperty ("ProIntStatBlue", flags), "#D28");
1069 Assert.IsNull (type.GetProperty ("PubStatBlue", flags), "#D29");
1070 Assert.IsNull (type.GetProperty ("IntStatBlue", flags), "#D30");
1072 flags = BindingFlags.Instance | BindingFlags.NonPublic |
1073 BindingFlags.FlattenHierarchy;
1075 Assert.IsNull (type.GetProperty ("PrivInstBase", flags), "#E1");
1076 Assert.IsNotNull (type.GetProperty ("ProtInstBase", flags), "#E2");
1077 Assert.IsNotNull (type.GetProperty ("ProIntInstBase", flags), "#E3");
1078 Assert.IsNull (type.GetProperty ("PubInstBase", flags), "#E4");
1079 Assert.IsNotNull (type.GetProperty ("IntInstBase", flags), "#E5");
1080 Assert.IsNotNull (type.GetProperty ("PrivInst", flags), "#E6");
1081 Assert.IsNotNull (type.GetProperty ("ProtInst", flags), "#E7");
1082 Assert.IsNotNull (type.GetProperty ("ProIntInst", flags), "#E8");
1083 Assert.IsNull (type.GetProperty ("PubInst", flags), "#E9");
1084 Assert.IsNotNull (type.GetProperty ("IntInst", flags), "#E10");
1085 Assert.IsNull (type.GetProperty ("PrivStatBase", flags), "#E11");
1086 Assert.IsNull (type.GetProperty ("ProtStatBase", flags), "#E12");
1087 Assert.IsNull (type.GetProperty ("ProIntStatBase", flags), "#E13");
1088 Assert.IsNull (type.GetProperty ("PubStatBase", flags), "#E14");
1089 Assert.IsNull (type.GetProperty ("IntStatBase", flags), "#E15");
1090 Assert.IsNull (type.GetProperty ("PrivStat", flags), "#E16");
1091 Assert.IsNull (type.GetProperty ("ProtStat", flags), "#E17");
1092 Assert.IsNull (type.GetProperty ("ProIntStat", flags), "#E18");
1093 Assert.IsNull (type.GetProperty ("PubStat", flags), "#E19");
1094 Assert.IsNull (type.GetProperty ("IntStat", flags), "#E20");
1095 Assert.IsNull (type.GetProperty ("PrivInstBlue", flags), "#E21");
1096 Assert.IsNotNull (type.GetProperty ("ProtInstBlue", flags), "#E22");
1097 Assert.IsNotNull (type.GetProperty ("ProIntInstBlue", flags), "#E23");
1098 Assert.IsNull (type.GetProperty ("PubInstBlue", flags), "#E24");
1099 Assert.IsNotNull (type.GetProperty ("IntInstBlue", flags), "#E25");
1100 Assert.IsNull (type.GetProperty ("PrivStatBlue", flags), "#E26");
1101 Assert.IsNull (type.GetProperty ("ProtStatBlue", flags), "#E27");
1102 Assert.IsNull (type.GetProperty ("ProIntStatBlue", flags), "#E28");
1103 Assert.IsNull (type.GetProperty ("PubStatBlue", flags), "#E29");
1104 Assert.IsNull (type.GetProperty ("IntStatBlue", flags), "#E30");
1106 flags = BindingFlags.Instance | BindingFlags.Public |
1107 BindingFlags.FlattenHierarchy;
1109 Assert.IsNull (type.GetProperty ("PrivInstBase", flags), "#F1");
1110 Assert.IsNull (type.GetProperty ("ProtInstBase", flags), "#F2");
1111 Assert.IsNull (type.GetProperty ("ProIntInstBase", flags), "#F3");
1112 Assert.IsNotNull (type.GetProperty ("PubInstBase", flags), "#F4");
1113 Assert.IsNull (type.GetProperty ("IntInstBase", flags), "#F5");
1114 Assert.IsNull (type.GetProperty ("PrivInst", flags), "#F6");
1115 Assert.IsNull (type.GetProperty ("ProtInst", flags), "#F7");
1116 Assert.IsNull (type.GetProperty ("ProIntInst", flags), "#F8");
1117 Assert.IsNotNull (type.GetProperty ("PubInst", flags), "#F9");
1118 Assert.IsNull (type.GetProperty ("IntInst", flags), "#F10");
1119 Assert.IsNull (type.GetProperty ("PrivStatBase", flags), "#F11");
1120 Assert.IsNull (type.GetProperty ("ProtStatBase", flags), "#F12");
1121 Assert.IsNull (type.GetProperty ("ProIntStatBase", flags), "#F13");
1122 Assert.IsNull (type.GetProperty ("PubStatBase", flags), "#F14");
1123 Assert.IsNull (type.GetProperty ("IntStatBase", flags), "#F15");
1124 Assert.IsNull (type.GetProperty ("PrivStat", flags), "#F16");
1125 Assert.IsNull (type.GetProperty ("ProtStat", flags), "#F17");
1126 Assert.IsNull (type.GetProperty ("ProIntStat", flags), "#F18");
1127 Assert.IsNull (type.GetProperty ("PubStat", flags), "#F19");
1128 Assert.IsNull (type.GetProperty ("IntStat", flags), "#F20");
1129 Assert.IsNull (type.GetProperty ("PrivInstBlue", flags), "#F21");
1130 Assert.IsNull (type.GetProperty ("ProtInstBlue", flags), "#F22");
1131 Assert.IsNull (type.GetProperty ("ProIntInstBlue", flags), "#F23");
1132 Assert.IsNotNull (type.GetProperty ("PubInstBlue", flags), "#F24");
1133 Assert.IsNull (type.GetProperty ("IntInstBlue", flags), "#F25");
1134 Assert.IsNull (type.GetProperty ("PrivStatBlue", flags), "#F26");
1135 Assert.IsNull (type.GetProperty ("ProtStatBlue", flags), "#F27");
1136 Assert.IsNull (type.GetProperty ("ProIntStatBlue", flags), "#F28");
1137 Assert.IsNull (type.GetProperty ("PubStatBlue", flags), "#F29");
1138 Assert.IsNull (type.GetProperty ("IntStatBlue", flags), "#F30");
1140 flags = BindingFlags.Static | BindingFlags.Public |
1141 BindingFlags.FlattenHierarchy;
1143 Assert.IsNull (type.GetProperty ("PrivInstBase", flags), "#G1");
1144 Assert.IsNull (type.GetProperty ("ProtInstBase", flags), "#G2");
1145 Assert.IsNull (type.GetProperty ("ProIntInstBase", flags), "#G3");
1146 Assert.IsNull (type.GetProperty ("PubInstBase", flags), "#G4");
1147 Assert.IsNull (type.GetProperty ("IntInstBase", flags), "#G5");
1148 Assert.IsNull (type.GetProperty ("PrivInst", flags), "#G6");
1149 Assert.IsNull (type.GetProperty ("ProtInst", flags), "#G7");
1150 Assert.IsNull (type.GetProperty ("ProIntInst", flags), "#G8");
1151 Assert.IsNull (type.GetProperty ("PubInst", flags), "#G9");
1152 Assert.IsNull (type.GetProperty ("IntInst", flags), "#G10");
1153 Assert.IsNull (type.GetProperty ("PrivStatBase", flags), "#G11");
1154 Assert.IsNull (type.GetProperty ("ProtStatBase", flags), "#G12");
1155 Assert.IsNull (type.GetProperty ("ProIntStatBase", flags), "#G13");
1156 Assert.IsNotNull (type.GetProperty ("PubStatBase", flags), "#G14");
1157 Assert.IsNull (type.GetProperty ("IntStatBase", flags), "#G15");
1158 Assert.IsNull (type.GetProperty ("PrivStat", flags), "#G16");
1159 Assert.IsNull (type.GetProperty ("ProtStat", flags), "#G17");
1160 Assert.IsNull (type.GetProperty ("ProIntStat", flags), "#G18");
1161 Assert.IsNotNull (type.GetProperty ("PubStat", flags), "#G19");
1162 Assert.IsNull (type.GetProperty ("IntStat", flags), "#G20");
1163 Assert.IsNull (type.GetProperty ("PrivInstBlue", flags), "#G21");
1164 Assert.IsNull (type.GetProperty ("ProtInstBlue", flags), "#G22");
1165 Assert.IsNull (type.GetProperty ("ProIntInstBlue", flags), "#G23");
1166 Assert.IsNull (type.GetProperty ("PubInstBlue", flags), "#G24");
1167 Assert.IsNull (type.GetProperty ("IntInstBlue", flags), "#G25");
1168 Assert.IsNull (type.GetProperty ("PrivStatBlue", flags), "#G26");
1169 Assert.IsNull (type.GetProperty ("ProtStatBlue", flags), "#G27");
1170 Assert.IsNull (type.GetProperty ("ProIntStatBlue", flags), "#G28");
1171 Assert.IsNotNull (type.GetProperty ("PubStatBlue", flags), "#G29");
1172 Assert.IsNull (type.GetProperty ("IntStatBlue", flags), "#G30");
1174 flags = BindingFlags.Static | BindingFlags.NonPublic |
1175 BindingFlags.FlattenHierarchy;
1177 Assert.IsNull (type.GetProperty ("PrivInstBase", flags), "#H1");
1178 Assert.IsNull (type.GetProperty ("ProtInstBase", flags), "#H2");
1179 Assert.IsNull (type.GetProperty ("ProIntInstBase", flags), "#H3");
1180 Assert.IsNull (type.GetProperty ("PubInstBase", flags), "#H4");
1181 Assert.IsNull (type.GetProperty ("IntInstBase", flags), "#H5");
1182 Assert.IsNull (type.GetProperty ("PrivInst", flags), "#H6");
1183 Assert.IsNull (type.GetProperty ("ProtInst", flags), "#H7");
1184 Assert.IsNull (type.GetProperty ("ProIntInst", flags), "#H8");
1185 Assert.IsNull (type.GetProperty ("PubInst", flags), "#H9");
1186 Assert.IsNull (type.GetProperty ("IntInst", flags), "#H10");
1187 Assert.IsNull (type.GetProperty ("PrivStatBase", flags), "#H11");
1188 Assert.IsNotNull (type.GetProperty ("ProtStatBase", flags), "#H12");
1189 Assert.IsNotNull (type.GetProperty ("ProIntStatBase", flags), "#H13");
1190 Assert.IsNull (type.GetProperty ("PubStatBase", flags), "#H14");
1191 Assert.IsNotNull (type.GetProperty ("IntStatBase", flags), "#H15");
1192 Assert.IsNotNull (type.GetProperty ("PrivStat", flags), "#H16");
1193 Assert.IsNotNull (type.GetProperty ("ProtStat", flags), "#H17");
1194 Assert.IsNotNull (type.GetProperty ("ProIntStat", flags), "#H18");
1195 Assert.IsNull (type.GetProperty ("PubStat", flags), "#H19");
1196 Assert.IsNotNull (type.GetProperty ("IntStat", flags), "#H20");
1197 Assert.IsNull (type.GetProperty ("PrivInstBlue", flags), "#H21");
1198 Assert.IsNull (type.GetProperty ("ProtInstBlue", flags), "#H22");
1199 Assert.IsNull (type.GetProperty ("ProIntInstBlue", flags), "#H23");
1200 Assert.IsNull (type.GetProperty ("PubInstBlue", flags), "#H24");
1201 Assert.IsNull (type.GetProperty ("IntInstBlue", flags), "#H25");
1202 Assert.IsNull (type.GetProperty ("PrivStatBlue", flags), "#H26");
1203 Assert.IsNotNull (type.GetProperty ("ProtStatBlue", flags), "#H27");
1204 Assert.IsNotNull (type.GetProperty ("ProIntStatBlue", flags), "#H28");
1205 Assert.IsNull (type.GetProperty ("PubStatBlue", flags), "#H29");
1206 Assert.IsNotNull (type.GetProperty ("IntStatBlue", flags), "#H30");
1208 flags = BindingFlags.Instance | BindingFlags.NonPublic |
1209 BindingFlags.DeclaredOnly;
1211 Assert.IsNull (type.GetProperty ("PrivInstBase", flags), "#I1");
1212 Assert.IsNull (type.GetProperty ("ProtInstBase", flags), "#I2");
1213 Assert.IsNull (type.GetProperty ("ProIntInstBase", flags), "#I3");
1214 Assert.IsNull (type.GetProperty ("PubInstBase", flags), "#I4");
1215 Assert.IsNull (type.GetProperty ("IntInstBase", flags), "#I5");
1216 Assert.IsNotNull (type.GetProperty ("PrivInst", flags), "#I6");
1217 Assert.IsNotNull (type.GetProperty ("ProtInst", flags), "#I7");
1218 Assert.IsNotNull (type.GetProperty ("ProIntInst", flags), "#I8");
1219 Assert.IsNull (type.GetProperty ("PubInst", flags), "#I9");
1220 Assert.IsNotNull (type.GetProperty ("IntInst", flags), "#I10");
1221 Assert.IsNull (type.GetProperty ("PrivStatBase", flags), "#I11");
1222 Assert.IsNull (type.GetProperty ("ProtStatBase", flags), "#I12");
1223 Assert.IsNull (type.GetProperty ("ProIntStatBase", flags), "#I13");
1224 Assert.IsNull (type.GetProperty ("PubStatBase", flags), "#I14");
1225 Assert.IsNull (type.GetProperty ("IntStatBase", flags), "#I15");
1226 Assert.IsNull (type.GetProperty ("PrivStat", flags), "#I16");
1227 Assert.IsNull (type.GetProperty ("ProtStat", flags), "#I17");
1228 Assert.IsNull (type.GetProperty ("ProIntStat", flags), "#I18");
1229 Assert.IsNull (type.GetProperty ("PubStat", flags), "#I19");
1230 Assert.IsNull (type.GetProperty ("IntStat", flags), "#I20");
1231 Assert.IsNull (type.GetProperty ("PrivInstBlue", flags), "#I21");
1232 Assert.IsNull (type.GetProperty ("ProtInstBlue", flags), "#I22");
1233 Assert.IsNull (type.GetProperty ("ProIntInstBlue", flags), "#I23");
1234 Assert.IsNull (type.GetProperty ("PubInstBlue", flags), "#I24");
1235 Assert.IsNull (type.GetProperty ("IntInstBlue", flags), "#I25");
1236 Assert.IsNull (type.GetProperty ("PrivStatBlue", flags), "#I26");
1237 Assert.IsNull (type.GetProperty ("ProtStatBlue", flags), "#I27");
1238 Assert.IsNull (type.GetProperty ("ProIntStatBlue", flags), "#I28");
1239 Assert.IsNull (type.GetProperty ("PubStatBlue", flags), "#I29");
1240 Assert.IsNull (type.GetProperty ("IntStatBlue", flags), "#I30");
1242 flags = BindingFlags.Instance | BindingFlags.Public |
1243 BindingFlags.DeclaredOnly;
1245 Assert.IsNull (type.GetProperty ("PrivInstBase", flags), "#J1");
1246 Assert.IsNull (type.GetProperty ("ProtInstBase", flags), "#J2");
1247 Assert.IsNull (type.GetProperty ("ProIntInstBase", flags), "#J3");
1248 Assert.IsNull (type.GetProperty ("PubInstBase", flags), "#J4");
1249 Assert.IsNull (type.GetProperty ("IntInstBase", flags), "#J5");
1250 Assert.IsNull (type.GetProperty ("PrivInst", flags), "#J6");
1251 Assert.IsNull (type.GetProperty ("ProtInst", flags), "#J7");
1252 Assert.IsNull (type.GetProperty ("ProIntInst", flags), "#J8");
1253 Assert.IsNotNull (type.GetProperty ("PubInst", flags), "#J9");
1254 Assert.IsNull (type.GetProperty ("IntInst", flags), "#J10");
1255 Assert.IsNull (type.GetProperty ("PrivStatBase", flags), "#J11");
1256 Assert.IsNull (type.GetProperty ("ProtStatBase", flags), "#J12");
1257 Assert.IsNull (type.GetProperty ("ProIntStatBase", flags), "#J13");
1258 Assert.IsNull (type.GetProperty ("PubStatBase", flags), "#J14");
1259 Assert.IsNull (type.GetProperty ("IntStatBase", flags), "#J15");
1260 Assert.IsNull (type.GetProperty ("PrivStat", flags), "#J16");
1261 Assert.IsNull (type.GetProperty ("ProtStat", flags), "#J17");
1262 Assert.IsNull (type.GetProperty ("ProIntStat", flags), "#J18");
1263 Assert.IsNull (type.GetProperty ("PubStat", flags), "#J19");
1264 Assert.IsNull (type.GetProperty ("IntStat", flags), "#J20");
1265 Assert.IsNull (type.GetProperty ("PrivInstBlue", flags), "#J21");
1266 Assert.IsNull (type.GetProperty ("ProtInstBlue", flags), "#J22");
1267 Assert.IsNull (type.GetProperty ("ProIntInstBlue", flags), "#J23");
1268 Assert.IsNull (type.GetProperty ("PubInstBlue", flags), "#J24");
1269 Assert.IsNull (type.GetProperty ("IntInstBlue", flags), "#J25");
1270 Assert.IsNull (type.GetProperty ("PrivStatBlue", flags), "#J26");
1271 Assert.IsNull (type.GetProperty ("ProtStatBlue", flags), "#J27");
1272 Assert.IsNull (type.GetProperty ("ProIntStatBlue", flags), "#J28");
1273 Assert.IsNull (type.GetProperty ("PubStatBlue", flags), "#J29");
1274 Assert.IsNull (type.GetProperty ("IntStatBlue", flags), "#J30");
1276 flags = BindingFlags.Static | BindingFlags.Public |
1277 BindingFlags.DeclaredOnly;
1279 Assert.IsNull (type.GetProperty ("PrivInstBase", flags), "#K1");
1280 Assert.IsNull (type.GetProperty ("ProtInstBase", flags), "#K2");
1281 Assert.IsNull (type.GetProperty ("ProIntInstBase", flags), "#K3");
1282 Assert.IsNull (type.GetProperty ("PubInstBase", flags), "#K4");
1283 Assert.IsNull (type.GetProperty ("IntInstBase", flags), "#K5");
1284 Assert.IsNull (type.GetProperty ("PrivInst", flags), "#K6");
1285 Assert.IsNull (type.GetProperty ("ProtInst", flags), "#K7");
1286 Assert.IsNull (type.GetProperty ("ProIntInst", flags), "#K8");
1287 Assert.IsNull (type.GetProperty ("PubInst", flags), "#K9");
1288 Assert.IsNull (type.GetProperty ("IntInst", flags), "#K10");
1289 Assert.IsNull (type.GetProperty ("PrivStatBase", flags), "#K11");
1290 Assert.IsNull (type.GetProperty ("ProtStatBase", flags), "#K12");
1291 Assert.IsNull (type.GetProperty ("ProIntStatBase", flags), "#K13");
1292 Assert.IsNull (type.GetProperty ("PubStatBase", flags), "#K14");
1293 Assert.IsNull (type.GetProperty ("IntStatBase", flags), "#K15");
1294 Assert.IsNull (type.GetProperty ("PrivStat", flags), "#K16");
1295 Assert.IsNull (type.GetProperty ("ProtStat", flags), "#K17");
1296 Assert.IsNull (type.GetProperty ("ProIntStat", flags), "#K18");
1297 Assert.IsNotNull (type.GetProperty ("PubStat", flags), "#K19");
1298 Assert.IsNull (type.GetProperty ("IntStat", flags), "#K20");
1299 Assert.IsNull (type.GetProperty ("PrivInstBlue", flags), "#K21");
1300 Assert.IsNull (type.GetProperty ("ProtInstBlue", flags), "#K22");
1301 Assert.IsNull (type.GetProperty ("ProIntInstBlue", flags), "#K23");
1302 Assert.IsNull (type.GetProperty ("PubInstBlue", flags), "#K24");
1303 Assert.IsNull (type.GetProperty ("IntInstBlue", flags), "#K25");
1304 Assert.IsNull (type.GetProperty ("PrivStatBlue", flags), "#K26");
1305 Assert.IsNull (type.GetProperty ("ProtStatBlue", flags), "#K27");
1306 Assert.IsNull (type.GetProperty ("ProIntStatBlue", flags), "#K28");
1307 Assert.IsNull (type.GetProperty ("PubStatBlue", flags), "#K29");
1308 Assert.IsNull (type.GetProperty ("IntStatBlue", flags), "#K30");
1310 flags = BindingFlags.Static | BindingFlags.NonPublic |
1311 BindingFlags.DeclaredOnly;
1313 Assert.IsNull (type.GetProperty ("PrivInstBase", flags), "#L1");
1314 Assert.IsNull (type.GetProperty ("ProtInstBase", flags), "#L2");
1315 Assert.IsNull (type.GetProperty ("ProIntInstBase", flags), "#L3");
1316 Assert.IsNull (type.GetProperty ("PubInstBase", flags), "#L4");
1317 Assert.IsNull (type.GetProperty ("IntInstBase", flags), "#L5");
1318 Assert.IsNull (type.GetProperty ("PrivInst", flags), "#L6");
1319 Assert.IsNull (type.GetProperty ("ProtInst", flags), "#L7");
1320 Assert.IsNull (type.GetProperty ("ProIntInst", flags), "#L8");
1321 Assert.IsNull (type.GetProperty ("PubInst", flags), "#L9");
1322 Assert.IsNull (type.GetProperty ("IntInst", flags), "#L10");
1323 Assert.IsNull (type.GetProperty ("PrivStatBase", flags), "#L11");
1324 Assert.IsNull (type.GetProperty ("ProtStatBase", flags), "#L12");
1325 Assert.IsNull (type.GetProperty ("ProIntStatBase", flags), "#L13");
1326 Assert.IsNull (type.GetProperty ("PubStatBase", flags), "#L14");
1327 Assert.IsNull (type.GetProperty ("IntStatBase", flags), "#L15");
1328 Assert.IsNotNull (type.GetProperty ("PrivStat", flags), "#L16");
1329 Assert.IsNotNull (type.GetProperty ("ProtStat", flags), "#L17");
1330 Assert.IsNotNull (type.GetProperty ("ProIntStat", flags), "#L18");
1331 Assert.IsNull (type.GetProperty ("PubStat", flags), "#L19");
1332 Assert.IsNotNull (type.GetProperty ("IntStat", flags), "#L20");
1333 Assert.IsNull (type.GetProperty ("PrivInstBlue", flags), "#L21");
1334 Assert.IsNull (type.GetProperty ("ProtInstBlue", flags), "#L22");
1335 Assert.IsNull (type.GetProperty ("ProIntInstBlue", flags), "#L23");
1336 Assert.IsNull (type.GetProperty ("PubInstBlue", flags), "#L24");
1337 Assert.IsNull (type.GetProperty ("IntInstBlue", flags), "#L25");
1338 Assert.IsNull (type.GetProperty ("PrivStatBlue", flags), "#L26");
1339 Assert.IsNull (type.GetProperty ("ProtStatBlue", flags), "#L27");
1340 Assert.IsNull (type.GetProperty ("ProIntStatBlue", flags), "#L28");
1341 Assert.IsNull (type.GetProperty ("PubStatBlue", flags), "#L29");
1342 Assert.IsNull (type.GetProperty ("IntStatBlue", flags), "#L30");
1344 flags = BindingFlags.Instance | BindingFlags.NonPublic |
1345 BindingFlags.Public;
1347 Assert.IsNull (type.GetProperty ("PrivInstBase", flags), "#M1");
1348 Assert.IsNotNull (type.GetProperty ("ProtInstBase", flags), "#M2");
1349 Assert.IsNotNull (type.GetProperty ("ProIntInstBase", flags), "#M3");
1350 Assert.IsNotNull (type.GetProperty ("PubInstBase", flags), "#M4");
1351 Assert.IsNotNull (type.GetProperty ("IntInstBase", flags), "#M5");
1352 Assert.IsNotNull (type.GetProperty ("PrivInst", flags), "#M6");
1353 Assert.IsNotNull (type.GetProperty ("ProtInst", flags), "#M7");
1354 Assert.IsNotNull (type.GetProperty ("ProIntInst", flags), "#M8");
1355 Assert.IsNotNull (type.GetProperty ("PubInst", flags), "#M9");
1356 Assert.IsNotNull (type.GetProperty ("IntInst", flags), "#M10");
1357 Assert.IsNull (type.GetProperty ("PrivStatBase", flags), "#M11");
1358 Assert.IsNull (type.GetProperty ("ProtStatBase", flags), "#M12");
1359 Assert.IsNull (type.GetProperty ("ProIntStatBase", flags), "#M13");
1360 Assert.IsNull (type.GetProperty ("PubStatBase", flags), "#M14");
1361 Assert.IsNull (type.GetProperty ("IntStatBase", flags), "#M15");
1362 Assert.IsNull (type.GetProperty ("PrivStat", flags), "#M16");
1363 Assert.IsNull (type.GetProperty ("ProtStat", flags), "#M17");
1364 Assert.IsNull (type.GetProperty ("ProIntStat", flags), "#M18");
1365 Assert.IsNull (type.GetProperty ("PubStat", flags), "#M19");
1366 Assert.IsNull (type.GetProperty ("IntStat", flags), "#M20");
1367 Assert.IsNull (type.GetProperty ("PrivInstBlue", flags), "#M21");
1368 Assert.IsNotNull (type.GetProperty ("ProtInstBlue", flags), "#M22");
1369 Assert.IsNotNull (type.GetProperty ("ProIntInstBlue", flags), "#M23");
1370 Assert.IsNotNull (type.GetProperty ("PubInstBlue", flags), "#M24");
1371 Assert.IsNotNull (type.GetProperty ("IntInstBlue", flags), "#M25");
1372 Assert.IsNull (type.GetProperty ("PrivStatBlue", flags), "#M26");
1373 Assert.IsNull (type.GetProperty ("ProtStatBlue", flags), "#M27");
1374 Assert.IsNull (type.GetProperty ("ProIntStatBlue", flags), "#M28");
1375 Assert.IsNull (type.GetProperty ("PubStatBlue", flags), "#M29");
1376 Assert.IsNull (type.GetProperty ("IntStatBlue", flags), "#M30");
1378 flags = BindingFlags.Static | BindingFlags.NonPublic |
1379 BindingFlags.Public;
1381 Assert.IsNull (type.GetProperty ("PrivInstBase", flags), "#N1");
1382 Assert.IsNull (type.GetProperty ("ProtInstBase", flags), "#N2");
1383 Assert.IsNull (type.GetProperty ("ProIntInstBase", flags), "#N3");
1384 Assert.IsNull (type.GetProperty ("PubInstBase", flags), "#N4");
1385 Assert.IsNull (type.GetProperty ("IntInstBase", flags), "#N5");
1386 Assert.IsNull (type.GetProperty ("PrivInst", flags), "#N6");
1387 Assert.IsNull (type.GetProperty ("ProtInst", flags), "#N7");
1388 Assert.IsNull (type.GetProperty ("ProIntInst", flags), "#N8");
1389 Assert.IsNull (type.GetProperty ("PubInst", flags), "#N9");
1390 Assert.IsNull (type.GetProperty ("IntInst", flags), "#N10");
1391 Assert.IsNull (type.GetProperty ("PrivStatBase", flags), "#N11");
1392 Assert.IsNull (type.GetProperty ("ProtStatBase", flags), "#N12");
1393 Assert.IsNull (type.GetProperty ("ProIntStatBase", flags), "#N13");
1394 Assert.IsNull (type.GetProperty ("PubStatBase", flags), "#N14");
1395 Assert.IsNull (type.GetProperty ("IntStatBase", flags), "#N15");
1396 Assert.IsNotNull (type.GetProperty ("PrivStat", flags), "#N16");
1397 Assert.IsNotNull (type.GetProperty ("ProtStat", flags), "#N17");
1398 Assert.IsNotNull (type.GetProperty ("ProIntStat", flags), "#N18");
1399 Assert.IsNotNull (type.GetProperty ("PubStat", flags), "#N19");
1400 Assert.IsNotNull (type.GetProperty ("IntStat", flags), "#N20");
1401 Assert.IsNull (type.GetProperty ("PrivInstBlue", flags), "#N21");
1402 Assert.IsNull (type.GetProperty ("ProtInstBlue", flags), "#N22");
1403 Assert.IsNull (type.GetProperty ("ProIntInstBlue", flags), "#N23");
1404 Assert.IsNull (type.GetProperty ("PubInstBlue", flags), "#N24");
1405 Assert.IsNull (type.GetProperty ("IntInstBlue", flags), "#N25");
1406 Assert.IsNull (type.GetProperty ("PrivStatBlue", flags), "#N26");
1407 Assert.IsNull (type.GetProperty ("ProtStatBlue", flags), "#N27");
1408 Assert.IsNull (type.GetProperty ("ProIntStatBlue", flags), "#N28");
1409 Assert.IsNull (type.GetProperty ("PubStatBlue", flags), "#N29");
1410 Assert.IsNull (type.GetProperty ("IntStatBlue", flags), "#N30");
1413 [Test] // GetProperty (String, BindingFlags)
1414 public void GetProperty2_Name_Null ()
1416 Type type = typeof (Bar);
1418 type.GetProperty ((string) null);
1420 } catch (ArgumentNullException ex) {
1421 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
1422 Assert.IsNull (ex.InnerException, "#3");
1423 Assert.IsNotNull (ex.Message, "#4");
1424 Assert.IsNotNull (ex.ParamName, "#5");
1425 Assert.AreEqual ("name", ex.ParamName, "#6");
1429 [Test] // GetProperty (String, Type)
1430 public void GetProperty3_Name_Null ()
1432 Type type = typeof (Bar);
1434 type.GetProperty ((string) null, typeof (int));
1436 } catch (ArgumentNullException ex) {
1437 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
1438 Assert.IsNull (ex.InnerException, "#3");
1439 Assert.IsNotNull (ex.Message, "#4");
1440 Assert.IsNotNull (ex.ParamName, "#5");
1441 Assert.AreEqual ("name", ex.ParamName, "#6");
1445 [Test] // GetProperty (String, Type [])
1446 public void GetProperty4_Name_Null ()
1448 Type type = typeof (Bar);
1450 type.GetProperty ((string) null, Type.EmptyTypes);
1452 } catch (ArgumentNullException ex) {
1453 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
1454 Assert.IsNull (ex.InnerException, "#3");
1455 Assert.IsNotNull (ex.Message, "#4");
1456 Assert.IsNotNull (ex.ParamName, "#5");
1457 Assert.AreEqual ("name", ex.ParamName, "#6");
1461 [Test] // GetProperty (String, Type, Type [])
1462 public void GetProperty5_Name_Null ()
1464 Type type = typeof (Bar);
1466 type.GetProperty ((string) null, typeof (int),
1469 } catch (ArgumentNullException ex) {
1470 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
1471 Assert.IsNull (ex.InnerException, "#3");
1472 Assert.IsNotNull (ex.Message, "#4");
1473 Assert.IsNotNull (ex.ParamName, "#5");
1474 Assert.AreEqual ("name", ex.ParamName, "#6");
1478 [Test] // GetProperty (String, Type, Type [], ParameterModifier [])
1479 public void GetProperty6_Name_Null ()
1481 Type type = typeof (Bar);
1483 type.GetProperty ((string) null, typeof (int),
1484 Type.EmptyTypes, null);
1486 } catch (ArgumentNullException ex) {
1487 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
1488 Assert.IsNull (ex.InnerException, "#3");
1489 Assert.IsNotNull (ex.Message, "#4");
1490 Assert.IsNotNull (ex.ParamName, "#5");
1491 Assert.AreEqual ("name", ex.ParamName, "#6");
1495 [Test] // GetProperty (String, BindingFlags, Binder, Type, Type [], ParameterModifier [])
1496 public void GetProperty7_Name_Null ()
1498 Type type = typeof (Bar);
1500 type.GetProperty ((string) null, BindingFlags.Public,
1501 null, typeof (int), Type.EmptyTypes, null);
1503 } catch (ArgumentNullException ex) {
1504 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
1505 Assert.IsNull (ex.InnerException, "#3");
1506 Assert.IsNotNull (ex.Message, "#4");
1507 Assert.IsNotNull (ex.ParamName, "#5");
1508 Assert.AreEqual ("name", ex.ParamName, "#6");
1513 public void GetProperty8_PropertyType ()
1515 Type type = typeof (Bar);
1516 Assert.IsNull (type.GetProperty ("PubInst", BindingFlags.Public | BindingFlags.Instance,
1517 null, typeof (int), Type.EmptyTypes, null), "#1");
1518 Assert.IsNotNull (type.GetProperty ("PubInst", BindingFlags.Public | BindingFlags.Instance, null,
1519 typeof (long), new Type[0], null), "#2");
1522 [StructLayout(LayoutKind.Explicit, Pack = 4, Size = 64)]
1527 [StructLayout(LayoutKind.Explicit, CharSet=CharSet.Unicode)]
1533 public void StructLayoutAttribute ()
1535 StructLayoutAttribute attr1 = typeof (TypeTest).StructLayoutAttribute;
1536 Assert.AreEqual (LayoutKind.Auto, attr1.Value);
1538 StructLayoutAttribute attr2 = typeof (Class1).StructLayoutAttribute;
1539 Assert.AreEqual (LayoutKind.Explicit, attr2.Value);
1540 Assert.AreEqual (4, attr2.Pack);
1541 Assert.AreEqual (64, attr2.Size);
1543 StructLayoutAttribute attr3 = typeof (Class2).StructLayoutAttribute;
1544 Assert.AreEqual (LayoutKind.Explicit, attr3.Value);
1545 Assert.AreEqual (CharSet.Unicode, attr3.CharSet);
1549 public void Namespace ()
1551 Assert.AreEqual (null, typeof (NoNamespaceClass).Namespace);
1555 public void GenericParameterNamespace ()
1557 var t = typeof (Foo<>).GetGenericArguments () [0];
1559 Assert.AreEqual ("T", t.Name);
1560 Assert.AreEqual ("MonoTests.System", t.Namespace);
1562 var s = typeof (Gazonk).GetMethod ("Bang").GetGenericArguments () [0];
1564 Assert.AreEqual ("S", s.Name);
1565 Assert.AreEqual ("MonoTests.System", s.Namespace);
1568 public static void Reflected (ref int a)
1575 Assert.AreEqual ("Int32&", typeof (TypeTest).GetMethod ("Reflected").GetParameters () [0].ParameterType.Name);
1576 Assert.AreEqual ("String[*]", Array.CreateInstance (typeof(string), new int[] { 1 }, new int[] { 1 }).GetType ().Name);
1580 public void GetInterfaces ()
1582 Type[] t = typeof (Duper).GetInterfaces ();
1583 Assert.AreEqual (1, t.Length);
1584 Assert.AreEqual (typeof (ICloneable), t[0]);
1586 Type[] t2 = typeof (IFace3).GetInterfaces ();
1587 Assert.AreEqual (2, t2.Length);
1591 public void GetInterfacesGenericVarWithConstraints ()
1593 var a = typeof (TypeTest).GetMethod ("GenericMethod");
1595 var p = a.GetParameters ();
1596 var i = p[0].ParameterType.GetElementType ();
1600 public static void GenericMethod<T, T2> (T[] arr) where T: IComparable<T> {
1606 public void GetFieldIgnoreCase ()
1608 Assert.IsNotNull (typeof (TypeTest).GetField ("afield", BindingFlags.Instance|BindingFlags.Public|BindingFlags.IgnoreCase));
1621 public void GetPropertyAccessorModifiers ()
1623 Assert.IsNotNull (typeof (TypeTest).GetProperty ("Count", BindingFlags.Instance | BindingFlags.Public));
1624 Assert.IsNull (typeof (TypeTest).GetProperty ("Count", BindingFlags.Instance | BindingFlags.NonPublic));
1628 public void IsAbstract ()
1630 Assert.IsFalse (typeof (string).IsAbstract, "#1");
1631 Assert.IsTrue (typeof (ICloneable).IsAbstract, "#2");
1632 Assert.IsTrue (typeof (ValueType).IsAbstract, "#3");
1633 Assert.IsTrue (typeof (Enum).IsAbstract, "#4");
1634 Assert.IsFalse (typeof (TimeSpan).IsAbstract, "#5");
1635 Assert.IsTrue (typeof (TextReader).IsAbstract, "#6");
1638 // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=286308
1639 Type [] typeArgs = typeof (List<>).GetGenericArguments ();
1640 Assert.IsFalse (typeArgs [0].IsAbstract, "#7");
1644 public void IsCOMObject ()
1646 Type type = typeof (string);
1647 Assert.IsFalse (type.IsCOMObject, "#1");
1649 TypeBuilder tb = module.DefineType (genTypeName ());
1650 type = tb.CreateType ();
1651 Assert.IsFalse (type.IsCOMObject, "#2");
1655 public void IsImport ()
1657 Type type = typeof (string);
1658 Assert.IsFalse (type.IsImport, "#1");
1660 TypeBuilder tb = module.DefineType (genTypeName ());
1661 type = tb.CreateType ();
1662 Assert.IsFalse (type.IsImport, "#2");
1664 tb = module.DefineType (genTypeName (), TypeAttributes.Import |
1665 TypeAttributes.Interface | TypeAttributes.Abstract);
1666 type = tb.CreateType ();
1667 Assert.IsTrue (type.IsImport, "#3");
1671 public void IsInterface ()
1673 Assert.IsFalse (typeof (string).IsInterface, "#1");
1674 Assert.IsTrue (typeof (ICloneable).IsInterface, "#2");
1678 public void IsPrimitive () {
1679 Assert.IsTrue (typeof (IntPtr).IsPrimitive, "#1");
1680 Assert.IsTrue (typeof (int).IsPrimitive, "#2");
1681 Assert.IsFalse (typeof (string).IsPrimitive, "#2");
1685 public void IsValueType ()
1687 Assert.IsTrue (typeof (int).IsValueType, "#1");
1688 Assert.IsFalse (typeof (Enum).IsValueType, "#2");
1689 Assert.IsFalse (typeof (ValueType).IsValueType, "#3");
1690 Assert.IsTrue (typeof (AttributeTargets).IsValueType, "#4");
1691 Assert.IsFalse (typeof (string).IsValueType, "#5");
1692 Assert.IsTrue (typeof (TimeSpan).IsValueType, "#6");
1696 public void GetTypeNonVectorArray ()
1698 Type t = Type.GetType ("System.String[*]");
1699 Assert.AreEqual ("System.String[*]", t.ToString ());
1703 // feature not available when compiled under FULL_AOT_RUNTIME
1704 [ExpectedException (typeof (NotImplementedException))]
1707 public void TypeFromCLSID ()
1709 Guid CLSID_ShellDesktop = new Guid("00021400-0000-0000-c000-000000000046");
1710 Guid CLSID_Bogus = new Guid("1ea9d7a9-f7ab-443b-b486-30d285b21f1b");
1712 Type t1 = Type.GetTypeFromCLSID (CLSID_ShellDesktop);
1714 Type t2 = Type.GetTypeFromCLSID (CLSID_Bogus);
1716 Assert.AreEqual (t1.FullName, "System.__ComObject");
1718 if (Environment.OSVersion.Platform == PlatformID.Win32Windows ||
1719 Environment.OSVersion.Platform == PlatformID.Win32NT)
1720 Activator.CreateInstance(t1);
1722 Assert.AreEqual (t2.FullName, "System.__ComObject");
1724 Assert.AreNotEqual (t1, t2);
1728 [Category("NotWorking")] // Mono throws TargetInvokationException
1729 [ExpectedException("System.Runtime.InteropServices.COMException")]
1730 public void TypeFromCLSIDBogus ()
1732 Guid CLSID_Bogus = new Guid("1ea9d7a9-f7ab-443b-b486-30d285b21f1b");
1733 Type t = Type.GetTypeFromCLSID (CLSID_Bogus);
1734 if (Environment.OSVersion.Platform == PlatformID.Win32Windows ||
1735 Environment.OSVersion.Platform == PlatformID.Win32NT)
1736 Activator.CreateInstance(t);
1738 throw new COMException ();
1742 public void ExerciseFilterName ()
1744 MemberInfo[] mi = typeof(Base).FindMembers(
1746 BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic |
1747 BindingFlags.Instance | BindingFlags.DeclaredOnly,
1748 Type.FilterName, "*");
1749 Assert.AreEqual (4, mi.Length);
1750 mi = typeof(Base).FindMembers(
1752 BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic |
1753 BindingFlags.Instance | BindingFlags.DeclaredOnly,
1754 Type.FilterName, "Test*");
1755 Assert.AreEqual (2, mi.Length);
1756 mi = typeof(Base).FindMembers(
1758 BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic |
1759 BindingFlags.Instance | BindingFlags.DeclaredOnly,
1760 Type.FilterName, "TestVoid");
1761 Assert.AreEqual (1, mi.Length);
1762 mi = typeof(Base).FindMembers(
1764 BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic |
1765 BindingFlags.Instance | BindingFlags.DeclaredOnly,
1766 Type.FilterName, "NonExistingMethod");
1767 Assert.AreEqual (0, mi.Length);
1771 public void ExerciseFilterNameIgnoreCase ()
1773 MemberInfo[] mi = typeof(Base).FindMembers(
1775 BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic |
1776 BindingFlags.Instance | BindingFlags.DeclaredOnly,
1777 Type.FilterNameIgnoreCase, "*");
1778 Assert.AreEqual (4, mi.Length);
1779 mi = typeof(Base).FindMembers(
1781 BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic |
1782 BindingFlags.Instance | BindingFlags.DeclaredOnly,
1783 Type.FilterNameIgnoreCase, "test*");
1784 Assert.AreEqual (2, mi.Length);
1785 mi = typeof(Base).FindMembers(
1787 BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic |
1788 BindingFlags.Instance | BindingFlags.DeclaredOnly,
1789 Type.FilterNameIgnoreCase, "TESTVOID");
1790 Assert.AreEqual (1, mi.Length);
1791 mi = typeof(Base).FindMembers(
1793 BindingFlags.Public | BindingFlags.Static | BindingFlags.NonPublic |
1794 BindingFlags.Instance | BindingFlags.DeclaredOnly,
1795 Type.FilterNameIgnoreCase, "NonExistingMethod");
1796 Assert.AreEqual (0, mi.Length);
1800 [ExpectedException (typeof (InvalidFilterCriteriaException))]
1801 public void FilterAttribute_Invalid ()
1803 Type.FilterAttribute (MethodBase.GetCurrentMethod (), (byte) 1);
1807 public void GenericParameterMemberType ()
1809 var t = typeof (Foo<>).GetGenericArguments () [0];
1810 Assert.IsNotNull (t);
1812 Assert.AreEqual (MemberTypes.TypeInfo, t.MemberType);
1818 public int property {
1821 public ByRef0 (int i) {}
1822 public void f (int i) {}
1826 public void ByrefTypes ()
1828 Type t = Type.GetType ("MonoTests.System.TypeTest+ByRef0&");
1829 Assert.IsNotNull (t);
1830 Assert.IsTrue (t.IsByRef);
1831 Assert.AreEqual (0, t.GetMethods (BindingFlags.Public | BindingFlags.Instance).Length);
1832 Assert.AreEqual (0, t.GetConstructors (BindingFlags.Public | BindingFlags.Instance).Length);
1833 Assert.AreEqual (0, t.GetEvents (BindingFlags.Public | BindingFlags.Instance).Length);
1834 Assert.AreEqual (0, t.GetProperties (BindingFlags.Public | BindingFlags.Instance).Length);
1836 Assert.IsNull (t.GetMethod ("f"));
1837 Assert.IsNull (t.GetField ("field"));
1838 Assert.IsNull (t.GetProperty ("property"));
1842 public void TestAssemblyQualifiedName ()
1844 Type t = Type.GetType ("System.Byte[]&");
1845 Assert.IsTrue (t.AssemblyQualifiedName.StartsWith ("System.Byte[]&"));
1847 t = Type.GetType ("System.Byte*&");
1848 Assert.IsTrue (t.AssemblyQualifiedName.StartsWith ("System.Byte*&"));
1850 t = Type.GetType ("System.Byte&");
1851 Assert.IsTrue (t.AssemblyQualifiedName.StartsWith ("System.Byte&"));
1856 #pragma warning disable 169
1858 #pragma warning restore 169
1862 public void CreateValueTypeNoCtor ()
1864 typeof(B).InvokeMember ("", BindingFlags.CreateInstance, null, null, null);
1868 [ExpectedException (typeof (MissingMethodException))]
1869 public void CreateValueTypeNoCtorArgs ()
1871 typeof(B).InvokeMember ("", BindingFlags.CreateInstance, null, null, new object [] { 1 });
1875 [ExpectedException (typeof (MissingMethodException))]
1876 public void InvokeGetPropertyMissing ()
1878 typeof(B).InvokeMember ("", BindingFlags.GetProperty, null, null, new object [] { 1 });
1882 [ExpectedException (typeof (MissingMethodException))]
1883 public void InvokeSetPropertyMissing ()
1885 typeof(B).InvokeMember ("", BindingFlags.SetProperty, null, null, new object [] { 1 });
1888 internal static string bug336841 (string param1, params string [] param2)
1890 StringBuilder sb = new StringBuilder ();
1894 for (int i = 0; i < param2.Length; i++) {
1897 sb.Append (param2 [i]);
1899 return sb.ToString ();
1902 internal static string bug336841 (string param1)
1904 return "#B:" + param1;
1907 internal static string bug336841 (params string [] param1)
1909 StringBuilder sb = new StringBuilder ();
1911 for (int i = 0; i < param1.Length; i++) {
1914 sb.Append (param1 [i]);
1916 return sb.ToString ();
1920 public void InvokeMember_GetSetField ()
1922 typeof (X).InvokeMember ("Value", BindingFlags.Public |
1923 BindingFlags.Static | BindingFlags.FlattenHierarchy |
1924 BindingFlags.SetField, null, null, new object [] { 5 });
1926 Assert.AreEqual (5, X.Value, "#A1");
1927 Assert.AreEqual (5, typeof (X).InvokeMember ("Value",
1928 BindingFlags.Public | BindingFlags.Static |
1929 BindingFlags.FlattenHierarchy | BindingFlags.GetField,
1930 null, null, new object [0]), "#A2");
1931 Assert.AreEqual (5, Y.Value, "#A3");
1932 Assert.AreEqual (5, typeof (Y).InvokeMember ("Value",
1933 BindingFlags.Public | BindingFlags.Static |
1934 BindingFlags.FlattenHierarchy | BindingFlags.GetField,
1935 null, null, new object [0]), "#A4");
1938 typeof (X).InvokeMember ("Value", BindingFlags.Public |
1939 BindingFlags.Static | BindingFlags.FlattenHierarchy |
1940 BindingFlags.GetField | BindingFlags.SetField,
1941 null, null, new object [] { 5 });
1942 Assert.Fail ("#B1");
1943 } catch (ArgumentException ex) {
1944 // Cannot specify both Get and Set on a field
1945 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
1946 Assert.IsNull (ex.InnerException, "#B3");
1947 Assert.IsNotNull (ex.Message, "#B4");
1948 Assert.IsNotNull (ex.ParamName, "#B5");
1949 Assert.AreEqual ("bindingFlags", ex.ParamName, "#B6");
1954 public void InvokeMember_GetSetProperty ()
1957 typeof (ArrayList).InvokeMember ("Item",
1958 BindingFlags.GetProperty | BindingFlags.SetProperty |
1959 BindingFlags.Instance | BindingFlags.Public,
1960 null, new ArrayList (), new object [] { 0, "bar" });
1962 } catch (ArgumentException ex) {
1963 // Cannot specify both Get and Set on a property
1964 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
1965 Assert.IsNull (ex.InnerException, "#3");
1966 Assert.IsNotNull (ex.Message, "#4");
1967 Assert.IsNotNull (ex.ParamName, "#5");
1968 Assert.AreEqual ("bindingFlags", ex.ParamName, "#6");
1974 public void InvokeMember_InvokeMethod_Set ()
1977 typeof (ArrayList).InvokeMember ("ToString",
1978 BindingFlags.InvokeMethod | BindingFlags.SetField |
1979 BindingFlags.Instance | BindingFlags.Public,
1980 null, new ArrayList (), new object [0]);
1981 Assert.Fail ("#A1");
1982 } catch (ArgumentException ex) {
1983 // Cannot specify Set on a field and Invoke on a method
1984 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
1985 Assert.IsNull (ex.InnerException, "#A3");
1986 Assert.IsNotNull (ex.Message, "#A4");
1987 Assert.IsNotNull (ex.ParamName, "#A5");
1988 Assert.AreEqual ("bindingFlags", ex.ParamName, "#A6");
1992 typeof (ArrayList).InvokeMember ("ToString",
1993 BindingFlags.InvokeMethod | BindingFlags.SetProperty |
1994 BindingFlags.Instance | BindingFlags.Public,
1995 null, new ArrayList (), new object [0]);
1996 Assert.Fail ("#B1");
1997 } catch (ArgumentException ex) {
1998 // Cannot specify Set on a property and Invoke on a method
1999 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#B2");
2000 Assert.IsNull (ex.InnerException, "#B3");
2001 Assert.IsNotNull (ex.Message, "#B4");
2002 Assert.IsNotNull (ex.ParamName, "#B5");
2003 Assert.AreEqual ("bindingFlags", ex.ParamName, "#B6");
2008 public void InvokeMember_MatchPrimitiveTypeWithInterface ()
2010 object [] invokeargs = { 1 };
2011 typeof (Z).InvokeMember ("", BindingFlags.DeclaredOnly |
2012 BindingFlags.Public | BindingFlags.NonPublic |
2013 BindingFlags.Instance | BindingFlags.CreateInstance,
2014 null, null, invokeargs);
2018 public void InvokeMember_Name_Null ()
2021 typeof (X).InvokeMember ((string) null,
2022 BindingFlags.Public | BindingFlags.Static |
2023 BindingFlags.FlattenHierarchy | BindingFlags.SetField,
2024 null, null, new object [] { 5 });
2026 } catch (ArgumentNullException ex) {
2027 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
2028 Assert.IsNull (ex.InnerException, "#3");
2029 Assert.IsNotNull (ex.Message, "#4");
2030 Assert.IsNotNull (ex.ParamName, "#5");
2031 Assert.AreEqual ("name", ex.ParamName, "#6");
2036 public void InvokeMember_NoOperation ()
2039 typeof (TypeTest).InvokeMember ("Run", BindingFlags.Public |
2040 BindingFlags.Static, null, null, new object [0]);
2042 } catch (ArgumentException ex) {
2043 // Must specify binding flags describing the
2044 // invoke operation required
2045 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
2046 Assert.IsNull (ex.InnerException, "#3");
2047 Assert.IsNotNull (ex.Message, "#4");
2048 Assert.IsNotNull (ex.ParamName, "#5");
2049 Assert.AreEqual ("bindingFlags", ex.ParamName, "#6");
2053 [Test] // bug #321735
2054 public void InvokeMember_SetFieldProperty ()
2056 ArrayList list = new ArrayList ();
2058 list.GetType ().InvokeMember ("Item",
2059 BindingFlags.SetField | BindingFlags.SetProperty |
2060 BindingFlags.Instance | BindingFlags.Public,
2061 null, list, new object [] { 0, "bar" });
2062 Assert.AreEqual ("bar", list [0]);
2066 public void InvokeMember_SetField_ProvidedArgs ()
2069 typeof (X).InvokeMember ("Value", BindingFlags.Public |
2070 BindingFlags.Static | BindingFlags.SetField,
2071 null, null, new object [0]);
2072 Assert.Fail ("#A1");
2073 } catch (ArgumentException ex) {
2074 // Only the field value can be specified to set
2076 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#A2");
2077 Assert.IsNull (ex.InnerException, "#A3");
2078 Assert.IsNotNull (ex.Message, "#A4");
2079 Assert.IsNotNull (ex.ParamName, "#A5");
2080 Assert.AreEqual ("bindingFlags", ex.ParamName, "#6");
2084 typeof (X).InvokeMember ("Value", BindingFlags.Public |
2085 BindingFlags.Static | BindingFlags.SetField,
2087 Assert.Fail ("#B1");
2088 } catch (ArgumentNullException ex) {
2089 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#B2");
2090 Assert.IsNull (ex.InnerException, "#B3");
2091 Assert.IsNotNull (ex.Message, "#B4");
2092 Assert.IsNotNull (ex.ParamName, "#B5");
2093 Assert.AreEqual ("providedArgs", ex.ParamName, "#B6");
2097 [Test] // bug #336841
2098 [Category ("NotDotNet")] // https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=306797
2099 public void InvokeMember_VarArgs ()
2101 BindingFlags flags = BindingFlags.InvokeMethod | BindingFlags.Public |
2102 BindingFlags.NonPublic | BindingFlags.OptionalParamBinding |
2103 BindingFlags.Static | BindingFlags.FlattenHierarchy |
2104 BindingFlags.Instance;
2106 Type type = typeof (TypeTest);
2107 string result = (string) type.InvokeMember ("bug336841",
2108 flags, null, null, new object [] { "1" });
2109 Assert.IsNotNull (result, "#A1");
2110 Assert.AreEqual ("#B:1", result, "#A2");
2112 result = (string) type.InvokeMember ("bug336841", flags,
2113 null, null, new object [] { "1", "2", "3", "4" });
2114 Assert.IsNotNull (result, "#B1");
2115 Assert.AreEqual ("#A:1|2,3,4", result, "#B2");
2119 [Test] // bug #348522
2120 public void InvokeMember_WithoutDefaultValue ()
2122 BindingFlags flags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.InvokeMethod;
2124 typeof (Bug348522).InvokeMember ("Test", flags, new FirstMethodBinder (), new Bug348522(),
2125 new object [] {Missing.Value}, null, null, null);
2127 } catch (ArgumentException ex) {
2128 // Missing parameter does not have a default value
2129 Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2");
2130 Assert.IsNull (ex.InnerException, "#3");
2131 Assert.IsNotNull (ex.Message, "#4");
2132 Assert.IsNotNull (ex.ParamName, "#5");
2133 Assert.AreEqual ("parameters", ex.ParamName, "#6");
2138 public void TestMissing () {
2139 Assert.AreEqual (Type.Missing, Missing.Value);
2143 public void GetGenericMethodDefinitionOverInflatedMethodOnGTD () {
2144 var l = typeof (List<>);
2145 var m = l.GetMethod ("ConvertAll");
2146 var infl = m.MakeGenericMethod (typeof (int));
2147 var res = m.GetGenericMethodDefinition ();
2148 Assert.AreEqual (m, res, "#1");
2152 public void InvokeMember_OutParam ()
2154 object[] args = new object[] { new string [0] };
2155 typeof (TypeTest).InvokeMember ("OutTest", BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.Public, null, null, args);
2156 Assert.IsTrue (args [0] is string[]);
2157 Assert.AreEqual (10, ((string[])args[0]).Length);
2160 public static void OutTest (out string[] a1)
2162 a1 = new string [10];
2167 public static int Value;
2176 public Z (IComparable value)
2181 public static void Run ()
2189 public TakesInt (int x)
2194 public int Integer {
2201 public TakesObject (object x) {}
2204 [Test] // bug #75241
2205 public void GetConstructorNullInTypes ()
2207 // This ends up calling type.GetConstructor ()
2208 Activator.CreateInstance (typeof (TakesInt), new object [] { null });
2209 Activator.CreateInstance (typeof (TakesObject), new object [] { null });
2213 public void GetConstructor_TakeInt_Object ()
2215 Assert.IsNull (typeof (TakesInt).GetConstructor (new Type[1] { typeof (object) }));
2219 public void GetCustomAttributes_All ()
2221 object [] attrs = typeof (A).GetCustomAttributes (false);
2222 Assert.AreEqual (2, attrs.Length, "#A1");
2223 Assert.IsTrue (HasAttribute (attrs, typeof (FooAttribute)), "#A2");
2224 Assert.IsTrue (HasAttribute (attrs, typeof (VolatileModifier)), "#A3");
2226 attrs = typeof (BA).GetCustomAttributes (false);
2227 Assert.AreEqual (1, attrs.Length, "#B1");
2228 Assert.AreEqual (typeof (BarAttribute), attrs [0].GetType (), "#B2");
2230 attrs = typeof (BA).GetCustomAttributes (true);
2231 Assert.AreEqual (2, attrs.Length, "#C1");
2232 Assert.IsTrue (HasAttribute (attrs, typeof (BarAttribute)), "#C2");
2233 Assert.IsTrue (HasAttribute (attrs, typeof (VolatileModifier)), "#C3");
2235 attrs = typeof (CA).GetCustomAttributes (false);
2236 Assert.AreEqual (0, attrs.Length, "#D");
2238 attrs = typeof (CA).GetCustomAttributes (true);
2239 Assert.AreEqual (1, attrs.Length, "#E1");
2240 Assert.AreEqual (typeof (VolatileModifier), attrs [0].GetType (), "#E2");
2243 static bool HasAttribute (object [] attrs, Type attributeType)
2245 foreach (object attr in attrs)
2246 if (attr.GetType () == attributeType)
2252 public void GetCustomAttributes_Type ()
2254 object [] attrs = null;
2256 attrs = typeof (A).GetCustomAttributes (
2257 typeof (VolatileModifier), false);
2258 Assert.AreEqual (1, attrs.Length, "#A1");
2259 Assert.AreEqual (typeof (VolatileModifier), attrs [0].GetType (), "#A2");
2260 attrs = typeof (A).GetCustomAttributes (
2261 typeof (VolatileModifier), true);
2262 Assert.AreEqual (1, attrs.Length, "#A3");
2263 Assert.AreEqual (typeof (VolatileModifier), attrs [0].GetType (), "#A4");
2265 attrs = typeof (A).GetCustomAttributes (
2266 typeof (NemerleAttribute), false);
2267 Assert.AreEqual (1, attrs.Length, "#B1");
2268 Assert.AreEqual (typeof (VolatileModifier), attrs [0].GetType (), "#B2");
2269 attrs = typeof (A).GetCustomAttributes (
2270 typeof (NemerleAttribute), true);
2271 Assert.AreEqual (1, attrs.Length, "#B3");
2272 Assert.AreEqual (typeof (VolatileModifier), attrs [0].GetType (), "#B4");
2274 attrs = typeof (A).GetCustomAttributes (
2275 typeof (FooAttribute), false);
2276 Assert.AreEqual (1, attrs.Length, "#C1");
2277 Assert.AreEqual (typeof (FooAttribute), attrs [0].GetType (), "#C2");
2278 attrs = typeof (A).GetCustomAttributes (
2279 typeof (FooAttribute), false);
2280 Assert.AreEqual (1, attrs.Length, "#C3");
2281 Assert.AreEqual (typeof (FooAttribute), attrs [0].GetType (), "#C4");
2283 attrs = typeof (BA).GetCustomAttributes (
2284 typeof (VolatileModifier), false);
2285 Assert.AreEqual (0, attrs.Length, "#D1");
2286 attrs = typeof (BA).GetCustomAttributes (
2287 typeof (VolatileModifier), true);
2288 Assert.AreEqual (1, attrs.Length, "#D2");
2289 Assert.AreEqual (typeof (VolatileModifier), attrs [0].GetType (), "#D3");
2291 attrs = typeof (BA).GetCustomAttributes (
2292 typeof (NemerleAttribute), false);
2293 Assert.AreEqual (0, attrs.Length, "#E1");
2294 attrs = typeof (BA).GetCustomAttributes (
2295 typeof (NemerleAttribute), true);
2296 Assert.AreEqual (1, attrs.Length, "#E2");
2297 Assert.AreEqual (typeof (VolatileModifier), attrs [0].GetType (), "#E3");
2299 attrs = typeof (BA).GetCustomAttributes (
2300 typeof (FooAttribute), false);
2301 Assert.AreEqual (1, attrs.Length, "#F1");
2302 Assert.AreEqual (typeof (BarAttribute), attrs [0].GetType (), "#F2");
2303 attrs = typeof (BA).GetCustomAttributes (
2304 typeof (FooAttribute), true);
2305 Assert.AreEqual (1, attrs.Length, "#F3");
2306 Assert.AreEqual (typeof (BarAttribute), attrs [0].GetType (), "#F4");
2308 attrs = typeof (bug82431A1).GetCustomAttributes (
2309 typeof (InheritAttribute), false);
2310 Assert.AreEqual (1, attrs.Length, "#G1");
2311 Assert.AreEqual (typeof (NotInheritAttribute), attrs [0].GetType (), "#G2");
2312 attrs = typeof (bug82431A1).GetCustomAttributes (
2313 typeof (InheritAttribute), true);
2314 Assert.AreEqual (1, attrs.Length, "#G3");
2315 Assert.AreEqual (typeof (NotInheritAttribute), attrs [0].GetType (), "#G4");
2317 attrs = typeof (bug82431A1).GetCustomAttributes (
2318 typeof (NotInheritAttribute), false);
2319 Assert.AreEqual (1, attrs.Length, "#H1");
2320 Assert.AreEqual (typeof (NotInheritAttribute), attrs [0].GetType (), "#H2");
2321 attrs = typeof (bug82431A1).GetCustomAttributes (
2322 typeof (InheritAttribute), true);
2323 Assert.AreEqual (1, attrs.Length, "#H3");
2324 Assert.AreEqual (typeof (NotInheritAttribute), attrs [0].GetType (), "#H4");
2326 attrs = typeof (bug82431A2).GetCustomAttributes (
2327 typeof (InheritAttribute), false);
2328 Assert.AreEqual (0, attrs.Length, "#I1");
2329 attrs = typeof (bug82431A2).GetCustomAttributes (
2330 typeof (InheritAttribute), true);
2331 Assert.AreEqual (0, attrs.Length, "#I2");
2333 attrs = typeof (bug82431A2).GetCustomAttributes (
2334 typeof (NotInheritAttribute), false);
2335 Assert.AreEqual (0, attrs.Length, "#J1");
2336 attrs = typeof (bug82431A2).GetCustomAttributes (
2337 typeof (NotInheritAttribute), true);
2338 Assert.AreEqual (0, attrs.Length, "#J2");
2340 attrs = typeof (bug82431A3).GetCustomAttributes (
2341 typeof (InheritAttribute), false);
2342 Assert.AreEqual (2, attrs.Length, "#K1");
2343 Assert.IsTrue (HasAttribute (attrs, typeof (InheritAttribute)), "#K2");
2344 Assert.IsTrue (HasAttribute (attrs, typeof (NotInheritAttribute)), "#K3");
2345 attrs = typeof (bug82431A3).GetCustomAttributes (
2346 typeof (InheritAttribute), true);
2347 Assert.AreEqual (2, attrs.Length, "#K4");
2348 Assert.IsTrue (HasAttribute (attrs, typeof (InheritAttribute)), "#K5");
2349 Assert.IsTrue (HasAttribute (attrs, typeof (NotInheritAttribute)), "#K6");
2351 attrs = typeof (bug82431A3).GetCustomAttributes (
2352 typeof (NotInheritAttribute), false);
2353 Assert.AreEqual (1, attrs.Length, "#L1");
2354 Assert.AreEqual (typeof (NotInheritAttribute), attrs [0].GetType (), "#L2");
2355 attrs = typeof (bug82431A3).GetCustomAttributes (
2356 typeof (NotInheritAttribute), true);
2357 Assert.AreEqual (1, attrs.Length, "#L3");
2358 Assert.AreEqual (typeof (NotInheritAttribute), attrs [0].GetType (), "#L4");
2360 attrs = typeof (bug82431B1).GetCustomAttributes (
2361 typeof (InheritAttribute), false);
2362 Assert.AreEqual (1, attrs.Length, "#M1");
2363 Assert.AreEqual (typeof (InheritAttribute), attrs [0].GetType (), "#M2");
2364 attrs = typeof (bug82431B1).GetCustomAttributes (
2365 typeof (InheritAttribute), true);
2366 Assert.AreEqual (1, attrs.Length, "#M3");
2367 Assert.AreEqual (typeof (InheritAttribute), attrs [0].GetType (), "#M4");
2369 attrs = typeof (bug82431B1).GetCustomAttributes (
2370 typeof (NotInheritAttribute), false);
2371 Assert.AreEqual (0, attrs.Length, "#N1");
2372 attrs = typeof (bug82431B1).GetCustomAttributes (
2373 typeof (NotInheritAttribute), true);
2374 Assert.AreEqual (0, attrs.Length, "#N2");
2376 attrs = typeof (bug82431B2).GetCustomAttributes (
2377 typeof (InheritAttribute), false);
2378 Assert.AreEqual (0, attrs.Length, "#O1");
2379 attrs = typeof (bug82431B2).GetCustomAttributes (
2380 typeof (InheritAttribute), true);
2381 Assert.AreEqual (1, attrs.Length, "#O2");
2382 Assert.AreEqual (typeof (InheritAttribute), attrs [0].GetType (), "#O3");
2384 attrs = typeof (bug82431B2).GetCustomAttributes (
2385 typeof (NotInheritAttribute), false);
2386 Assert.AreEqual (0, attrs.Length, "#P1");
2387 attrs = typeof (bug82431B2).GetCustomAttributes (
2388 typeof (NotInheritAttribute), true);
2389 Assert.AreEqual (0, attrs.Length, "#P2");
2391 attrs = typeof (bug82431B3).GetCustomAttributes (
2392 typeof (InheritAttribute), false);
2393 Assert.AreEqual (1, attrs.Length, "#Q1");
2394 Assert.AreEqual (typeof (NotInheritAttribute), attrs [0].GetType (), "#Q2");
2395 attrs = typeof (bug82431B3).GetCustomAttributes (
2396 typeof (InheritAttribute), true);
2397 Assert.AreEqual (2, attrs.Length, "#Q3");
2398 Assert.AreEqual (typeof (NotInheritAttribute), attrs [0].GetType (), "#Q4");
2399 Assert.AreEqual (typeof (InheritAttribute), attrs [1].GetType (), "#Q5");
2401 attrs = typeof (bug82431B3).GetCustomAttributes (
2402 typeof (NotInheritAttribute), false);
2403 Assert.AreEqual (1, attrs.Length, "#R1");
2404 Assert.AreEqual (typeof (NotInheritAttribute), attrs [0].GetType (), "#R2");
2405 attrs = typeof (bug82431B3).GetCustomAttributes (
2406 typeof (NotInheritAttribute), true);
2407 Assert.AreEqual (1, attrs.Length, "#R3");
2408 Assert.AreEqual (typeof (NotInheritAttribute), attrs [0].GetType (), "#R4");
2410 attrs = typeof (bug82431B4).GetCustomAttributes (
2411 typeof (InheritAttribute), false);
2412 Assert.AreEqual (0, attrs.Length, "#S1");
2413 attrs = typeof (bug82431B4).GetCustomAttributes (
2414 typeof (InheritAttribute), true);
2415 Assert.AreEqual (1, attrs.Length, "#S2");
2416 Assert.AreEqual (typeof (InheritAttribute), attrs [0].GetType (), "#S3");
2418 attrs = typeof (bug82431B4).GetCustomAttributes (
2419 typeof (NotInheritAttribute), false);
2420 Assert.AreEqual (0, attrs.Length, "#T1");
2421 attrs = typeof (bug82431B4).GetCustomAttributes (
2422 typeof (NotInheritAttribute), true);
2423 Assert.AreEqual (0, attrs.Length, "#T2");
2425 attrs = typeof (A).GetCustomAttributes (
2426 typeof (string), false);
2427 Assert.AreEqual (0, attrs.Length, "#U1");
2428 attrs = typeof (A).GetCustomAttributes (
2429 typeof (string), true);
2430 Assert.AreEqual (0, attrs.Length, "#U2");
2433 [Test] // bug #76150
2434 public void IsDefined ()
2436 Assert.IsTrue (typeof (A).IsDefined (typeof (NemerleAttribute), false), "#A1");
2437 Assert.IsTrue (typeof (A).IsDefined (typeof (VolatileModifier), false), "#A2");
2438 Assert.IsTrue (typeof (A).IsDefined (typeof (FooAttribute), false), "#A3");
2439 Assert.IsFalse (typeof (A).IsDefined (typeof (BarAttribute), false), "#A4");
2441 Assert.IsFalse (typeof (BA).IsDefined (typeof (NemerleAttribute), false), "#B1");
2442 Assert.IsFalse (typeof (BA).IsDefined (typeof (VolatileModifier), false), "#B2");
2443 Assert.IsTrue (typeof (BA).IsDefined (typeof (FooAttribute), false), "#B3");
2444 Assert.IsTrue (typeof (BA).IsDefined (typeof (BarAttribute), false), "#B4");
2445 Assert.IsFalse (typeof (BA).IsDefined (typeof (string), false), "#B5");
2446 Assert.IsFalse (typeof (BA).IsDefined (typeof (int), false), "#B6");
2447 Assert.IsTrue (typeof (BA).IsDefined (typeof (NemerleAttribute), true), "#B7");
2448 Assert.IsTrue (typeof (BA).IsDefined (typeof (VolatileModifier), true), "#B8");
2449 Assert.IsTrue (typeof (BA).IsDefined (typeof (FooAttribute), true), "#B9");
2450 Assert.IsTrue (typeof (BA).IsDefined (typeof (BarAttribute), true), "#B10");
2451 Assert.IsFalse (typeof (BA).IsDefined (typeof (string), true), "#B11");
2452 Assert.IsFalse (typeof (BA).IsDefined (typeof (int), true), "#B12");
2456 public void IsDefined_AttributeType_Null ()
2459 typeof (BA).IsDefined ((Type) null, false);
2461 } catch (ArgumentNullException ex) {
2462 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
2463 Assert.IsNull (ex.InnerException, "#3");
2464 Assert.IsNotNull (ex.Message, "#4");
2465 Assert.IsNotNull (ex.ParamName, "#5");
2466 Assert.AreEqual ("attributeType", ex.ParamName, "#6");
2470 [Test] // bug #82431
2471 [Category ("NotWorking")]
2472 public void IsDefined_Inherited ()
2474 Assert.IsFalse (typeof (CA).IsDefined (typeof (NemerleAttribute), false), "#C1");
2475 Assert.IsFalse (typeof (CA).IsDefined (typeof (VolatileModifier), false), "#C2");
2476 Assert.IsFalse (typeof (CA).IsDefined (typeof (FooAttribute), false), "#C3");
2477 Assert.IsFalse (typeof (CA).IsDefined (typeof (BarAttribute), false), "#C4");
2478 Assert.IsTrue (typeof (CA).IsDefined (typeof (NemerleAttribute), true), "#C5");
2479 Assert.IsTrue (typeof (CA).IsDefined (typeof (VolatileModifier), true), "#C6");
2480 Assert.IsFalse (typeof (CA).IsDefined (typeof (FooAttribute), true), "#C7");
2481 Assert.IsFalse (typeof (CA).IsDefined (typeof (BarAttribute), true), "#C8");
2483 Assert.IsFalse (typeof (BBA).IsDefined (typeof (NemerleAttribute), false), "#D1");
2484 Assert.IsFalse (typeof (BBA).IsDefined (typeof (VolatileModifier), false), "#D2");
2485 Assert.IsFalse (typeof (BBA).IsDefined (typeof (FooAttribute), false), "#D3");
2486 Assert.IsFalse (typeof (BBA).IsDefined (typeof (BarAttribute), false), "#D4");
2487 Assert.IsTrue (typeof (BBA).IsDefined (typeof (NemerleAttribute), true), "#D5");
2488 Assert.IsTrue (typeof (BBA).IsDefined (typeof (VolatileModifier), true), "#D6");
2489 Assert.IsTrue (typeof (BBA).IsDefined (typeof (FooAttribute), true), "#D7");
2490 Assert.IsTrue (typeof (BBA).IsDefined (typeof (BarAttribute), true), "#D8");
2492 Assert.IsTrue (typeof (bug82431A1).IsDefined (typeof (InheritAttribute), false), "#E1");
2493 Assert.IsTrue (typeof (bug82431A1).IsDefined (typeof (NotInheritAttribute), false), "#E2");
2494 Assert.IsTrue (typeof (bug82431A1).IsDefined (typeof (InheritAttribute), true), "#E3");
2495 Assert.IsTrue (typeof (bug82431A1).IsDefined (typeof (NotInheritAttribute), true), "#E4");
2497 Assert.IsFalse (typeof (bug82431A2).IsDefined (typeof (InheritAttribute), false), "#F1");
2498 Assert.IsFalse (typeof (bug82431A2).IsDefined (typeof (NotInheritAttribute), false), "#F2");
2499 Assert.IsFalse (typeof (bug82431A2).IsDefined (typeof (InheritAttribute), true), "#F3");
2500 Assert.IsFalse (typeof (bug82431A2).IsDefined (typeof (NotInheritAttribute), true), "#F4");
2502 Assert.IsTrue (typeof (bug82431A3).IsDefined (typeof (InheritAttribute), false), "#G1");
2503 Assert.IsTrue (typeof (bug82431A3).IsDefined (typeof (NotInheritAttribute), false), "#G2");
2504 Assert.IsTrue (typeof (bug82431A3).IsDefined (typeof (InheritAttribute), true), "#G3");
2505 Assert.IsTrue (typeof (bug82431A3).IsDefined (typeof (NotInheritAttribute), true), "#G4");
2507 Assert.IsTrue (typeof (bug82431B1).IsDefined (typeof (InheritAttribute), false), "#H1");
2508 Assert.IsFalse (typeof (bug82431B1).IsDefined (typeof (NotInheritAttribute), false), "#H2");
2509 Assert.IsTrue (typeof (bug82431B1).IsDefined (typeof (InheritAttribute), true), "#H3");
2510 Assert.IsFalse (typeof (bug82431B1).IsDefined (typeof (NotInheritAttribute), true), "#H4");
2512 Assert.IsFalse (typeof (bug82431B2).IsDefined (typeof (InheritAttribute), false), "#I1");
2513 Assert.IsFalse (typeof (bug82431B2).IsDefined (typeof (NotInheritAttribute), false), "#I2");
2514 Assert.IsTrue (typeof (bug82431B2).IsDefined (typeof (InheritAttribute), true), "#I3");
2515 Assert.IsFalse (typeof (bug82431B2).IsDefined (typeof (NotInheritAttribute), true), "#I4");
2517 Assert.IsTrue (typeof (bug82431B3).IsDefined (typeof (InheritAttribute), false), "#J1");
2518 Assert.IsTrue (typeof (bug82431B3).IsDefined (typeof (NotInheritAttribute), false), "#J2");
2519 Assert.IsTrue (typeof (bug82431B3).IsDefined (typeof (InheritAttribute), true), "#J3");
2520 Assert.IsTrue (typeof (bug82431B3).IsDefined (typeof (NotInheritAttribute), true), "#J4");
2522 Assert.IsFalse (typeof (bug82431B4).IsDefined (typeof (InheritAttribute), false), "#K2");
2523 Assert.IsFalse (typeof (bug82431B4).IsDefined (typeof (NotInheritAttribute), false), "#K2");
2524 Assert.IsTrue (typeof (bug82431B4).IsDefined (typeof (InheritAttribute), true), "#K3");
2525 Assert.IsFalse (typeof (bug82431B4).IsDefined (typeof (NotInheritAttribute), true), "#K4");
2528 class Bug13767Attribute : Attribute
2530 public object[] field;
2532 public Bug13767Attribute (params object[] args)
2538 public enum Bug13767Enum
2544 [Bug13767("Demo", new[] { Bug13767Enum.Value1, Bug13767Enum.Value0 })]
2545 public void Bug13767Method(string attributeName, Bug13767Enum[]options)
2551 public void CustomAttributeWithNestedArrayOfEnum ()
2553 var m = GetType ().GetMethod ("Bug13767Method");
2555 var attr = m.GetCustomAttributes (false);
2556 Assert.AreEqual (1, attr.Length, "#1");
2558 var tc = (Bug13767Attribute)attr[0];
2559 Assert.AreEqual (2, tc.field.Length, "#2");
2560 Assert.AreEqual ("Demo", tc.field[0], "#3");
2561 Assert.IsNotNull (tc.field[1], "#4");
2563 var arr = (Bug13767Enum[])tc.field [1];
2564 Assert.AreEqual (2, arr.Length, "#5");
2565 Assert.AreEqual (Bug13767Enum.Value1, arr [0], "#6");
2566 Assert.AreEqual (Bug13767Enum.Value0, arr [1], "#7");
2569 [Test] // GetType (String)
2570 public void GetType1_TypeName_Null ()
2573 Type.GetType ((string) null);
2575 } catch (ArgumentNullException ex) {
2576 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
2577 Assert.IsNull (ex.InnerException, "#3");
2578 Assert.IsNotNull (ex.Message, "#4");
2579 Assert.AreEqual ("TypeName", ex.ParamName, "#5");
2583 [Test] // GetType (String, Boolean)
2584 public void GetType2_TypeName_Null ()
2587 Type.GetType ((string) null, false);
2589 } catch (ArgumentNullException ex) {
2590 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
2591 Assert.IsNull (ex.InnerException, "#3");
2592 Assert.IsNotNull (ex.Message, "#4");
2593 Assert.AreEqual ("TypeName", ex.ParamName, "#5");
2597 [Test] // GetType (String, Boolean, Boolean)
2598 public void GetType3_TypeName_Null ()
2601 Type.GetType ((string) null, false, false);
2603 } catch (ArgumentNullException ex) {
2604 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
2605 Assert.IsNull (ex.InnerException, "#3");
2606 Assert.IsNotNull (ex.Message, "#4");
2607 Assert.AreEqual ("TypeName", ex.ParamName, "#5");
2612 public void GetTypeArray_Args_Null ()
2615 Type.GetTypeArray ((object []) null);
2617 } catch (ArgumentNullException ex) {
2618 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
2619 Assert.IsNull (ex.InnerException, "#3");
2620 Assert.IsNotNull (ex.Message, "#4");
2621 Assert.AreEqual ("args", ex.ParamName, "#5");
2626 public void GetTypeCode ()
2628 Assert.AreEqual (TypeCode.Boolean, Type.GetTypeCode (typeof (bool)), "#1");
2629 Assert.AreEqual (TypeCode.Byte, Type.GetTypeCode (typeof (byte)), "#2");
2630 Assert.AreEqual (TypeCode.Char, Type.GetTypeCode (typeof (char)), "#3");
2631 Assert.AreEqual (TypeCode.DateTime, Type.GetTypeCode (typeof (DateTime)), "#4");
2632 Assert.AreEqual (TypeCode.DBNull, Type.GetTypeCode (typeof (DBNull)), "#5");
2633 Assert.AreEqual (TypeCode.Decimal, Type.GetTypeCode (typeof (decimal)), "#6");
2634 Assert.AreEqual (TypeCode.Double, Type.GetTypeCode (typeof (double)), "#7");
2635 Assert.AreEqual (TypeCode.Empty, Type.GetTypeCode (null), "#8");
2636 Assert.AreEqual (TypeCode.Int16, Type.GetTypeCode (typeof (short)), "#9");
2637 Assert.AreEqual (TypeCode.Int32, Type.GetTypeCode (typeof (int)), "#10");
2638 Assert.AreEqual (TypeCode.Int64, Type.GetTypeCode (typeof (long)), "#11");
2639 Assert.AreEqual (TypeCode.Object, Type.GetTypeCode (typeof (TakesInt)), "#12");
2640 Assert.AreEqual (TypeCode.SByte, Type.GetTypeCode (typeof (sbyte)), "#13");
2641 Assert.AreEqual (TypeCode.Single, Type.GetTypeCode (typeof (float)), "#14");
2642 Assert.AreEqual (TypeCode.String, Type.GetTypeCode (typeof (string)), "#15");
2643 Assert.AreEqual (TypeCode.UInt16, Type.GetTypeCode (typeof (ushort)), "#16");
2644 Assert.AreEqual (TypeCode.UInt32, Type.GetTypeCode (typeof (uint)), "#17");
2645 Assert.AreEqual (TypeCode.UInt64, Type.GetTypeCode (typeof (ulong)), "#18");
2649 public void GetTypeFromHandle_Handle_Zero ()
2651 RuntimeTypeHandle handle = new RuntimeTypeHandle ();
2653 Assert.IsNull (Type.GetTypeFromHandle (handle));
2657 public void GetTypeHandle_O_Null ()
2660 Type.GetTypeHandle (null);
2662 } catch (ArgumentNullException ex) {
2663 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
2664 Assert.IsNull (ex.InnerException, "#3");
2665 Assert.IsNotNull (ex.Message, "#4");
2666 Assert.IsNull (ex.ParamName, "#5");
2670 [Test] // GetConstructor (Type [])
2671 public void GetConstructor1 ()
2674 ConstructorInfo ctor;
2676 type = typeof (CtorsA);
2677 ctor = type.GetConstructor (Type.EmptyTypes);
2678 Assert.IsNotNull (ctor, "#A1");
2679 Assert.AreEqual (0, ctor.GetParameters ().Length, "#A2");
2680 Assert.IsFalse (ctor.IsStatic, "#A3");
2681 Assert.IsTrue (ctor.IsPublic, "#A4");
2682 Assert.AreEqual (".ctor", ctor.Name, "#A5");
2684 type = typeof (CtorsB);
2685 ctor = type.GetConstructor (Type.EmptyTypes);
2686 Assert.IsNotNull (ctor, "#B1");
2687 Assert.AreEqual (0, ctor.GetParameters ().Length, "#B2");
2688 Assert.IsFalse (ctor.IsStatic, "#B3");
2689 Assert.IsTrue (ctor.IsPublic, "#B4");
2690 Assert.AreEqual (".ctor", ctor.Name, "#B5");
2692 type = typeof (CtorsC);
2693 ctor = type.GetConstructor (Type.EmptyTypes);
2694 Assert.IsNull (ctor, "#C");
2696 type = typeof (CtorsC);
2697 ctor = type.GetConstructor (new Type [] { typeof (int) });
2698 Assert.IsNotNull (ctor, "#D1");
2699 Assert.AreEqual (1, ctor.GetParameters ().Length, "#D2");
2700 Assert.IsFalse (ctor.IsStatic, "#D3");
2701 Assert.IsTrue (ctor.IsPublic, "#D4");
2702 Assert.AreEqual (".ctor", ctor.Name, "#D5");
2705 [Test] // GetConstructor (Type [])
2706 public void GetConstructor1_Types_Null ()
2709 typeof (BindingFlags).GetConstructor (null);
2711 } catch (ArgumentNullException ex) {
2712 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
2713 Assert.IsNull (ex.InnerException, "#3");
2714 Assert.IsNotNull (ex.Message, "#4");
2715 Assert.IsNotNull (ex.ParamName, "#5");
2716 Assert.AreEqual ("types", ex.ParamName, "#6");
2720 [Test] // GetConstructor (Type [])
2721 public void GetConstructor1_Types_ItemNull ()
2723 Type type = typeof (BindingFlags);
2725 type.GetConstructor (new Type[1] { null });
2726 Assert.Fail ("#A1");
2727 } catch (ArgumentNullException ex) {
2728 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#A2");
2729 Assert.IsNull (ex.InnerException, "#A3");
2730 Assert.IsNotNull (ex.Message, "#A4");
2731 Assert.IsNotNull (ex.ParamName, "#A5");
2732 Assert.AreEqual ("types", ex.ParamName, "#A6");
2735 type = typeof (TakesInt);
2737 type.GetConstructor (new Type [1] { null });
2738 Assert.Fail ("#B1");
2739 } catch (ArgumentNullException ex) {
2740 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#B2");
2741 Assert.IsNull (ex.InnerException, "#B3");
2742 Assert.IsNotNull (ex.Message, "#B4");
2743 Assert.IsNotNull (ex.ParamName, "#B5");
2744 Assert.AreEqual ("types", ex.ParamName, "#B6");
2748 [Test] // GetConstructor (BindingFlags, Binder, Type [], ParameterModifier [])
2749 public void GetConstructor2_Types_ItemNull ()
2751 Type type = typeof (BindingFlags);
2753 type.GetConstructor (BindingFlags.Default, null,
2754 new Type[1] { null }, null);
2756 } catch (ArgumentNullException ex) {
2757 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
2758 Assert.IsNull (ex.InnerException, "#3");
2759 Assert.IsNotNull (ex.Message, "#4");
2760 Assert.IsNotNull (ex.ParamName, "#5");
2761 Assert.AreEqual ("types", ex.ParamName, "#6");
2765 [Test] // GetConstructor (BindingFlags, Binder, CallingConventions, Type [], ParameterModifier [])
2766 public void GetConstructor3_Types_ItemNull ()
2768 Type type = typeof (BindingFlags);
2770 type.GetConstructor (BindingFlags.Default,
2771 null, CallingConventions.Any,
2772 new Type[1] { null }, null);
2774 } catch (ArgumentNullException ex) {
2775 Assert.AreEqual (typeof (ArgumentNullException), ex.GetType (), "#2");
2776 Assert.IsNull (ex.InnerException, "#3");
2777 Assert.IsNotNull (ex.Message, "#4");
2778 Assert.IsNotNull (ex.ParamName, "#5");
2779 Assert.AreEqual ("types", ex.ParamName, "#6");
2784 public void GetMethod_Bug77367 ()
2786 MethodInfo i = typeof (Bug77367).GetMethod ("Run", Type.EmptyTypes);
2792 public void EqualsUnderlyingType ()
2794 AssemblyBuilderAccess access = AssemblyBuilderAccess.RunAndSave;
2795 TypeAttributes attribs = TypeAttributes.Public;
2797 AssemblyName name = new AssemblyName ();
2798 name.Name = "enumtest";
2799 AssemblyBuilder assembly =
2800 AppDomain.CurrentDomain.DefineDynamicAssembly (
2803 ModuleBuilder module = assembly.DefineDynamicModule
2804 ("m", "enumtest.dll");
2805 EnumBuilder e = module.DefineEnum ("E", attribs, typeof (int));
2807 Assert.IsTrue (typeof (int).Equals (e));
2812 public void Equals_Type_Null ()
2814 Assert.IsFalse (typeof (int).Equals ((Type) null), "#1");
2815 Assert.IsFalse (typeof (int).Equals ((object) null), "#2");
2819 public void GetElementType_Bug63841 ()
2821 Assert.IsNull (typeof (TheEnum).GetElementType (), "#1");
2825 public void FullNameGenerics ()
2827 Type fooType = typeof (Foo<>);
2828 FieldInfo [] fields = fooType.GetFields ();
2830 Assert.AreEqual (1, fields.Length, "#0");
2832 Assert.IsNotNull (fooType.FullName, "#1");
2833 Assert.IsNotNull (fooType.AssemblyQualifiedName, "#1a");
2835 FieldInfo field = fooType.GetField ("Whatever");
2836 Assert.IsNotNull (field, "#2");
2837 Assert.AreEqual (field, fields [0], "#2a");
2838 Assert.IsNull (field.FieldType.FullName, "#3");
2839 Assert.IsNull (field.FieldType.AssemblyQualifiedName, "#3a");
2840 Assert.IsNotNull (field.FieldType.ToString (), "#4");
2842 PropertyInfo prop = fooType.GetProperty ("Test");
2843 Assert.IsNotNull (prop, "#5");
2844 Assert.IsNull (prop.PropertyType.FullName, "#6");
2845 Assert.IsNull (prop.PropertyType.AssemblyQualifiedName, "#6a");
2846 Assert.IsNotNull (prop.PropertyType.ToString (), "#7");
2848 MethodInfo method = fooType.GetMethod("Execute");
2849 Assert.IsNotNull (method, "#8");
2850 Assert.IsNull (method.ReturnType.FullName, "#9");
2851 Assert.IsNull (method.ReturnType.AssemblyQualifiedName, "#9a");
2852 Assert.IsNotNull (method.ReturnType.ToString (), "#10");
2854 ParameterInfo[] parameters = method.GetParameters();
2855 Assert.AreEqual (1, parameters.Length, "#11");
2856 Assert.IsNull (parameters[0].ParameterType.FullName, "#12");
2857 Assert.IsNull (parameters[0].ParameterType.AssemblyQualifiedName, "#12a");
2858 Assert.IsNotNull (parameters[0].ParameterType.ToString (), "#13");
2862 public void TypeParameterIsNotGeneric ()
2864 Type fooType = typeof (Foo<>);
2865 Type type_param = fooType.GetGenericArguments () [0];
2866 Assert.IsTrue (type_param.IsGenericParameter);
2867 Assert.IsFalse (type_param.IsGenericType);
2868 Assert.IsFalse (type_param.IsGenericTypeDefinition);
2870 // LAMESPEC: MSDN claims that this should be false, but .NET v2.0.50727 says it's true
2871 // http://msdn2.microsoft.com/en-us/library/system.type.isgenerictype.aspx
2872 Assert.IsTrue (type_param.ContainsGenericParameters);
2876 public void IsAssignable ()
2878 Type foo_type = typeof (Foo<>);
2879 Type foo_int_type = typeof (Foo<int>);
2880 Assert.IsFalse (foo_type.IsAssignableFrom (foo_int_type), "Foo<int> -!-> Foo<>");
2881 Assert.IsFalse (foo_int_type.IsAssignableFrom (foo_type), "Foo<> -!-> Foo<int>");
2883 Type ibar_short_type = typeof (IBar<short>);
2884 Type ibar_int_type = typeof (IBar<int>);
2885 Type baz_short_type = typeof (Baz<short>);
2886 Type baz_int_type = typeof (Baz<int>);
2888 Assert.IsTrue (ibar_int_type.IsAssignableFrom (baz_int_type), "Baz<int> -> IBar<int>");
2889 Assert.IsTrue (ibar_short_type.IsAssignableFrom (baz_short_type), "Baz<short> -> IBar<short>");
2891 Assert.IsFalse (ibar_int_type.IsAssignableFrom (baz_short_type), "Baz<short> -!-> IBar<int>");
2892 Assert.IsFalse (ibar_short_type.IsAssignableFrom (baz_int_type), "Baz<int> -!-> IBar<short>");
2895 Assert.IsTrue (typeof (Nullable<int>).IsAssignableFrom (typeof (int)));
2896 Assert.IsFalse (typeof (int).IsAssignableFrom (typeof (Nullable<int>)));
2897 Assert.IsTrue (typeof (Nullable<FooStruct>).IsAssignableFrom (typeof (FooStruct)));
2901 public void IsInstanceOf ()
2903 Assert.IsTrue (typeof (Nullable<int>).IsInstanceOfType (5));
2907 public void IsInstanceOfArrayOfNullable ()
2909 Assert.IsTrue (typeof (Nullable<int>[]).IsInstanceOfType (new Nullable<int> [0]));
2913 public void IsInstanceOfType_Null ()
2915 Assert.IsFalse (typeof (int).IsInstanceOfType (null), "int");
2916 Assert.IsFalse (typeof (object).IsInstanceOfType (null), "object");
2917 Assert.IsFalse (typeof (int?).IsInstanceOfType (null), "int?");
2921 public void ByrefType ()
2923 Type foo_type = typeof (Foo<>);
2924 Type type_param = foo_type.GetGenericArguments () [0];
2925 Type byref_type_param = type_param.MakeByRefType ();
2926 Assert.IsFalse (byref_type_param.IsGenericParameter);
2927 Assert.IsNull (byref_type_param.DeclaringType);
2931 [ExpectedException (typeof (TypeLoadException))]
2932 public void MakeByRefByRef ()
2934 typeof (int).MakeByRefType ().MakeByRefType ();
2938 public void MakeArrayTypeTest ()
2940 // This should not crash:
2941 typeof (void).MakeArrayType ();
2946 public class ComFoo<T> {
2950 public void GetCustomAttributesGenericInstance ()
2952 Assert.AreEqual (1, typeof (ComFoo<int>).GetCustomAttributes (typeof (ComVisibleAttribute), true).Length);
2955 interface ByRef1<T> { void f (ref T t); }
2956 interface ByRef2 { void f<T> (ref T t); }
2958 interface ByRef3<T> where T:struct { void f (ref T? t); }
2959 interface ByRef4 { void f<T> (ref T? t) where T:struct; }
2961 void CheckGenericByRef (Type t)
2963 string name = t.Name;
2964 t = t.GetMethod ("f").GetParameters () [0].ParameterType;
2966 Assert.IsFalse (t.IsGenericType, name);
2967 Assert.IsFalse (t.IsGenericTypeDefinition, name);
2968 Assert.IsFalse (t.IsGenericParameter, name);
2972 public void GenericByRef ()
2974 CheckGenericByRef (typeof (ByRef1<>));
2975 CheckGenericByRef (typeof (ByRef2));
2976 CheckGenericByRef (typeof (ByRef3<>));
2977 CheckGenericByRef (typeof (ByRef4));
2980 public class Bug80242<T> {
2981 public interface IFoo { }
2982 public class Bar : IFoo { }
2983 public class Baz : Bar { }
2987 public void TestNestedTypes ()
2989 Type t = typeof (Bug80242<object>);
2990 Assert.IsFalse (t.IsGenericTypeDefinition);
2991 foreach (Type u in t.GetNestedTypes ()) {
2992 Assert.IsTrue (u.IsGenericTypeDefinition, "{0} isn't a generic definition", u);
2993 Assert.AreEqual (u, u.GetGenericArguments () [0].DeclaringType);
2997 [Test] // bug #82211
2998 public void GetMembers_GenericArgument ()
3000 Type argType = typeof (ComFoo<>).GetGenericArguments () [0];
3001 MemberInfo [] members = argType.GetMembers ();
3002 Assert.IsNotNull (members, "#1");
3003 Assert.AreEqual (4, members.Length, "#2");
3007 [ExpectedException (typeof (ArgumentNullException))]
3008 public void ReflectionOnlyGetTypeNullTypeName ()
3010 Type.ReflectionOnlyGetType (null, false, false);
3014 public void ReflectionOnlyGetTypeDoNotThrow ()
3016 Assert.IsNull (Type.ReflectionOnlyGetType ("a, nonexistent.dll", false, false));
3020 [ExpectedException (typeof (FileNotFoundException))]
3021 public void ReflectionOnlyGetTypeThrow ()
3023 Type.ReflectionOnlyGetType ("a, nonexistent.dll", true, false);
3027 public void ReflectionOnlyGetType ()
3029 Type t = Type.ReflectionOnlyGetType (typeof (int).AssemblyQualifiedName.ToString (), true, true);
3030 Assert.AreEqual ("System.Int32", t.FullName);
3035 [ExpectedException (typeof (NotSupportedException))]
3037 public void MakeGenericType_UserDefinedType ()
3039 Type ut = new UserType (typeof (int));
3040 Type t = typeof (Foo<>).MakeGenericType (ut);
3041 Assert.IsTrue (t.IsGenericType, "#A1");
3042 Assert.AreEqual (1, t.GetGenericArguments ().Length, "#A2");
3044 Type arg = t.GetGenericArguments () [0];
3045 Assert.IsNotNull (arg, "#B1");
3046 Assert.IsFalse (arg.IsGenericType, "#B2");
3047 Assert.AreEqual (ut, arg, "#B3");
3050 [Category ("NotWorking")]
3051 //We dont support instantiating a user type
3052 public void MakeGenericType_NestedUserDefinedType ()
3054 Type ut = new UserType (new UserType (typeof (int)));
3055 Type t = typeof (Foo<>).MakeGenericType (ut);
3056 Assert.IsTrue (t.IsGenericType, "#A1");
3057 Assert.AreEqual (1, t.GetGenericArguments ().Length, "#A2");
3059 Type arg = t.GetGenericArguments () [0];
3060 Assert.IsNotNull (arg, "#B1");
3061 Assert.IsFalse (arg.IsGenericType, "#B2");
3062 Assert.AreEqual (ut, arg, "#B3");
3066 [Category ("NotWorking")]
3067 public void TestMakeGenericType_UserDefinedType_DotNet20SP1 ()
3069 Type ut = new UserType(typeof(int));
3070 Type t = typeof(Foo<>).MakeGenericType(ut);
3071 Assert.IsTrue (t.IsGenericType, "#1");
3073 Assert.AreEqual (ut, t.GetGenericArguments()[0], "#2");
3078 [ExpectedException (typeof (NotSupportedException))]
3080 public void MakeGenericType_BadUserType ()
3082 Type ut = new UserType (null);
3083 Type t = typeof (Foo<>).MakeGenericType (ut);
3084 var g0 = t.GetGenericArguments () [0];
3085 Assert.AreSame (g0, ut, "#1");
3089 public void MakeGenericType_WrongNumOfArguments ()
3092 Type t = typeof (Foo<,>).MakeGenericType (new Type [] { typeof (int) });
3094 } catch (ArgumentException) {
3098 [AttributeUsage (AttributeTargets.All)]
3099 public class DocAttribute : Attribute {
3100 public DocAttribute (string docs) {}
3103 class GenericClassWithAttributes<[Doc ("T")] T, [Doc ("B")] B>
3104 where T : class, new ()
3107 public T Bar { get{return null;}}
3109 public void M<[Doc ("X")] X> (X x)
3114 [Test] //bug #377596
3115 public void GetGenericArguments_ArgumentsHaveAttributes ()
3117 Type type = typeof(GenericClassWithAttributes<,>);
3118 Type[] tArgs = type.GetGenericArguments ();
3119 MethodInfo m = type.GetMethod ("M");
3120 Type[] mArgs = m.GetGenericArguments ();
3121 Assert.AreEqual(1, tArgs[0].GetCustomAttributes (typeof (DocAttribute), true).Length, "#1");
3122 Assert.AreEqual(1, tArgs[1].GetCustomAttributes (typeof (DocAttribute), true).Length, "#1");
3123 Assert.AreEqual(1, mArgs[0].GetCustomAttributes (typeof (DocAttribute), true).Length, "#1");
3126 [Test] //bug #471255
3127 public void GetTypeCalledUsingReflection ()
3129 Type expectedType = Type.GetType ("NoNamespaceClass");
3130 Assert.IsNotNull (expectedType, "#1");
3131 MethodInfo m = typeof (Type).GetMethod ("GetType", BindingFlags.Public | BindingFlags.Static, null, new Type [] { typeof (string) }, null);
3132 object r = m.Invoke (null, BindingFlags.Default, null, new object [] { "NoNamespaceClass" }, CultureInfo.InvariantCulture);
3133 Assert.AreSame (expectedType, r, "#2");
3137 public void EqualsUserType () {
3138 UserType2 t1 = new UserType2(null);
3139 UserType2 t2 = new UserType2(t1);
3140 Assert.IsTrue (t1.Equals(t2));
3144 public void GetHashCodeUserType () {
3145 UserType2 t1 = new UserType2(null);
3146 UserType2 t2 = new UserType2(t1);
3147 Assert.AreEqual (42, t2.GetHashCode());
3151 public void IsGenericTypeDefinitionUserType () {
3152 Assert.IsFalse (new UserType(null).IsGenericTypeDefinition);
3156 public void IsGenericTypeUserType () {
3157 Assert.IsFalse (new UserType(null).IsGenericType);
3161 [ExpectedException (typeof (NotSupportedException))]
3162 public void GetGenericTypeDefinitionUserType () {
3163 new UserType(null).GetGenericTypeDefinition ();
3166 [ExpectedException (typeof (NotSupportedException))]
3167 public void GetGenericArgumentsUserType () {
3168 new UserType(null).GetGenericArguments ();
3172 [ExpectedException (typeof (InvalidOperationException))]
3173 public void GenericParameterPositionUserType () {
3174 Assert.IsTrue (new UserType(null).GenericParameterPosition == 0);
3178 public void TypeGetMemberReturnTypeTest ()
3181 MemberTypes memtype;
3183 object [] flagsandtypes = new object [] {
3184 MemberTypes.All, typeof (MemberInfo []),
3185 MemberTypes.Constructor, typeof (ConstructorInfo []),
3186 MemberTypes.Custom, typeof (MemberInfo []),
3187 MemberTypes.Event, typeof (EventInfo []),
3188 MemberTypes.Field, typeof (FieldInfo []),
3189 MemberTypes.Method, typeof (MethodInfo []),
3190 MemberTypes.NestedType, typeof (Type []),
3191 MemberTypes.Property, typeof (PropertyInfo []),
3192 MemberTypes.TypeInfo, typeof (Type [])};
3194 for (int i=0; i < flagsandtypes.Length; i+=2) {
3195 memtype = (MemberTypes)flagsandtypes [i];
3196 testtype = (Type)flagsandtypes [i+1];
3197 obj = GetType ().GetMember ("DummyMember", memtype,
3198 BindingFlags.Public | BindingFlags.Instance);
3199 Assert.AreEqual (testtype.GetHashCode (), obj.GetType ().GetHashCode (),
3200 "Expected " + testtype.FullName);
3206 public void TypeNameStartsWithSpace ()
3208 Type t1 = Type.GetType ("System.Type, mscorlib");
3209 Type t2 = Type.GetType (" System.Type, mscorlib");
3210 Assert.AreEqual (t1, t2);
3215 public void SpaceAfterComma () {
3216 string strType = "System.Collections.Generic.Dictionary`2[[System.Int32,mscorlib], [System.String,mscorlib]],mscorlib";
3217 Assert.IsTrue (Type.GetType (strType) != null);
3223 public void Bug506757 ()
3225 AssemblyName assemblyName = new AssemblyName ();
3226 assemblyName.Name = "customMod";
3227 assemblyName.Version = new Version (1, 2, 3, 4);
3229 AssemblyBuilder assembly
3230 = Thread.GetDomain().DefineDynamicAssembly(
3231 assemblyName, AssemblyBuilderAccess.RunAndSave);
3233 ModuleBuilder module = assembly.DefineDynamicModule("res.exe", "res.exe");
3235 TypeBuilder type0 = module.DefineType ("Base", TypeAttributes.Public, typeof (object));
3236 TypeBuilder type1 = module.DefineType ("Middle", TypeAttributes.Public, type0);
3237 TypeBuilder type2 = module.DefineType ("End", TypeAttributes.Public, type1);
3239 MethodAttributes attrs0 = MethodAttributes.Virtual | MethodAttributes.HideBySig |
3240 MethodAttributes.NewSlot | MethodAttributes.FamORAssem;
3242 MethodAttributes attrs1 = MethodAttributes.Virtual | MethodAttributes.HideBySig |
3243 MethodAttributes.FamORAssem;
3245 MethodAttributes attrs2 = MethodAttributes.Virtual | MethodAttributes.HideBySig |
3246 MethodAttributes.Public;
3249 MethodBuilder m0 = type0.DefineMethod ("Tst", attrs0, typeof (void), null);
3250 m0.GetILGenerator ().Emit (OpCodes.Ret);
3252 MethodBuilder m1 = type1.DefineMethod ("Tst", attrs1, typeof (void), null);
3253 m1.GetILGenerator ().Emit (OpCodes.Ret);
3255 MethodBuilder m2 = type2.DefineMethod ("Tst", attrs2, typeof (void), null);
3256 m2.GetILGenerator ().Emit (OpCodes.Ret);
3259 type0.CreateType ();
3260 type1.CreateType ();
3261 Type t2 = type2.CreateType ();
3263 foreach (var m in t2.GetMethods (BindingFlags.Instance | BindingFlags.NonPublic))
3264 Assert.IsTrue (m.DeclaringType == typeof (object), String.Format ("{0}::{1}", m.DeclaringType, m.Name));
3268 public void MakeArrayTypeOfOneDimension ()
3270 Type vector = typeof (int).MakeArrayType ();
3271 Type szarray = typeof (int).MakeArrayType (1);
3273 Assert.AreNotEqual (vector, szarray, "#1");
3274 Assert.AreEqual ("Int32[]", vector.Name, "#2");
3275 Assert.AreEqual ("Int32[*]", szarray.Name, "#3");
3278 public class DeclaringMethodFoo {
3279 public void Test<T> (T t) {}
3280 public void Test2<T> (ref T t) {}
3283 public class DeclaringMethodBar<T> {
3284 public void Test2 (ref T t) {}
3288 public void DeclaringMethodOnlyWorksWithGenericArgs ()
3290 MethodInfo testMethod = typeof (DeclaringMethodFoo).GetMethod ("Test");
3291 MethodBase otherMethod = testMethod.GetParameters ()[0].ParameterType.DeclaringMethod;
3293 Assert.AreEqual (testMethod, otherMethod,"#1");
3295 Assert.IsNull (typeof (DeclaringMethodBar<>).GetGenericArguments ()[0].DeclaringMethod, "#2");
3298 var x = typeof (int).DeclaringMethod;
3300 } catch (InvalidOperationException) {}
3303 var x = typeof (DeclaringMethodFoo).GetMethod ("Test2").GetParameters () [0].ParameterType.DeclaringMethod;
3305 } catch (InvalidOperationException) {}
3308 var x = typeof (DeclaringMethodBar<>).GetMethod ("Test2").GetParameters () [0].ParameterType.DeclaringMethod;
3310 } catch (InvalidOperationException) {}
3315 public void GetArrayRankThrowsForNonArrayType ()
3317 Assert.AreEqual (1, typeof (int[]).GetArrayRank (), "#1");
3318 Assert.AreEqual (2, typeof (int[,]).GetArrayRank (), "#2");
3320 typeof (int).GetArrayRank ();
3322 } catch (ArgumentException) {}
3325 [Test] //Bug #564379
3326 public void GetMethodsReturnPublicMethodsInInterfaces ()
3328 Type t = typeof (NonClosingStream);
3329 MethodInfo[] methods = t.GetMethods (BindingFlags.Public | BindingFlags.Instance);
3331 Assert.AreEqual (5, methods.Length, "#1");
3334 foreach (var m in methods) {
3335 if (m.Name.Equals ("ToString"))
3336 Assert.IsTrue (m.DeclaringType == typeof (NonClosingStream), "#" + id);
3337 else if (m.Name.Equals ("Dispose") && m.GetParameters ().Length == 0)
3338 Assert.IsTrue (m.DeclaringType == typeof (Stream), "#" + id);
3339 else if (m.Name.Equals ("Equals") || m.Name.Equals ("GetHashCode") || m.Name.Equals ("GetType"))
3340 Assert.IsTrue (m.DeclaringType == typeof (object), "#" + id);
3342 Assert.Fail ("invalid method " + m);
3347 [Test] // Bug #574696
3348 public void GetMember_DoesntReturnPrivatePropOfParent ()
3350 BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance;
3351 Assert.AreEqual (1, typeof (Bar).GetMember ("PrivInst", flags).Length);
3352 Assert.AreEqual (0, typeof (Bar).GetMember ("PrivInstBase", flags).Length);
3353 Assert.AreEqual (1, typeof (Foo).GetMember ("PrivInstBase", flags).Length);
3356 [Test] // Bug #484246
3357 public void GetInterfaceCompareAgainstGTDNames ()
3359 var t = typeof (Dictionary<string,string>);
3360 var iface = typeof (IDictionary<string,string>);
3362 Assert.AreSame (iface, t.GetInterface ("System.Collections.Generic.IDictionary`2"), "#1");
3364 string name = "System.Collections.Generic.IDictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]";
3366 Assert.IsNull (t.GetInterface (name), "#2");
3370 public void RuntimeCorrectlyNormalizeGenericTypes ()
3372 Type lst = typeof (MList<>);
3373 Type arg = lst.GetGenericArguments ()[0];
3375 Type sup = lst.BaseType;
3376 Type sa0 = sup.GetGenericArguments ()[0];
3377 Type sa1 = sup.GetGenericArguments ()[1];
3379 Assert.IsTrue (sa1 == lst, "#1");
3380 Assert.IsTrue (sa0 == arg, "#2");
3382 Type inst = typeof (Cons<,>).MakeGenericType (arg, lst.MakeGenericType (arg));
3383 Assert.IsTrue (inst == sup, "#3");
3391 class MList<A> : Cons<A, MList<A>>
3396 [Test] // Bug #331126
3397 public void IsAssignableFromWorksCorrectlyWithByRefs ()
3399 Type int_byref = typeof (int).MakeByRefType ();
3400 Type obj_byref = typeof (object).MakeByRefType ();
3401 Type long_byref = typeof (long).MakeByRefType ();
3402 Type enum1_byref = typeof (AttributeTargets).MakeByRefType ();
3403 Type enum2_byref = typeof (PlatformID).MakeByRefType ();
3404 Type uint_byref = typeof (uint).MakeByRefType ();
3405 Type string_byref = typeof (object).MakeByRefType ();
3406 Type struct0_byref = typeof (Size4).MakeByRefType ();
3407 Type struct1_byref = typeof (Size4b).MakeByRefType ();
3408 Type mvar0_byref = typeof (TypeTest).GetMethod ("Bug331126").GetGenericArguments ()[0].MakeByRefType ();
3409 Type mvar1_byref = typeof (TypeTest).GetMethod ("Bug331126").GetGenericArguments ()[1].MakeByRefType ();
3411 Assert.IsFalse (typeof (int).IsAssignableFrom (int_byref), "#1");
3412 Assert.IsFalse (int_byref.IsAssignableFrom (typeof (int)), "#2");
3413 Assert.IsFalse (obj_byref.IsAssignableFrom (long_byref), "#3");
3414 Assert.IsFalse (long_byref.IsAssignableFrom (obj_byref), "#4");
3415 Assert.IsTrue (enum1_byref.IsAssignableFrom (enum2_byref), "#5");
3416 Assert.IsTrue (enum2_byref.IsAssignableFrom (enum1_byref), "#6");
3417 Assert.IsTrue (int_byref.IsAssignableFrom (enum2_byref), "#7");
3418 Assert.IsTrue (enum2_byref.IsAssignableFrom (int_byref), "#8");
3419 Assert.IsTrue (enum2_byref.IsAssignableFrom (uint_byref), "#9");
3420 Assert.IsTrue (uint_byref.IsAssignableFrom (enum2_byref), "#10");
3421 Assert.IsTrue (int_byref.IsAssignableFrom (uint_byref), "#11");
3422 Assert.IsTrue (uint_byref.IsAssignableFrom (int_byref), "#12");
3424 Assert.IsTrue (typeof (object).IsAssignableFrom (typeof (long)), "#13");
3426 Assert.IsTrue (obj_byref.IsAssignableFrom (string_byref), "#14");
3427 Assert.IsTrue (string_byref.IsAssignableFrom (obj_byref), "#15");
3429 Assert.IsFalse (uint_byref.IsAssignableFrom (struct0_byref), "#16");
3430 Assert.IsFalse (struct0_byref.IsAssignableFrom (int_byref), "#17");
3431 Assert.IsFalse (struct0_byref.IsAssignableFrom (struct1_byref), "#18");
3433 Assert.IsFalse (obj_byref.IsAssignableFrom (mvar0_byref), "#19");
3434 Assert.IsFalse (mvar0_byref.IsAssignableFrom (mvar1_byref), "#20");
3435 Assert.IsTrue (mvar0_byref.IsAssignableFrom (mvar0_byref), "#21");
3436 Assert.IsFalse (mvar0_byref.IsAssignableFrom (obj_byref), "#22");
3439 public void Bug331126<T,K> () {}
3441 public struct Size4 {
3445 public struct Size4b {
3449 [Test] // Bug #612780
3450 public void CannotMakeDerivedTypesFromTypedByRef ()
3453 typeof (global::System.TypedReference).MakeArrayType ();
3455 } catch (TypeLoadException) { }
3458 typeof (global::System.TypedReference).MakeByRefType ();
3460 } catch (TypeLoadException) { }
3463 typeof (global::System.TypedReference).MakePointerType ();
3465 } catch (TypeLoadException) { }
3470 public void DeclaringTypeOfGenericNestedTypeInstanceIsOpen ()
3472 var type = typeof (Foo<int>.Nested<string>);
3473 Assert.AreSame (typeof (Foo<>), type.DeclaringType, "#1");
3477 interface IGetInterfaceMap<in T>
3482 class GetInterfaceMap : IGetInterfaceMap<object>
3484 public string Bar (object t)
3486 return t.GetType ().FullName;
3491 public void GetInterfaceMapWorksWithVariantIfaces ()
3493 InterfaceMapping res = typeof (GetInterfaceMap).GetInterfaceMap (typeof (IGetInterfaceMap <object>));
3494 Assert.AreEqual (typeof (IGetInterfaceMap <object>), res.InterfaceType);
3495 Assert.AreEqual (typeof (object), res.InterfaceMethods [0].GetParameters () [0].ParameterType);
3497 res = typeof (GetInterfaceMap).GetInterfaceMap (typeof (IGetInterfaceMap <string>));
3498 Assert.AreEqual (typeof (IGetInterfaceMap <string>), res.InterfaceType);
3499 Assert.AreEqual (typeof (string), res.InterfaceMethods [0].GetParameters () [0].ParameterType);
3503 public class MyType : TypeDelegator {
3506 public override bool Equals (Type t) {
3508 return base.Equals (t);
3511 public override Type UnderlyingSystemType {
3514 return typeof (int);
3520 public void NewV4EqualsBehavior ()
3522 var ta = new MyType ();
3523 var tb = new MyType ();
3524 object a = ta, b = tb;
3527 Assert.AreEqual (1, ta.eq, "#1");
3528 Assert.AreEqual (0, ta.ust, "#2");
3530 Assert.AreEqual (2, ta.eq, "#3");
3531 Assert.AreEqual (1, ta.ust, "#4");
3532 Assert.AreEqual (0, tb.eq, "#5");
3533 Assert.AreEqual (1, tb.ust, "#6");
3536 public enum MyRealEnum : short {
3541 public enum MyRealEnum2 : byte {
3545 public enum MyRealEnum3 : short {
3549 public class MyEnum : TypeDelegator {
3550 public bool is_enum { get; set; }
3551 public int fields { get; set; }
3553 public override bool IsSubclassOf (Type c) {
3554 return c == typeof (Enum) && is_enum;
3557 public override FieldInfo[] GetFields (BindingFlags bindingAttr) {
3560 FieldInfo[] res = new FieldInfo [fields];
3561 for (int i = 0; i < fields; ++i) {
3562 if ((bindingAttr & BindingFlags.Instance) != 0)
3563 res [i] = typeof (MyRealEnum).GetField ("value__");
3565 res [i] = typeof (MyRealEnum).GetField ("A");
3572 public void GetEnumUnderlyingType () {
3575 new MyEnum () { is_enum = false }.GetEnumUnderlyingType ();
3577 } catch (ArgumentException) {}
3580 new MyEnum () { is_enum = true, fields = 0 }.GetEnumUnderlyingType ();
3582 } catch (ArgumentException) {}
3585 new MyEnum () { is_enum = true, fields = 2 }.GetEnumUnderlyingType ();
3587 } catch (ArgumentException) {}
3589 Assert.AreSame (typeof (short), new MyEnum () { is_enum = true, fields = 1 }.GetEnumUnderlyingType ());
3593 public void GetEnumNames () {
3595 new MyEnum () { is_enum = false }.GetEnumNames ();
3597 } catch (ArgumentException) {}
3599 var res = new MyEnum () { is_enum = true, fields = 1 }.GetEnumNames ();
3600 Assert.AreEqual (1, res.Length, "#2");
3601 Assert.AreEqual ("A", res [0], "#3");
3603 res = typeof (MyRealEnum).GetEnumNames ();
3604 Assert.AreEqual (3, res.Length, "#4");
3605 Assert.AreEqual ("A", res [0], "#5");
3606 Assert.AreEqual ("B", res [1], "#6");
3607 Assert.AreEqual ("C", res [2], "#7");
3610 public enum OutOfOrderEnum : sbyte
3612 D = -1, C = 2, B = 1, A = 0
3616 public void GetEnumNamesSortsByUnsignedValue ()
3618 string[] names = typeof (OutOfOrderEnum).GetEnumNames ();
3619 Assert.AreEqual (4, names.Length);
3620 Assert.AreEqual ("A", names [0]);
3621 Assert.AreEqual ("B", names [1]);
3622 Assert.AreEqual ("C", names [2]);
3623 Assert.AreEqual ("D", names [3]);
3627 public void GetEnumValues () {
3629 new MyEnum () { is_enum = false }.GetEnumValues ();
3631 } catch (ArgumentException) {}
3634 new MyEnum () { is_enum = true }.GetEnumValues ();
3636 } catch (NotImplementedException) {}
3638 var array = typeof (MyRealEnum).GetEnumValues ();
3639 Assert.AreEqual (typeof (MyRealEnum[]), array.GetType (), "#3");
3640 MyRealEnum[] res = (MyRealEnum[])array;
3642 Assert.AreEqual (3, res.Length, "#4");
3643 Assert.AreEqual (MyRealEnum.A, res [0], "#5");
3644 Assert.AreEqual (MyRealEnum.B, res [1], "#6");
3645 Assert.AreEqual (MyRealEnum.C, res [2], "#7");
3649 public void GetEnumValue () {
3651 typeof (MyRealEnum).GetEnumName (null);
3653 } catch (ArgumentException) { }
3656 new MyEnum () { is_enum = false }.GetEnumName (99);
3658 } catch (ArgumentException) { }
3661 Assert.IsNull (new MyEnum () { fields = 1, is_enum = true }.GetEnumName (77), "#3");
3662 Assert.AreEqual ("A", new MyEnum () { fields = 1, is_enum = true }.GetEnumName (0), "#4");
3663 Assert.AreEqual ("A", new MyEnum () { fields = 1, is_enum = true }.GetEnumName (MyRealEnum.A), "#5");
3664 Assert.AreEqual ("A", new MyEnum () { fields = 1, is_enum = true }.GetEnumName (MyRealEnum2.A), "#6");
3666 Assert.AreEqual ("A", typeof (MyRealEnum).GetEnumName (MyRealEnum.A), "#7");
3667 Assert.AreEqual ("A", typeof (MyRealEnum).GetEnumName ((short)0), "#8");
3668 Assert.AreEqual ("C", typeof (MyRealEnum).GetEnumName (2), "#9");
3669 Assert.IsNull (typeof (MyRealEnum).GetEnumName (9), "#10");
3671 Assert.AreEqual ("A", typeof (MyRealEnum).GetEnumName ((byte)0), "#11");
3672 Assert.AreEqual ("A", typeof (MyRealEnum).GetEnumName ((sbyte)0), "#12");
3673 Assert.AreEqual ("A", typeof (MyRealEnum).GetEnumName (false), "#13");
3674 Assert.AreEqual ("A", typeof (MyRealEnum).GetEnumName ((short)0), "#14");
3675 Assert.AreEqual ("A", typeof (MyRealEnum).GetEnumName ((ushort)0), "#15");
3676 Assert.IsNull (typeof (MyRealEnum).GetEnumName ('c'), "#16");
3678 Assert.AreEqual ("A", typeof (MyRealEnum).GetEnumName ((int)0), "#17");
3679 Assert.AreEqual ("A", typeof (MyRealEnum).GetEnumName ((uint)0), "#18");
3681 Assert.AreEqual ("A", typeof (MyRealEnum).GetEnumName ((long)0), "#19");
3682 Assert.AreEqual ("A", typeof (MyRealEnum).GetEnumName ((ulong)0), "#20");
3685 typeof (MyRealEnum).GetEnumName ((float)0);
3686 Assert.Fail ("#21");
3687 } catch (ArgumentException) { }
3689 typeof (MyRealEnum).GetEnumName ((double)0);
3690 Assert.Fail ("#22");
3691 } catch (ArgumentException) { }
3694 Assert.AreEqual ("A", typeof (MyRealEnum2).GetEnumName ((byte)0), "#23");
3695 Assert.AreEqual ("A", typeof (MyRealEnum2).GetEnumName ((sbyte)0), "#24");
3696 Assert.AreEqual ("A", typeof (MyRealEnum2).GetEnumName (false), "#25");
3698 Assert.AreEqual ("A", typeof (MyRealEnum2).GetEnumName ((short)0), "#26");
3699 Assert.AreEqual ("A", typeof (MyRealEnum2).GetEnumName ((ushort)0), "#27");
3701 Assert.IsNull (typeof (MyRealEnum2).GetEnumName ('c'), "#28");
3703 Assert.AreEqual ("A", typeof (MyRealEnum2).GetEnumName ((int)0), "#29");
3704 Assert.AreEqual ("A", typeof (MyRealEnum2).GetEnumName ((uint)0), "#30");
3706 Assert.AreEqual ("A", typeof (MyRealEnum2).GetEnumName ((long)0), "#31");
3707 Assert.AreEqual ("A", typeof (MyRealEnum2).GetEnumName ((ulong)0), "#32");
3710 typeof (MyRealEnum2).GetEnumName ((float)0);
3711 Assert.Fail ("#33");
3712 } catch (ArgumentException) { }
3714 typeof (MyRealEnum2).GetEnumName ((double)0);
3715 Assert.Fail ("#34");
3716 } catch (ArgumentException) { }
3718 Assert.IsNull (typeof (MyRealEnum2).GetEnumName (12345), "#35");
3722 public void IsEnumDefined () {
3724 typeof (MyRealEnum).IsEnumDefined (null);
3726 } catch (ArgumentException) { }
3729 new MyEnum () { is_enum = false }.IsEnumDefined (99);
3731 } catch (ArgumentException) { }
3734 typeof (MyRealEnum).IsEnumDefined (0);
3736 } catch (ArgumentException) { }
3739 typeof (MyRealEnum).IsEnumDefined ((ushort)0);
3741 } catch (ArgumentException) { }
3744 typeof (MyRealEnum).IsEnumDefined (MyRealEnum3.A);
3746 } catch (ArgumentException) { }
3749 typeof (MyRealEnum).IsEnumDefined (true);
3751 } catch (ArgumentException) { }
3754 typeof (MyRealEnum).IsEnumDefined (MyRealEnum2.A);
3756 } catch (ArgumentException) { }
3759 typeof (MyRealEnum).IsEnumDefined (typeof (MyRealEnum));
3761 } catch (ArgumentException) { }
3763 Assert.IsTrue (typeof (MyRealEnum).IsEnumDefined ((short)0), "#9");
3764 Assert.IsFalse (typeof (MyRealEnum).IsEnumDefined ((short)88), "#10");
3765 Assert.IsTrue (typeof (MyRealEnum).IsEnumDefined (MyRealEnum.A), "#11");
3766 Assert.IsFalse (typeof (MyRealEnum).IsEnumDefined ("d"), "#12");
3767 Assert.IsTrue (typeof (MyRealEnum).IsEnumDefined ("A"), "#13");
3768 Assert.IsFalse (new MyEnum () { is_enum = true, fields = 1 }.IsEnumDefined ((short)99), "#14");
3773 public class Outer {
3774 public class Inner {}
3778 public class Outer<T> {
3779 public class Inner {}
3783 public void GetTypeWithDelegates () {
3784 var tname = typeof (MyRealEnum).AssemblyQualifiedName;
3785 var res = Type.GetType (tname, name => {
3786 return Assembly.Load (name);
3787 },(asm,name,ignore) => {
3788 return asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
3790 Assert.AreEqual (typeof (MyRealEnum), res, "#1");
3793 tname = typeof (Dictionary<int, string>).AssemblyQualifiedName;
3794 res = Type.GetType (tname, name => {
3795 return Assembly.Load (name);
3796 },(asm,name,ignore) => {
3797 return asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
3799 Assert.AreEqual (typeof (Dictionary<int, string>), res, "#2");
3802 tname = typeof (Foo<int>).AssemblyQualifiedName;
3803 res = Type.GetType (tname, name => {
3804 return Assembly.Load (name);
3805 },(asm,name,ignore) => {
3806 return asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
3808 Assert.AreEqual (typeof (Foo<int>), res, "#3");
3811 tname = typeof (Outer.Inner).AssemblyQualifiedName;
3812 res = Type.GetType (tname, name => {
3813 return Assembly.Load (name);
3814 },(asm,name,ignore) => {
3815 return asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
3817 Assert.AreEqual (typeof (Outer.Inner), res, "#4");
3820 tname = typeof (Outer<double>.Inner).AssemblyQualifiedName;
3821 res = Type.GetType (tname, name => {
3822 return Assembly.Load (name);
3823 },(asm,name,ignore) => {
3824 return asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
3826 Assert.AreEqual (typeof (Outer<double>.Inner), res, "#5");
3829 tname = "System.Collections.Generic.List`1[System.Int32]";
3830 res = Type.GetType (tname, name => {
3831 return Assembly.Load (name);
3832 },(asm,name,ignore) => {
3833 return asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
3835 Assert.AreEqual (typeof (List<int>), res, "#6");
3838 tname = typeof (Foo<>).FullName + "[,][]";
3839 res = Type.GetType (tname, name => {
3840 Console.WriteLine ("resolve-asm name {0}", name);
3841 return Assembly.Load (name);
3842 },(asm,name,ignore) => {
3843 return asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
3845 Assert.AreEqual (typeof (Foo<>).MakeArrayType (2).MakeArrayType (), res, "#7");
3847 tname = string.Format("{0}[{1}][]*&", typeof (Foo<>).FullName, typeof (MyRealEnum).FullName);
3848 res = Type.GetType (tname, name => {
3849 return Assembly.Load (name);
3850 },(asm,name,ignore) => {
3851 return asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
3853 Assert.AreEqual (typeof (Foo<MyRealEnum>[]).MakePointerType ().MakeByRefType (), res, "#8");
3856 tname = typeof (MyRealEnum).FullName + "[][]";
3857 res = Type.GetType (tname, name => {
3858 return Assembly.Load (name);
3859 },(asm,name,ignore) => {
3860 return asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
3862 Assert.AreEqual (typeof (MyRealEnum[][]), res, "#9");
3865 tname = typeof (MyRealEnum).FullName + "[*]";
3866 res = Type.GetType (tname, name => {
3867 return Assembly.Load (name);
3868 },(asm,name,ignore) => {
3869 return asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
3871 Assert.AreEqual (typeof (MyRealEnum).MakeArrayType (1), res, "#10");
3874 tname = typeof (MyRealEnum).FullName + "&";
3875 res = Type.GetType (tname, name => {
3876 return Assembly.Load (name);
3877 },(asm,name,ignore) => {
3878 return asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
3880 Assert.AreEqual (typeof (MyRealEnum).MakeByRefType (), res, "#11");
3883 tname = typeof (MyRealEnum).FullName + "*";
3884 res = Type.GetType (tname, name => {
3885 return Assembly.Load (name);
3886 },(asm,name,ignore) => {
3887 return asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
3889 Assert.AreEqual (typeof (MyRealEnum).MakePointerType (), res, "#12");
3891 // assembly resolve without type resolve
3892 res = Type.GetType ("System.String,mscorlib", delegate (AssemblyName aname) { return typeof (int).Assembly; }, null);
3893 Assert.AreEqual (typeof (string), res);
3897 public class CustomGetType : TypeDelegator {
3900 public CustomGetType (string name) { this.name = name; }
3902 public override Type MakeGenericType (Type[] args) {
3903 return new CustomGetType ("GINST");
3906 public override Type GetNestedType(String name, BindingFlags bidingAttr) {
3907 return new CustomGetType ("NESTED");
3910 public override string ToString () { return "UT_" + name; }
3912 public override string Name {
3913 get { return "UT_" + name; }
3918 public void GetTypeWithDelegatesAndUserTypes ()
3920 var tname = "Magic[System.Int32]";
3921 var res = Type.GetType (tname, name => {
3922 return Assembly.Load (name);
3923 },(asm,name,ignore) => {
3924 if (name == "Magic") return new CustomGetType ("MAGIC");
3925 return asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
3927 Assert.AreEqual ("UT_GINST", res.Name, "#1");
3930 tname = "Magic+MyRealEnum";
3931 res = Type.GetType (tname, name => {
3932 return Assembly.Load (name);
3933 },(asm,name,ignore) => {
3934 if (name == "Magic") return new CustomGetType ("MAGIC");
3935 return asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
3937 Assert.AreEqual ("UT_NESTED", res.Name, "#2");
3940 void MustTLE (string tname) {
3942 var res = Type.GetType (tname, name => {
3943 return Assembly.Load (name);
3944 },(asm,name,ignore) => {
3945 return (object)asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
3947 Assert.Fail (tname);
3948 } catch (TypeLoadException) {}
3951 void MustANE (string tname) {
3953 var res = Type.GetType (tname, name => {
3954 return Assembly.Load (name);
3955 },(asm,name,ignore) => {
3956 return (object)asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
3958 Assert.Fail (tname);
3959 } catch (ArgumentNullException) {}
3962 void MustAE (string tname) {
3964 var res = Type.GetType (tname, name => {
3965 return Assembly.Load (name);
3966 },(asm,name,ignore) => {
3967 return (object)asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
3969 Assert.Fail (tname);
3970 } catch (ArgumentException) {}
3973 void MustFNFE (string tname) {
3975 var res = Type.GetType (tname, name => {
3976 return Assembly.Load (name);
3977 },(asm,name,ignore) => {
3978 return (object)asm == null ? Type.GetType (name, false, ignore) : asm.GetType (name, false, ignore);
3980 Assert.Fail (tname);
3981 } catch (FileNotFoundException) {}
3985 public void NewGetTypeErrors () {
3987 MustAE (string.Format ("{0}[{1}&]", typeof (Foo<>).FullName, typeof (MyRealEnum).FullName));
3988 MustAE (string.Format ("{0}[{1}*]", typeof (Foo<>).FullName, typeof (MyRealEnum).FullName));
3989 MustAE (string.Format ("{0}&&", typeof (MyRealEnum).FullName));
3990 MustAE (string.Format ("{0}&*", typeof (MyRealEnum).FullName));
3991 MustAE (string.Format ("{0}&[{1}]", typeof (Foo<>).FullName, typeof (MyRealEnum).FullName));
3994 MustAE (string.Format ("{0}[[{1},", typeof (Foo<>).FullName, typeof (MyRealEnum).FullName));
3995 MustAE (string.Format ("{0}[[{1}]", typeof (Foo<>).FullName, typeof (MyRealEnum).FullName));
3996 MustAE (string.Format ("{0}[[{1}],", typeof (Foo<>).FullName, typeof (MyRealEnum).FullName));
3997 MustAE (string.Format ("{0}[[{1}]_", typeof (Foo<>).FullName, typeof (MyRealEnum).FullName));
3999 MustAE (string.Format ("{0}[{1}", typeof (Foo<>).FullName, typeof (MyRealEnum).FullName));
4000 MustAE (string.Format ("{0}[{1},", typeof (Foo<>).FullName, typeof (MyRealEnum).FullName));
4001 MustAE (string.Format ("{0}[{1},,", typeof (Foo<>).FullName, typeof (MyRealEnum).FullName));
4002 MustAE (string.Format ("{0}[{1} (", typeof (Foo<>).FullName, typeof (MyRealEnum).FullName));
4003 MustAE (string.Format ("{0}[", typeof (Foo<>).FullName));
4005 MustAE (string.Format ("{0}[**]", typeof (MyRealEnum).FullName));
4006 MustAE (string.Format ("{0}[*,*]", typeof (MyRealEnum).FullName));
4007 MustAE (string.Format ("{0}[*,]", typeof (MyRealEnum).FullName));
4008 MustAE (string.Format ("{0}[,*]", typeof (MyRealEnum).FullName));
4009 MustAE (string.Format ("{0}[,-]", typeof (MyRealEnum).FullName));
4010 MustAE (string.Format ("{0}[,{0}]", typeof (MyRealEnum).FullName));
4012 MustAE (string.Format ("{0}[{1}]]", typeof (Foo<>).FullName, typeof (MyRealEnum).FullName));
4013 MustAE (string.Format ("{0}[,]]", typeof (MyRealEnum).FullName));
4016 string aqn = typeof (MyRealEnum).Assembly.FullName;
4017 MustFNFE (string.Format ("{0}, ZZZ{1}", typeof (MyRealEnum).FullName, aqn));
4018 MustTLE (string.Format ("{0}ZZZZ", typeof (MyRealEnum).FullName));
4019 MustTLE (string.Format ("{0}ZZZZ,{1}", typeof (MyRealEnum).FullName, aqn));
4022 delegate void MyAction<in T>(T ag);
4024 [Test] //bug #668506
4025 public void IsAssignableFromWithVariantDelegate () {
4026 Assert.IsFalse (typeof(MyAction<string>).IsAssignableFrom(typeof(MyAction<>)), "#1");
4030 public void IsAssignableFromWithNullable () {
4031 Console.WriteLine(typeof(IEnumerable<int?>).IsAssignableFrom(typeof(IEnumerable<int>)));
4036 public void GetTypeParseGenericCorrectly () { //Bug #15124
4037 Assert.AreEqual (Type.GetType ("MonoTests.System.Foo`1"), typeof (Foo<>), "#1");
4038 Assert.AreEqual (Type.GetType ("MonoTests.System.Foo`1[System.Int32]"), typeof (Foo<int>), "#2");
4039 Assert.AreEqual (Type.GetType ("MonoTests.System.Foo`1[[System.Int32]]"), typeof (Foo<int>), "#3");
4040 Assert.AreEqual (Type.GetType ("MonoTests.System.Foo`1[System.Int32][]"), typeof (Foo<int>[]), "#4");
4041 Assert.AreEqual (Type.GetType ("MonoTests.System.Foo`1[][System.Int32]"), null, "#5");
4042 Assert.AreEqual (Type.GetType ("MonoTests.System.Foo`1[System.Int32][,]"), typeof (Foo<int>[,]), "#6");
4043 Assert.AreEqual (Type.GetType ("MonoTests.System.Foo`1[]"), typeof (Foo<>).MakeArrayType(), "#7");
4044 Assert.AreEqual (Type.GetType ("MonoTests.System.Foo`1[,]"), typeof (Foo<>).MakeArrayType (2), "#8");
4045 Assert.AreEqual (Type.GetType ("MonoTests.System.Foo`1[][]"), typeof (Foo<>).MakeArrayType ().MakeArrayType (), "#9");
4046 Assert.AreEqual (Type.GetType ("MonoTests.System.Foo`1["), null, "#10");
4047 Assert.AreEqual (Type.GetType ("MonoTests.System.Foo`1[["), null, "#11");
4048 Assert.AreEqual (Type.GetType ("MonoTests.System.Foo`1[[]"), null, "#12");
4049 Assert.AreEqual (Type.GetType ("MonoTests.System.Foo`1[,"), null, "#13");
4050 Assert.AreEqual (Type.GetType ("MonoTests.System.Foo`1[*"), null, "#14");
4051 Assert.AreEqual (Type.GetType ("MonoTests.System.Foo`1[System.Int32"), null, "#15");
4054 public abstract class Stream : IDisposable
4056 public void Dispose ()
4058 Console.WriteLine ("stream::dispose");
4061 protected virtual void Dispose (bool disposing)
4066 public class NonClosingStream
4067 : Stream, IDisposable
4069 void IDisposable.Dispose()
4071 Console.WriteLine ("ncs::dispose");
4074 public override string ToString () { return ""; }
4077 static bool ContainsProperty (PropertyInfo [] props, string name)
4079 foreach (PropertyInfo p in props)
4085 public class NemerleAttribute : Attribute
4089 public class VolatileModifier : NemerleAttribute
4099 [AttributeUsage (AttributeTargets.Class, Inherited=false)]
4100 public class FooAttribute : Attribute
4104 public class BarAttribute : FooAttribute
4121 [AttributeUsage (AttributeTargets.Class, Inherited=true)]
4122 public class InheritAttribute : Attribute
4126 [AttributeUsage (AttributeTargets.Class, Inherited=false)]
4127 public class NotInheritAttribute : InheritAttribute
4131 [NotInheritAttribute]
4132 public class bug82431A1
4136 public class bug82431A2 : bug82431A1
4140 [NotInheritAttribute]
4142 public class bug82431A3 : bug82431A1
4147 public class bug82431B1
4151 public class bug82431B2 : bug82431B1
4155 [NotInheritAttribute]
4156 public class bug82431B3 : bug82431B2
4160 public class bug82431B4 : bug82431B3
4168 public class Bug77367
4170 public void Run (bool b)
4177 private string PrivInstBlue
4179 get { return null; }
4182 protected string ProtInstBlue
4184 get { return null; }
4187 protected internal string ProIntInstBlue
4189 get { return null; }
4192 public long PubInstBlue
4196 if (PrivInstBlue == null)
4198 return long.MaxValue;
4202 internal int IntInstBlue
4207 private static string PrivStatBlue
4209 get { return null; }
4212 protected static string ProtStatBlue
4214 get { return null; }
4217 protected static internal string ProIntStatBlue
4219 get { return null; }
4222 public static long PubStatBlue
4226 if (PrivStatBlue == null)
4228 return long.MaxValue;
4232 internal static int IntStatBlue
4238 public class Foo : Blue
4240 private string PrivInstBase
4242 get { return null; }
4245 protected string ProtInstBase
4247 get { return null; }
4250 protected internal string ProIntInstBase
4252 get { return null; }
4255 public long PubInstBase
4259 if (PrivInstBase == null)
4261 return long.MaxValue;
4265 internal int IntInstBase
4270 private static string PrivStatBase
4272 get { return null; }
4275 protected static string ProtStatBase
4277 get { return null; }
4280 protected static internal string ProIntStatBase
4282 get { return null; }
4285 public static long PubStatBase
4289 if (PrivStatBase == null)
4291 return long.MaxValue;
4295 internal static int IntStatBase
4301 public class Bar : Foo
4303 private string PrivInst
4305 get { return null; }
4308 protected string ProtInst
4310 get { return null; }
4313 protected internal string ProIntInst
4315 get { return null; }
4322 if (PrivInst == null)
4324 return long.MaxValue;
4328 internal int IntInst
4333 private static string PrivStat
4335 get { return null; }
4338 protected static string ProtStat
4340 get { return null; }
4343 protected static internal string ProIntStat
4345 get { return null; }
4348 public static long PubStat
4352 if (PrivStat == null)
4354 return long.MaxValue;
4358 internal static int IntStat
4384 public CtorsC (int x)
4390 class UserType : Type
4392 protected Type type;
4394 public UserType(Type type) {
4398 public override Type UnderlyingSystemType { get { return this.type; } }
4400 public override Assembly Assembly { get { return this.type == null ? null : this.type.Assembly; } }
4402 public override string AssemblyQualifiedName { get { return null; } }
4404 public override Type BaseType { get { return null; } }
4406 public override Module Module { get { return this.type.Module; } }
4408 public override string Namespace { get { return null; } }
4410 public override bool IsGenericParameter { get { return true; } }
4412 public override RuntimeTypeHandle TypeHandle { get { throw new NotSupportedException(); } }
4414 public override bool ContainsGenericParameters { get { return true; } }
4416 public override string FullName { get { return this.type.Name; } }
4418 public override Guid GUID { get { throw new NotSupportedException(); } }
4421 protected override bool IsArrayImpl() {
4425 protected override bool IsByRefImpl()
4430 protected override bool IsCOMObjectImpl()
4435 protected override bool IsPointerImpl()
4440 protected override bool IsPrimitiveImpl()
4446 protected override TypeAttributes GetAttributeFlagsImpl()
4451 protected override ConstructorInfo GetConstructorImpl(BindingFlags bindingAttr, Binder binder,
4452 CallingConventions callConvention, Type[] types,
4453 ParameterModifier[] modifiers)
4458 public override ConstructorInfo[] GetConstructors(BindingFlags bindingAttr)
4463 public override Type GetElementType()
4468 public override EventInfo GetEvent(string name, BindingFlags bindingAttr)
4474 public override FieldInfo GetField(string name, BindingFlags bindingAttr)
4480 public override Type GetInterface(string name, bool ignoreCase)
4485 public override Type[] GetInterfaces()
4490 public override MemberInfo[] GetMembers(BindingFlags bindingAttr)
4495 public override object[] GetCustomAttributes(Type attributeType, bool inherit)
4500 public override object[] GetCustomAttributes(bool inherit)
4505 public override bool IsDefined(Type attributeType, bool inherit)
4510 public override string Name { get { return this.type.Name; } }
4512 public override EventInfo[] GetEvents(BindingFlags bindingAttr)
4514 throw new NotImplementedException();
4517 public override FieldInfo[] GetFields(BindingFlags bindingAttr)
4519 throw new NotImplementedException();
4522 protected override MethodInfo GetMethodImpl(string name, BindingFlags bindingAttr, Binder binder,
4523 CallingConventions callConvention, Type[] types,
4524 ParameterModifier[] modifiers)
4529 public override MethodInfo[] GetMethods(BindingFlags bindingAttr)
4534 public override Type GetNestedType(string name, BindingFlags bindingAttr)
4539 public override Type[] GetNestedTypes(BindingFlags bindingAttr)
4544 public override PropertyInfo[] GetProperties(BindingFlags bindingAttr)
4549 protected override PropertyInfo GetPropertyImpl(string name, BindingFlags bindingAttr, Binder binder,
4550 Type returnType, Type[] types, ParameterModifier[] modifiers)
4555 protected override bool HasElementTypeImpl()
4560 public override object InvokeMember(string name, BindingFlags invokeAttr, Binder binder, object target,
4561 object[] args, ParameterModifier[] modifiers, CultureInfo culture,
4562 string[] namedParameters)
4564 throw new NotSupportedException();
4568 class UserType2 : UserType {
4569 public UserType2 (Type type) : base (type) {
4572 public override Type UnderlyingSystemType { get { return this.type ?? this; } }
4574 public override int GetHashCode()
4578 return type.GetHashCode();