/Test/Mono.Cecil.Tests/EventTests.cs

http://github.com/jbevain/cecil · C# · 79 lines · 56 code · 23 blank · 0 comment · 0 complexity · cd7915f16f6c5704a9a73a8b3703e794 MD5 · raw file

  1. using System;
  2. using Mono.Cecil;
  3. using Mono.Cecil.Metadata;
  4. using NUnit.Framework;
  5. namespace Mono.Cecil.Tests {
  6. [TestFixture]
  7. public class EventTests : BaseTestFixture {
  8. [Test]
  9. public void AbstractMethod ()
  10. {
  11. TestCSharp ("Events.cs", module => {
  12. var type = module.GetType ("Foo");
  13. Assert.IsTrue (type.HasEvents);
  14. var events = type.Events;
  15. Assert.AreEqual (1, events.Count);
  16. var @event = events [0];
  17. Assert.IsNotNull (@event);
  18. Assert.AreEqual ("Bar", @event.Name);
  19. Assert.IsNotNull (@event.EventType);
  20. Assert.AreEqual ("Pan", @event.EventType.FullName);
  21. Assert.IsNotNull (@event.AddMethod);
  22. Assert.AreEqual (MethodSemanticsAttributes.AddOn, @event.AddMethod.SemanticsAttributes);
  23. Assert.IsNotNull (@event.RemoveMethod);
  24. Assert.AreEqual (MethodSemanticsAttributes.RemoveOn, @event.RemoveMethod.SemanticsAttributes);
  25. });
  26. }
  27. [Test]
  28. public void OtherMethod ()
  29. {
  30. TestIL ("others.il", module => {
  31. var type = module.GetType ("Others");
  32. Assert.IsTrue (type.HasEvents);
  33. var events = type.Events;
  34. Assert.AreEqual (1, events.Count);
  35. var @event = events [0];
  36. Assert.IsNotNull (@event);
  37. Assert.AreEqual ("Handler", @event.Name);
  38. Assert.IsNotNull (@event.EventType);
  39. Assert.AreEqual ("System.EventHandler", @event.EventType.FullName);
  40. Assert.IsTrue (@event.HasOtherMethods);
  41. Assert.AreEqual (2, @event.OtherMethods.Count);
  42. var other = @event.OtherMethods [0];
  43. Assert.AreEqual ("dang_Handler", other.Name);
  44. other = @event.OtherMethods [1];
  45. Assert.AreEqual ("fang_Handler", other.Name);
  46. });
  47. }
  48. [Test]
  49. public void UnattachedEvent ()
  50. {
  51. var int32 = typeof (int).ToDefinition ();
  52. var evt = new EventDefinition ("Event", EventAttributes.None, int32);
  53. Assert.AreEqual (null, evt.AddMethod);
  54. }
  55. }
  56. }