/// <summary>
        /// This test builds a <see cref="TestQueue"/> and runs
        /// all of the subtests identified by their name.
        /// </summary>
        /// <param name="runThese">names of tests to run; null indicates all tests of the testgroup</param>
        /// <param name="arg">argument to send to the <see cref="ISubTest"/> objects</param>
        public void RunTests(string[] runThese, ISubTestArgument arg)
        {
            TestQueue tq = null;

            if (runThese == null)
            {
                tq = new TestQueue(this.AllTests.Values, arg);
            }
            else
            {
                ArrayList run = new ArrayList();
                foreach (string name in runThese)
                {
                    bool added = false;
                    foreach (ISubTest sub in this.AllTests.Values)
                    {
                        if (name == sub.Name)
                        {
                            run.Add(sub);
                            added = true;
                            break;
                        }
                    }

                    if (added == false)
                    {
                        throw new ApplicationException("RunTests(): Specified the name of a test that does not exist in the test group.");
                    }
                }

                tq = new TestQueue(run, arg);
            }

            // run all of the tests
            arg.ActiveTests = tq;
            tq.RunQueue();
        }
        /// <summary>
        /// This test builds a <see cref="TestQueue"/> and runs
        /// all of the subtests identified by their name.
        /// </summary>
        /// <param name="runThese">names of tests to run; null indicates all tests of the testgroup</param>
        /// <param name="arg">argument to send to the <see cref="ISubTest"/> objects</param>
        public void RunTests(string[] runThese, ISubTestArgument arg)
        {
            TestQueue tq = null;

            if (runThese == null)
            {
                tq = new TestQueue(this.AllTests.Values, arg);
            }
            else
            {
                ArrayList run = new ArrayList();
                foreach (string name in runThese)
                {
                    bool added = false;
                    foreach (ISubTest sub in this.AllTests.Values)
                    {
                        if (name == sub.Name)
                        {
                            run.Add(sub);
                            added = true;
                            break;
                        }
                    }

                    if (added == false)
                    {
                        throw new ApplicationException("RunTests(): Specified the name of a test that does not exist in the test group.");
                    }
                }

                tq = new TestQueue(run, arg);
            }

            // run all of the tests
            arg.ActiveTests = tq;
            tq.RunQueue();
        }