2009-06-12 Jb Evain <jbevain@novell.com>
[mcs.git] / nunit20 / util / UIHelper.cs
blob11593e3cd6fe8244e5e63682cba0f7e718d91070
1 #region Copyright (c) 2002-2003, James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole, Philip A. Craig
2 /************************************************************************************
4 ' Copyright 2002-2003 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole
5 ' Copyright 2000-2002 Philip A. Craig
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.
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:
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.
19 ' Portions Copyright 2002-2003 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov, Charlie Poole
20 ' or Copyright 2000-2002 Philip A. Craig
22 ' 2. Altered source versions must be plainly marked as such, and must not be
23 ' misrepresented as being the original software.
25 ' 3. This notice may not be removed or altered from any source distribution.
27 '***********************************************************************************/
28 #endregion
30 namespace NUnit.Util
32 using System;
33 using NUnit.Core;
35 /// <summary>
36 /// Summary description for UIHelper.
37 /// </summary>
38 public class UIHelper
40 private static bool AreNodesTheSame(Test testOne, Test testTwo)
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);
49 public static bool CompareTree(Test rootTestOriginal, Test rootTestNew)
51 if(!AreNodesTheSame(rootTestOriginal,rootTestNew)) return false;
52 if((rootTestOriginal is TestSuite) && (rootTestNew is TestSuite))
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)
60 return false;
62 for(int i=0; i<originalSuite.Tests.Count;i++)
64 if(!CompareTree((Test)originalSuite.Tests[i],(Test)newSuite.Tests[i])) return false;
67 return true;
70 private static bool AreNodesTheSame( UITestNode testOne, UITestNode testTwo )
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;
77 return testOne.FullName.Equals(testTwo.FullName);
80 public static bool CompareTree( UITestNode rootTestOriginal, UITestNode rootTestNew )
82 if( !AreNodesTheSame( rootTestOriginal, rootTestNew ) )
83 return false;
85 if( rootTestOriginal.IsSuite && rootTestNew.IsSuite )
87 if( rootTestOriginal.Tests.Count != rootTestNew.Tests.Count )
88 return false;
90 for(int i=0; i< rootTestOriginal.Tests.Count; i++)
91 if( !CompareTree( (UITestNode)rootTestOriginal.Tests[i], (UITestNode)rootTestNew.Tests[i] ) )
92 return false;
95 return true;