// ****************************************************************
// 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
}
}