~nunit-core/nunitv2/2.5

« back to all changes in this revision

Viewing changes to src/NUnitCore/core/TestNode.cs

  • Committer: charliepoole
  • Date: 2006-01-06 01:08:17 UTC
  • Revision ID: vcs-imports@canonical.com-20060106010817-z6xazs4kd89zj8j1
Move core from under NUnitFramework to NUnitCore directory

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
using System;
 
2
using System.Collections;
 
3
 
 
4
namespace NUnit.Core
 
5
{
 
6
        /// <summary>
 
7
        /// TestNode represents a single test or suite in the test hierarchy.
 
8
        /// TestNode holds common info needed about a test and represents a
 
9
        /// single node - either a test or a suite - in the hierarchy of tests.
 
10
        /// 
 
11
        /// TestNode extends TestInfo, which holds all the information with
 
12
        /// the exception of the list of child classes. When constructed from
 
13
        /// a Test, TestNodes are always fully populated with child TestNodes.
 
14
        /// 
 
15
        /// Like TestInfo, TestNode is purely a data class, and is not able
 
16
        /// to execute tests.
 
17
        /// 
 
18
        /// TODO: Complete TestNode implementation
 
19
        /// 
 
20
        /// STATUS:
 
21
        ///       TestNode has replaced UITestNode, previously defined 
 
22
        ///       in the nunit.util assembly.
 
23
        ///
 
24
        ///       TestResult now uses TestNode. The TestRunner Load methods
 
25
        ///       all return a TestNode. Test objects are no longer passed
 
26
        ///       back to the client.
 
27
        ///       
 
28
        ///       Currently TestNode implements ITest and so duplicates much
 
29
        ///       of the functionality of Test. In the future, the ITest interface
 
30
        ///       will be simplified and Test will either extend or aggregate
 
31
        ///       TestNode.
 
32
        ///              
 
33
        ///       TestNodes should contain enough info to allow a runner
 
34
        ///       to locate the actual test object and execute it.
 
35
        ///       
 
36
        /// </summary>
 
37
        [Serializable]
 
38
        public class TestNode : TestInfo
 
39
        {
 
40
                #region Instance Variables
 
41
                /// <summary>
 
42
                /// For a test suite, the child tests or suites
 
43
                /// Null if this is not a test suite
 
44
                /// </summary>
 
45
                private ArrayList tests;
 
46
                #endregion
 
47
 
 
48
                #region Constructors
 
49
                /// <summary>
 
50
                /// Construct from a Test
 
51
                /// </summary>
 
52
                /// <param name="test">Test from which a TestNode is to be constructed</param>
 
53
                public TestNode ( ITest test ) : base( test )
 
54
                {
 
55
                        if ( test.IsSuite )
 
56
                        {
 
57
                                this.tests = new ArrayList();
 
58
                                
 
59
                                foreach( ITest child in test.Tests )
 
60
                                {
 
61
                                        TestNode node = new TestNode( child );
 
62
                                        this.Tests.Add( node );
 
63
                                }
 
64
                        }
 
65
                }
 
66
                #endregion
 
67
 
 
68
                #region Properties
 
69
                /// <summary>
 
70
                /// Array of child tests, null if this is a test case.
 
71
                /// </summary>
 
72
                public ArrayList Tests 
 
73
                {
 
74
                        get { return tests; }
 
75
                }
 
76
                #endregion
 
77
        }
 
78
}