@@ -464,6 +464,80 @@ public void GenericParameterConstraint ()
464
464
} , verify : ! Platform . OnMono ) ;
465
465
}
466
466
467
+ [ Test ]
468
+ public void GenericAttributeString ( )
469
+ {
470
+ TestModule ( "GenericAttributes.dll" , module => {
471
+ var type = module . GetType ( "WithGenericAttribute_OfString" ) ;
472
+ Assert . IsTrue ( type . HasCustomAttributes ) ;
473
+ var attributes = type . CustomAttributes ;
474
+ Assert . AreEqual ( 1 , attributes . Count ) ;
475
+ Assert . AreEqual ( "GenericAttribute`1<System.String>" , attributes [ 0 ] . AttributeType . FullName ) ;
476
+ var attribute = attributes [ 0 ] ;
477
+ // constructor arguments
478
+ Assert . AreEqual ( true , attribute . HasConstructorArguments ) ;
479
+ var argument = attribute . ConstructorArguments . Single ( ) ;
480
+ Assert . AreEqual ( "System.String" , argument . Type . FullName ) ;
481
+ Assert . AreEqual ( "t" , argument . Value ) ;
482
+ // named field argument
483
+ Assert . AreEqual ( true , attribute . HasFields ) ;
484
+ var field = attribute . Fields . Single ( ) ;
485
+ Assert . AreEqual ( "F" , field . Name ) ;
486
+ Assert . AreEqual ( "System.String" , field . Argument . Type . FullName ) ;
487
+ Assert . AreEqual ( "f" , field . Argument . Value ) ;
488
+ // named property argument
489
+ Assert . AreEqual ( true , attribute . HasProperties ) ;
490
+ var property = attribute . Properties . Single ( ) ;
491
+ Assert . AreEqual ( "P" , property . Name ) ;
492
+ Assert . AreEqual ( "System.String" , property . Argument . Type . FullName ) ;
493
+ Assert . AreEqual ( "p" , property . Argument . Value ) ;
494
+
495
+ } , verify : ! Platform . OnMono ) ;
496
+ }
497
+
498
+ [ Test ]
499
+ public void GenericAttributeInt ( )
500
+ {
501
+ TestModule ( "GenericAttributes.dll" , module => {
502
+ var type = module . GetType ( "WithGenericAttribute_OfInt" ) ;
503
+ Assert . IsTrue ( type . HasCustomAttributes ) ;
504
+ var attributes = type . CustomAttributes ;
505
+ Assert . AreEqual ( 1 , attributes . Count ) ;
506
+ Assert . AreEqual ( "GenericAttribute`1<System.Int32>" , attributes [ 0 ] . AttributeType . FullName ) ;
507
+ var attribute = attributes [ 0 ] ;
508
+ // constructor arguments
509
+ Assert . AreEqual ( true , attribute . HasConstructorArguments ) ;
510
+ var argument = attribute . ConstructorArguments . Single ( ) ;
511
+ Assert . AreEqual ( "System.Int32" , argument . Type . FullName ) ;
512
+ Assert . AreEqual ( 1 , argument . Value ) ;
513
+ // named field argument
514
+ Assert . AreEqual ( true , attribute . HasFields ) ;
515
+ var field = attribute . Fields . Single ( ) ;
516
+ Assert . AreEqual ( "F" , field . Name ) ;
517
+ Assert . AreEqual ( "System.Int32" , field . Argument . Type . FullName ) ;
518
+ Assert . AreEqual ( 2 , field . Argument . Value ) ;
519
+ // named property argument
520
+ Assert . AreEqual ( true , attribute . HasProperties ) ;
521
+ var property = attribute . Properties . Single ( ) ;
522
+ Assert . AreEqual ( "P" , property . Name ) ;
523
+ Assert . AreEqual ( "System.Int32" , property . Argument . Type . FullName ) ;
524
+ Assert . AreEqual ( 3 , property . Argument . Value ) ;
525
+ } , verify : ! Platform . OnMono ) ;
526
+ }
527
+
528
+ [ Test ]
529
+ public void ConstrainedGenericAttribute ( )
530
+ {
531
+ TestModule ( "GenericAttributes.dll" , module => {
532
+ var type = module . GetType ( "WithConstrainedGenericAttribute" ) ;
533
+ Assert . IsTrue ( type . HasCustomAttributes ) ;
534
+ var attributes = type . CustomAttributes ;
535
+ Assert . AreEqual ( 1 , attributes . Count ) ;
536
+ var attribute = attributes [ 0 ] ;
537
+ Assert . AreEqual ( "ConstrainedGenericAttribute`1<DerivedFromConstraintType>" , attribute . AttributeType . FullName ) ;
538
+ } , verify : ! Platform . OnMono ) ;
539
+ }
540
+
467
541
[ Test ]
468
542
public void NullCharInString ( )
469
543
{
0 commit comments