PageRenderTime 40ms CodeModel.GetById 13ms RepoModel.GetById 1ms app.codeStats 0ms

/src/NUnit/core/Extensibility/TestCaseProviders.cs

#
C# | 133 lines | 88 code | 16 blank | 29 comment | 10 complexity | 646321c8b8963a8a9397735cb1cc8151 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.Collections;
  7. using System.Reflection;
  8. namespace NUnit.Core.Extensibility
  9. {
  10. class TestCaseProviders : ExtensionPoint, ITestCaseProvider2
  11. {
  12. public TestCaseProviders(IExtensionHost host) : base( "TestCaseProviders", host ) { }
  13. #region ITestCaseProvider Members
  14. /// <summary>
  15. /// Determine whether any test cases are available for a parameterized method.
  16. /// </summary>
  17. /// <param name="method">A MethodInfo representing a parameterized test</param>
  18. /// <returns>True if any cases are available, otherwise false.</returns>
  19. public bool HasTestCasesFor(MethodInfo method)
  20. {
  21. foreach (ITestCaseProvider provider in Extensions)
  22. if (provider.HasTestCasesFor(method))
  23. return true;
  24. return false;
  25. }
  26. /// <summary>
  27. /// Return an enumeration providing test cases for use in
  28. /// running a paramterized test.
  29. /// </summary>
  30. /// <param name="method"></param>
  31. /// <returns></returns>
  32. public IEnumerable GetTestCasesFor(MethodInfo method)
  33. {
  34. ArrayList testcases = new ArrayList();
  35. foreach (ITestCaseProvider provider in Extensions)
  36. try
  37. {
  38. if (provider.HasTestCasesFor(method))
  39. foreach (object o in provider.GetTestCasesFor(method))
  40. testcases.Add(o);
  41. }
  42. catch (System.Reflection.TargetInvocationException ex)
  43. {
  44. testcases.Add(new ParameterSet(ex.InnerException));
  45. }
  46. catch (System.Exception ex)
  47. {
  48. testcases.Add(new ParameterSet(ex));
  49. }
  50. return testcases;
  51. }
  52. #endregion
  53. #region ITestCaseProvider2 Members
  54. /// <summary>
  55. /// Determine whether any test cases are available for a parameterized method.
  56. /// </summary>
  57. /// <param name="method">A MethodInfo representing a parameterized test</param>
  58. /// <param name="suite">The suite for which the test case is being built</param>
  59. /// <returns>True if any cases are available, otherwise false.</returns>
  60. public bool HasTestCasesFor(MethodInfo method, Test suite)
  61. {
  62. foreach (ITestCaseProvider provider in Extensions)
  63. {
  64. if (provider is ITestCaseProvider2)
  65. {
  66. ITestCaseProvider2 provider2 = (ITestCaseProvider2)provider;
  67. if (provider2.HasTestCasesFor(method, suite))
  68. return true;
  69. }
  70. else if (provider.HasTestCasesFor(method))
  71. return true;
  72. }
  73. return false;
  74. }
  75. /// <summary>
  76. /// Return an enumeration providing test cases for use in
  77. /// running a paramterized test.
  78. /// </summary>
  79. /// <param name="method">A MethodInfo representing a parameterized test</param>
  80. /// <param name="suite">The suite for which the test case is being built</param>
  81. /// <returns></returns>
  82. public IEnumerable GetTestCasesFor(MethodInfo method, Test suite)
  83. {
  84. ArrayList testcases = new ArrayList();
  85. foreach (ITestCaseProvider provider in Extensions)
  86. try
  87. {
  88. if (provider is ITestCaseProvider2)
  89. {
  90. ITestCaseProvider2 provider2 = (ITestCaseProvider2)provider;
  91. if (provider2.HasTestCasesFor(method, suite))
  92. foreach (object o in provider2.GetTestCasesFor(method, suite))
  93. testcases.Add(o);
  94. }
  95. else if (provider.HasTestCasesFor(method))
  96. foreach (object o in provider.GetTestCasesFor(method))
  97. testcases.Add(o);
  98. }
  99. catch (System.Reflection.TargetInvocationException ex)
  100. {
  101. testcases.Add(new ParameterSet(ex.InnerException));
  102. }
  103. catch (System.Exception ex)
  104. {
  105. testcases.Add(new ParameterSet(ex));
  106. }
  107. return testcases;
  108. }
  109. #endregion
  110. #region IsValidExtension
  111. protected override bool IsValidExtension(object extension)
  112. {
  113. return extension is ITestCaseProvider;
  114. }
  115. #endregion
  116. }
  117. }