PageRenderTime 48ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/src/NUnit/core/Extensibility/DataPointProviders.cs

#
C# | 116 lines | 70 code | 15 blank | 31 comment | 10 complexity | dece62c5f880811a9357ff2614823048 MD5 | raw file
Possible License(s): GPL-2.0
  1. // ****************************************************************
  2. // Copyright 2008, Charlie Poole
  3. // This is free software licensed under the NUnit license. You may
  4. // obtain a copy of the license at http://nunit.org.
  5. // ****************************************************************
  6. using System;
  7. using System.Reflection;
  8. using System.Collections;
  9. namespace NUnit.Core.Extensibility
  10. {
  11. class DataPointProviders : ExtensionPoint, IDataPointProvider2
  12. {
  13. public DataPointProviders(ExtensionHost host)
  14. : base("DataPointProviders", host) { }
  15. #region IDataPointProvider Members
  16. /// <summary>
  17. /// Determine whether any data is available for a parameter.
  18. /// </summary>
  19. /// <param name="parameter">A ParameterInfo representing one
  20. /// argument to a parameterized test</param>
  21. /// <returns>True if any data is available, otherwise false.</returns>
  22. public bool HasDataFor(ParameterInfo parameter)
  23. {
  24. foreach (IDataPointProvider provider in Extensions)
  25. if (provider.HasDataFor(parameter))
  26. return true;
  27. return false;
  28. }
  29. /// <summary>
  30. /// Return an IEnumerable providing data for use with the
  31. /// supplied parameter.
  32. /// </summary>
  33. /// <param name="parameter">A ParameterInfo representing one
  34. /// argument to a parameterized test</param>
  35. /// <returns>An IEnumerable providing the required data</returns>
  36. public IEnumerable GetDataFor(ParameterInfo parameter)
  37. {
  38. ArrayList list = new ArrayList();
  39. foreach (IDataPointProvider provider in Extensions)
  40. if (provider.HasDataFor(parameter))
  41. foreach (object o in provider.GetDataFor(parameter))
  42. list.Add(o);
  43. return list;
  44. }
  45. #endregion
  46. #region IDataPointProvider2 Members
  47. /// <summary>
  48. /// Determine whether any data is available for a parameter.
  49. /// </summary>
  50. /// <param name="parameter">A ParameterInfo representing one
  51. /// argument to a parameterized test</param>
  52. /// <returns>True if any data is available, otherwise false.</returns>
  53. public bool HasDataFor(ParameterInfo parameter, Test suite)
  54. {
  55. foreach (IDataPointProvider provider in Extensions)
  56. {
  57. if (provider is IDataPointProvider2)
  58. {
  59. IDataPointProvider2 provider2 = (IDataPointProvider2)provider;
  60. if (provider2.HasDataFor(parameter, suite))
  61. return true;
  62. }
  63. else if (provider.HasDataFor(parameter))
  64. return true;
  65. }
  66. return false;
  67. }
  68. /// <summary>
  69. /// Return an IEnumerable providing data for use with the
  70. /// supplied parameter.
  71. /// </summary>
  72. /// <param name="parameter">A ParameterInfo representing one
  73. /// argument to a parameterized test</param>
  74. /// <returns>An IEnumerable providing the required data</returns>
  75. public IEnumerable GetDataFor(ParameterInfo parameter, Test suite)
  76. {
  77. ArrayList list = new ArrayList();
  78. foreach (IDataPointProvider provider in Extensions)
  79. {
  80. if (provider is IDataPointProvider2)
  81. {
  82. IDataPointProvider2 provider2 = (IDataPointProvider2)provider;
  83. if (provider2.HasDataFor(parameter, suite))
  84. foreach (object o in provider2.GetDataFor(parameter, suite))
  85. list.Add(o);
  86. }
  87. else if (provider.HasDataFor(parameter))
  88. foreach (object o in provider.GetDataFor(parameter))
  89. list.Add(o);
  90. }
  91. return list;
  92. }
  93. #endregion
  94. #region ExtensionPoint Overrides
  95. protected override bool IsValidExtension(object extension)
  96. {
  97. return extension is IDataPointProvider;
  98. }
  99. #endregion
  100. }
  101. }