2));
        $this->assertEqual($nesting->getSize(), 2);
    }
}
class TestOfXmlStructureParsing extends UnitTestCase {
    function testValidXml() {
        $listener = new MockSimpleScorer();
        $listener->expectNever('paintGroupStart');
        $listener->expectNever('paintGroupEnd');
        $listener->expectNever('paintCaseStart');
        $listener->expectNever('paintCaseEnd');
        $parser = new SimpleTestXmlParser($listener);
        $this->assertTrue($parser->parse("\n"));
        $this->assertTrue($parser->parse("\n"));
        $this->assertTrue($parser->parse("\n"));
    }
    function testEmptyGroup() {
        $listener = new MockSimpleScorer();
        $listener->expectOnce('paintGroupStart', array('a_group', 7));
        $listener->expectOnce('paintGroupEnd', array('a_group'));
        $parser = new SimpleTestXmlParser($listener);
        $parser->parse("\n");
        $parser->parse("\n");
        $this->assertTrue($parser->parse("\n"));
        $this->assertTrue($parser->parse("a_group\n"));
        $this->assertTrue($parser->parse("\n"));
        $parser->parse("\n");
    }
    function testEmptyCase() {
        $listener = new MockSimpleScorer();
        $listener->expectOnce('paintCaseStart', array('a_case'));
        $listener->expectOnce('paintCaseEnd', array('a_case'));
        $parser = new SimpleTestXmlParser($listener);
        $parser->parse("\n");
        $parser->parse("\n");
        $this->assertTrue($parser->parse("\n"));
        $this->assertTrue($parser->parse("a_case\n"));
        $this->assertTrue($parser->parse("\n"));
        $parser->parse("\n");
    }
    function testEmptyMethod() {
        $listener = new MockSimpleScorer();
        $listener->expectOnce('paintCaseStart', array('a_case'));
        $listener->expectOnce('paintCaseEnd', array('a_case'));
        $listener->expectOnce('paintMethodStart', array('a_method'));
        $listener->expectOnce('paintMethodEnd', array('a_method'));
        $parser = new SimpleTestXmlParser($listener);
        $parser->parse("\n");
        $parser->parse("\n");
        $parser->parse("\n");
        $parser->parse("a_case\n");
        $this->assertTrue($parser->parse("\n"));
        $this->assertTrue($parser->parse("a_method\n"));
        $this->assertTrue($parser->parse("\n"));
        $parser->parse("\n");
        $parser->parse("\n");
    }
    function testNestedGroup() {
        $listener = new MockSimpleScorer();
        $listener->expectAt(0, 'paintGroupStart', array('a_group', 7));
        $listener->expectAt(1, 'paintGroupStart', array('b_group', 3));
        $listener->expectCallCount('paintGroupStart', 2);
        $listener->expectAt(0, 'paintGroupEnd', array('b_group'));
        $listener->expectAt(1, 'paintGroupEnd', array('a_group'));
        $listener->expectCallCount('paintGroupEnd', 2);
        $parser = new SimpleTestXmlParser($listener);
        $parser->parse("\n");
        $parser->parse("\n");
        $this->assertTrue($parser->parse("\n"));
        $this->assertTrue($parser->parse("a_group\n"));
        $this->assertTrue($parser->parse("\n"));
        $this->assertTrue($parser->parse("b_group\n"));
        $this->assertTrue($parser->parse("\n"));
        $this->assertTrue($parser->parse("\n"));
        $parser->parse("\n");
    }
}
class AnyOldSignal {
    public $stuff = true;
}
class TestOfXmlResultsParsing extends UnitTestCase {
    function sendValidStart(&$parser) {
        $parser->parse("\n");
        $parser->parse("\n");
        $parser->parse("\n");
        $parser->parse("a_case\n");
        $parser->parse("\n");
        $parser->parse("a_method\n");
    }
    function sendValidEnd(&$parser) {
        $parser->parse("\n");
        $parser->parse("\n");
        $parser->parse("\n");
    }
    function testPass() {
        $listener = new MockSimpleScorer();
        $listener->expectOnce('paintPass', array('a_message'));
        $parser = new SimpleTestXmlParser($listener);
        $this->sendValidStart($parser);
        $this->assertTrue($parser->parse("a_message\n"));
        $this->sendValidEnd($parser);
    }
    function testFail() {
        $listener = new MockSimpleScorer();
        $listener->expectOnce('paintFail', array('a_message'));
        $parser = new SimpleTestXmlParser($listener);
        $this->sendValidStart($parser);
        $this->assertTrue($parser->parse("a_message\n"));
        $this->sendValidEnd($parser);
    }
    function testException() {
        $listener = new MockSimpleScorer();
        $listener->expectOnce('paintError', array('a_message'));
        $parser = new SimpleTestXmlParser($listener);
        $this->sendValidStart($parser);
        $this->assertTrue($parser->parse("a_message\n"));
        $this->sendValidEnd($parser);
    }
    function testSkip() {
        $listener = new MockSimpleScorer();
        $listener->expectOnce('paintSkip', array('a_message'));
        $parser = new SimpleTestXmlParser($listener);
        $this->sendValidStart($parser);
        $this->assertTrue($parser->parse("a_message\n"));
        $this->sendValidEnd($parser);
    }
    function testSignal() {
        $signal = new AnyOldSignal();
        $signal->stuff = "Hello";
        $listener = new MockSimpleScorer();
        $listener->expectOnce('paintSignal', array('a_signal', $signal));
        $parser = new SimpleTestXmlParser($listener);
        $this->sendValidStart($parser);
        $this->assertTrue($parser->parse(
                "\n"));
        $this->sendValidEnd($parser);
    }
    function testMessage() {
        $listener = new MockSimpleScorer();
        $listener->expectOnce('paintMessage', array('a_message'));
        $parser = new SimpleTestXmlParser($listener);
        $this->sendValidStart($parser);
        $this->assertTrue($parser->parse("a_message\n"));
        $this->sendValidEnd($parser);
    }
    function testFormattedMessage() {
        $listener = new MockSimpleScorer();
        $listener->expectOnce('paintFormattedMessage', array("\na\tmessage\n"));
        $parser = new SimpleTestXmlParser($listener);
        $this->sendValidStart($parser);
        $this->assertTrue($parser->parse("\n"));
        $this->sendValidEnd($parser);
    }
}
?>