public void handles_the_clear_test_results_message()
        {
            explorer.ResultStatusChanged(ResultStatus.Unknown);

            var spec =
                new TreeNodeSpecification(
                    @"
suite:s9
test:s9/t17
test:s9/t18
");

            spec.AssertMatch(view.TestNode);


            explorer.HandleMessage(new ClearResultsMessage());

            spec =
                new TreeNodeSpecification(
                    @"
suite:s1
suite:s1/s2
suite:s1/s2/s3
suite:s1/s2/s3/s4
test:s1/s2/s3/s4/t11
test:s1/s2/s3/t9
test:s1/s2/s3/t10
test:s1/s2/t7
test:s1/s2/t8
test:s1/t4
test:s1/t5
test:s1/t6
suite:s5
suite:s5/s6
suite:s5/s6/s7
suite:s5/s6/s7/s8
test:s5/s6/s7/s8/t15
test:s5/s6/s7/t14
test:s5/s6/t13
test:s5/t12
suite:s9
test:s9/t16
test:s9/t17
test:s9/t18
test:t1
test:t2
test:t3
");

            spec.AssertMatch(view.TestNode);
        }
        public void handles_the_clear_test_results_message()
        {
            explorer.ResultStatusChanged(ResultStatus.Unknown);

            var spec =
                new TreeNodeSpecification(
                    @"
            suite:s9
            test:s9/t17
            test:s9/t18
            ");

            spec.AssertMatch(view.TestNode);

            explorer.HandleMessage(new ClearResultsMessage());

            spec =
                new TreeNodeSpecification(
                    @"
            suite:s1
            suite:s1/s2
            suite:s1/s2/s3
            suite:s1/s2/s3/s4
            test:s1/s2/s3/s4/t11
            test:s1/s2/s3/t9
            test:s1/s2/s3/t10
            test:s1/s2/t7
            test:s1/s2/t8
            test:s1/t4
            test:s1/t5
            test:s1/t6
            suite:s5
            suite:s5/s6
            suite:s5/s6/s7
            suite:s5/s6/s7/s8
            test:s5/s6/s7/s8/t15
            test:s5/s6/s7/t14
            test:s5/s6/t13
            test:s5/t12
            suite:s9
            test:s9/t16
            test:s9/t17
            test:s9/t18
            test:t1
            test:t2
            test:t3
            ");

            spec.AssertMatch(view.TestNode);
        }
        public void respond_to_new_filter_status()
        {
            explorer.ResultStatusChanged(ResultStatus.Failed);
            var spec =
                new TreeNodeSpecification(
                    @"
suite:s1
suite:s1/s2
test:s1/s2/t8
test:s1/t6
test:t2
");

            spec.AssertMatch(view.TestNode);
        }
        public void the_new_suite_node_should_be_show_under_its_parent()
        {
            var spec =
                new TreeNodeSpecification(
                    @"
suite:s1
test:s1/t4
test:s1/t5
test:s1/t6
suite:s1/NewSuite
test:t1
test:t2
test:t3
");

            spec.AssertMatch(view.TestNode);
        }
        public void the_child_nodes_are_constructed_with_the_empty_suite()
        {
            var spec =
                new TreeNodeSpecification(
                    @"
suite:Empty
suite:s1
test:s1/t4
test:s1/t5
test:s1/t6
test:t1
test:t2
test:t3
");

            spec.AssertMatch(view.TestNode);
        }
        public void respond_to_new_lifecycle()
        {
            explorer.LifecycleChanged(Lifecycle.Regression);

            var spec =
                new TreeNodeSpecification(
                    @"
suite:s1
suite:s1/s2
test:s1/s2/t8
test:s1/t4
test:s1/t5
test:s1/t6
suite:s9
test:s9/t16
");

            spec.AssertMatch(view.TestNode);
        }
        public void the_child_nodes_are_constructed()
        {
            var spec =
                new TreeNodeSpecification(
                    @"
suite:s1
suite:s1/s2
suite:s1/s2/s3
suite:s1/s2/s3/s4
test:s1/s2/s3/s4/t11
test:s1/s2/s3/t9
test:s1/s2/s3/t10
test:s1/s2/t7
test:s1/s2/t8
test:s1/t4
test:s1/t5
test:s1/t6
suite:s5
suite:s5/s6
suite:s5/s6/s7
suite:s5/s6/s7/s8
test:s5/s6/s7/s8/t15
test:s5/s6/s7/t14
test:s5/s6/t13
test:s5/t12
suite:s9
test:s9/t16
test:s9/t17
test:s9/t18
test:t1
test:t2
test:t3
");

            spec.AssertMatch(view.TestNode);
        }
        public void respond_to_new_lifecycle()
        {
            explorer.LifecycleChanged(Lifecycle.Regression);

            var spec =
                new TreeNodeSpecification(
                    @"
            suite:s1
            suite:s1/s2
            test:s1/s2/t8
            test:s1/t4
            test:s1/t5
            test:s1/t6
            suite:s9
            test:s9/t16
            ");

            spec.AssertMatch(view.TestNode);
        }
        public void respond_to_new_filter_status()
        {
            explorer.ResultStatusChanged(ResultStatus.Failed);
            var spec =
                new TreeNodeSpecification(
                    @"
            suite:s1
            suite:s1/s2
            test:s1/s2/t8
            test:s1/t6
            test:t2
            ");

            spec.AssertMatch(view.TestNode);
        }