2009-06-12 Bill Holmes <billholmes54@gmail.com>
[mono.git] / mcs / nunit20 / core / NotRunnableTestCase.cs
1 #region Copyright (c) 2002-2003, James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole, Philip A. Craig
2 /************************************************************************************
3 '
4 ' Copyright © 2002-2003 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole
5 ' Copyright © 2000-2003 Philip A. Craig
6 '
7 ' This software is provided 'as-is', without any express or implied warranty. In no 
8 ' event will the authors be held liable for any damages arising from the use of this 
9 ' software.
10
11 ' Permission is granted to anyone to use this software for any purpose, including 
12 ' commercial applications, and to alter it and redistribute it freely, subject to the 
13 ' following restrictions:
14 '
15 ' 1. The origin of this software must not be misrepresented; you must not claim that 
16 ' you wrote the original software. If you use this software in a product, an 
17 ' acknowledgment (see the following) in the product documentation is required.
18 '
19 ' Portions Copyright © 2003 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole
20 ' or Copyright © 2000-2003 Philip A. Craig
21 '
22 ' 2. Altered source versions must be plainly marked as such, and must not be 
23 ' misrepresented as being the original software.
24 '
25 ' 3. This notice may not be removed or altered from any source distribution.
26 '
27 '***********************************************************************************/
28 #endregion
29
30 using System;
31 using System.Reflection;
32 using System.Diagnostics;
33
34 namespace NUnit.Core
35 {
36         /// <summary>
37         /// Summary description for NotRunnableTestCase.
38         /// </summary>
39         public class NotRunnableTestCase : TestCase
40         {
41                 public NotRunnableTestCase(MethodInfo method, string reason) : base(method.DeclaringType.FullName, method.Name)
42                 {
43                         ShouldRun = false;
44                         IgnoreReason = reason;
45                 }
46
47                 public NotRunnableTestCase(MethodInfo method) : base(method.DeclaringType.FullName, method.Name)
48                 {
49                         string reason;
50
51                         if (method.IsAbstract)
52                                 reason = "it must not be abstract";
53                         else if (method.IsStatic)
54                                 reason = "it must be an instance method";
55                         else if (!method.IsPublic)
56                                 reason = "it must be a public method";
57                         else if (method.GetParameters().Length != 0)
58                                 reason = "it must not have parameters";
59                         else if (!method.ReturnType.Equals(typeof(void)))
60                                 reason = "it must return void";
61                         else
62                                 reason = "reason not known";
63
64                         ShouldRun = false;
65                         IgnoreReason = String.Format("Method {0}'s signature is not correct: {1}.", method.Name, reason);
66                 }
67
68                 public override void Run(TestCaseResult result)
69                 {
70                         result.NotRun(base.IgnoreReason);
71                 }
72         }
73 }
74