remove svn:executable form *.cs *.txt
[mono.git] / mcs / nunit20 / util / UIHelper.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-2002 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  2002-2003 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole
20 ' or Copyright  2000-2002 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 namespace NUnit.Util
31 {
32         using System;
33         using NUnit.Core;
34
35         /// <summary>
36         /// Summary description for UIHelper.
37         /// </summary>
38         public class UIHelper
39         {
40                 private static bool AreNodesTheSame(Test testOne, Test testTwo)
41                 {
42                         if(testOne==null && testTwo!=null) return false;
43                         if(testTwo==null && testOne!=null) return false;
44                         if(testOne.GetType().FullName != testTwo.GetType().FullName) return false;
45                         if(testOne.ShouldRun ^ testTwo.ShouldRun) return false;
46                         return testOne.FullName.Equals(testTwo.FullName);
47                 }
48
49                 public static bool CompareTree(Test rootTestOriginal, Test rootTestNew)
50                 {
51                         if(!AreNodesTheSame(rootTestOriginal,rootTestNew)) return false;
52                         if((rootTestOriginal is TestSuite) && (rootTestNew is TestSuite))
53                         {
54                                 TestSuite originalSuite = (TestSuite)rootTestOriginal;
55                                 TestSuite newSuite = (TestSuite)rootTestNew;
56                                 int originalCount = originalSuite.Tests.Count;
57                                 int newCount = newSuite.Tests.Count;
58                                 if(originalCount!=newCount)
59                                 {
60                                         return false;
61                                 }
62                                 for(int i=0; i<originalSuite.Tests.Count;i++)
63                                 {
64                                         if(!CompareTree((Test)originalSuite.Tests[i],(Test)newSuite.Tests[i])) return false;
65                                 }
66                         }
67                         return true;
68                 }
69
70                 private static bool AreNodesTheSame( UITestNode testOne, UITestNode testTwo )
71                 {
72                         if( testOne == null && testTwo != null ) return false;
73                         if( testTwo == null && testOne != null ) return false;
74                         if( testOne.IsSuite != testTwo.IsSuite ) return false;
75                         if( testOne.ShouldRun != testTwo.ShouldRun ) return false;
76
77                         return testOne.FullName.Equals(testTwo.FullName);
78                 }
79
80                 public static bool CompareTree( UITestNode rootTestOriginal, UITestNode rootTestNew )
81                 {
82                         if( !AreNodesTheSame( rootTestOriginal, rootTestNew ) ) 
83                                 return false;
84
85                         if( rootTestOriginal.IsSuite && rootTestNew.IsSuite )
86                         {
87                                 if( rootTestOriginal.Tests.Count != rootTestNew.Tests.Count )
88                                         return false;
89
90                                 for(int i=0; i< rootTestOriginal.Tests.Count; i++)
91                                         if( !CompareTree( (UITestNode)rootTestOriginal.Tests[i], (UITestNode)rootTestNew.Tests[i] ) ) 
92                                                 return false;
93                         }
94
95                         return true;
96                 }
97         }
98 }