/Mono.Cecil/Test/Mono.Cecil.Tests/PropertyTests.cs

http://github.com/icsharpcode/ILSpy · C# · 112 lines · 79 code · 33 blank · 0 comment · 2 complexity · e1002736bb8b2dd65a659e5d54e77947 MD5 · raw file

  1. using System.Linq;
  2. using NUnit.Framework;
  3. namespace Mono.Cecil.Tests {
  4. [TestFixture]
  5. public class PropertyTests : BaseTestFixture {
  6. [TestCSharp ("Properties.cs")]
  7. public void AbstractMethod (ModuleDefinition module)
  8. {
  9. var type = module.GetType ("Foo");
  10. Assert.IsTrue (type.HasProperties);
  11. var properties = type.Properties;
  12. Assert.AreEqual (3, properties.Count);
  13. var property = properties [0];
  14. Assert.IsNotNull (property);
  15. Assert.AreEqual ("Bar", property.Name);
  16. Assert.IsNotNull (property.PropertyType);
  17. Assert.AreEqual ("System.Int32", property.PropertyType.FullName);
  18. Assert.IsNotNull (property.GetMethod);
  19. Assert.AreEqual (MethodSemanticsAttributes.Getter, property.GetMethod.SemanticsAttributes);
  20. Assert.IsNull (property.SetMethod);
  21. property = properties [1];
  22. Assert.IsNotNull (property);
  23. Assert.AreEqual ("Baz", property.Name);
  24. Assert.IsNotNull (property.PropertyType);
  25. Assert.AreEqual ("System.String", property.PropertyType.FullName);
  26. Assert.IsNotNull (property.GetMethod);
  27. Assert.AreEqual (MethodSemanticsAttributes.Getter, property.GetMethod.SemanticsAttributes);
  28. Assert.IsNotNull (property.SetMethod);
  29. Assert.AreEqual (MethodSemanticsAttributes.Setter, property.SetMethod.SemanticsAttributes);
  30. property = properties [2];
  31. Assert.IsNotNull (property);
  32. Assert.AreEqual ("Gazonk", property.Name);
  33. Assert.IsNotNull (property.PropertyType);
  34. Assert.AreEqual ("System.String", property.PropertyType.FullName);
  35. Assert.IsNull (property.GetMethod);
  36. Assert.IsNotNull (property.SetMethod);
  37. Assert.AreEqual (MethodSemanticsAttributes.Setter, property.SetMethod.SemanticsAttributes);
  38. }
  39. [TestIL ("others.il")]
  40. public void OtherMethod (ModuleDefinition module)
  41. {
  42. var type = module.GetType ("Others");
  43. Assert.IsTrue (type.HasProperties);
  44. var properties = type.Properties;
  45. Assert.AreEqual (1, properties.Count);
  46. var property = properties [0];
  47. Assert.IsNotNull (property);
  48. Assert.AreEqual ("Context", property.Name);
  49. Assert.IsNotNull (property.PropertyType);
  50. Assert.AreEqual ("System.String", property.PropertyType.FullName);
  51. Assert.IsTrue (property.HasOtherMethods);
  52. Assert.AreEqual (2, property.OtherMethods.Count);
  53. var other = property.OtherMethods [0];
  54. Assert.AreEqual ("let_Context", other.Name);
  55. other = property.OtherMethods [1];
  56. Assert.AreEqual ("bet_Context", other.Name);
  57. }
  58. [TestCSharp ("Properties.cs")]
  59. public void SetOnlyIndexer (ModuleDefinition module)
  60. {
  61. var type = module.GetType ("Bar");
  62. var indexer = type.Properties.Where (property => property.Name == "Item").First ();
  63. var parameters = indexer.Parameters;
  64. Assert.AreEqual (2, parameters.Count);
  65. Assert.AreEqual ("System.Int32", parameters [0].ParameterType.FullName);
  66. Assert.AreEqual ("System.String", parameters [1].ParameterType.FullName);
  67. }
  68. [TestCSharp ("Properties.cs")]
  69. public void ReadSemanticsFirst (ModuleDefinition module)
  70. {
  71. var type = module.GetType ("Baz");
  72. var setter = type.GetMethod ("set_Bingo");
  73. Assert.AreEqual (MethodSemanticsAttributes.Setter, setter.SemanticsAttributes);
  74. var property = type.Properties.Where (p => p.Name == "Bingo").First ();
  75. Assert.AreEqual (setter, property.SetMethod);
  76. Assert.AreEqual (type.GetMethod ("get_Bingo"), property.GetMethod);
  77. }
  78. }
  79. }