// **************************************************************** // Copyright 2007, Charlie Poole // This is free software licensed under the NUnit license. You may // obtain a copy of the license at http://nunit.org/?p=license&r=2.4 // **************************************************************** using System; using System.Collections; namespace NUnit.Core { /// /// TestNode represents a single test or suite in the test hierarchy. /// TestNode holds common info needed about a test and represents a /// single node - either a test or a suite - in the hierarchy of tests. /// /// TestNode extends TestInfo, which holds all the information with /// the exception of the list of child classes. When constructed from /// a Test, TestNodes are always fully populated with child TestNodes. /// /// Like TestInfo, TestNode is purely a data class, and is not able /// to execute tests. /// /// [Serializable] public class TestNode : TestInfo { #region Instance Variables private ITest parent; /// /// For a test suite, the child tests or suites /// Null if this is not a test suite /// private ArrayList tests; #endregion #region Constructors /// /// Construct from an ITest /// /// Test from which a TestNode is to be constructed public TestNode ( ITest test ) : base( test ) { if ( test.IsSuite ) { this.tests = new ArrayList(); foreach( ITest child in test.Tests ) { TestNode node = new TestNode( child ); this.Tests.Add( node ); node.parent = this; } } } /// /// Construct a TestNode given a TestName and an /// array of child tests. /// /// The TestName of the new test /// An array of tests to be added as children of the new test public TestNode ( TestName testName, ITest[] tests ) : base( testName, tests ) { this.tests = new ArrayList(); this.tests.AddRange( tests ); } #endregion #region Properties /// /// Gets the parent test of the current test /// public override ITest Parent { get { return parent; } } /// /// Array of child tests, null if this is a test case. /// public override IList Tests { get { return tests; } } #endregion } }