public function testNumeralValues()
 {
     $parser = new Parser();
     $frame = new PPFrame_DOM(new Preprocessor_DOM($parser));
     $this->assertEquals('1', NumerAlpha::renderCounter($parser, $frame, array(' First list ')), 'First item of "First list" should equal 1');
     $this->assertEquals('2', NumerAlpha::renderCounter($parser, $frame, array()), 'Implied "First list" second item should equal 2');
     $this->assertEquals('1', NumerAlpha::renderCounter($parser, $frame, array(' Second list ')), 'First it of "Second list" should equal 1');
     $this->assertEquals('2', NumerAlpha::renderCounter($parser, $frame, array()), 'Implied "Second list" second item should equal 2');
     $this->assertEquals('3', NumerAlpha::renderCounter($parser, $frame, array('    First list ')), '"First list" third item should equal 3');
     $thirdListArgs = array('Third list', ' pad length = 2 ', ' pad character = x ');
     $this->assertEquals('x1', NumerAlpha::renderCounter($parser, $frame, $thirdListArgs), '"Third list" first item should equal x1');
     $this->assertEquals('x2', NumerAlpha::renderCounter($parser, $frame, array()), '"Third list" second item should equal x2');
     $this->assertEquals('xxxx3', NumerAlpha::renderCounter($parser, $frame, array('   ', ' pad length = 5 ')), '"Third list" third item should equal xxxx3');
     $this->assertEquals('00004', NumerAlpha::renderCounter($parser, $frame, array('   ', ' pad character = 0 ')), '"Third list" fourth item should equal 00004');
     $this->assertEquals('(4)', NumerAlpha::renderCounter($parser, $frame, array('  First list ', ' prefix = ( ', 'suffix = )')), '"Third list" third item should equal (4)');
 }
 public function testNumeralValues()
 {
     $parser = new Parser();
     $frame = new PPFrame_DOM(new Preprocessor_DOM($parser));
     $this->assertEquals('1', NumerAlpha::renderCounter($parser, $frame, array(' First list ')), 'First item of "First list" should equal 1');
     $this->assertEquals('2', NumerAlpha::renderCounter($parser, $frame, array()), 'Implied "First list" second item should equal 2');
     $this->assertEquals('1', NumerAlpha::renderCounter($parser, $frame, array(' Second list ')), 'First it of "Second list" should equal 1');
     $this->assertEquals('2', NumerAlpha::renderCounter($parser, $frame, array()), 'Implied "Second list" second item should equal 2');
     $this->assertEquals('3', NumerAlpha::renderCounter($parser, $frame, array('	First list ')), '"First list" third item should equal 3');
     $thirdListArgs = array('Third list', ' pad length = 2 ', ' pad character = x ');
     $this->assertEquals('x1', NumerAlpha::renderCounter($parser, $frame, $thirdListArgs), '"Third list" first item should equal x1');
     $this->assertEquals('x2', NumerAlpha::renderCounter($parser, $frame, array()), '"Third list" second item should equal x2');
     $this->assertEquals('xxxx3', NumerAlpha::renderCounter($parser, $frame, array('   ', ' pad length = 5 ')), '"Third list" third item should equal xxxx3');
     $this->assertEquals('00004', NumerAlpha::renderCounter($parser, $frame, array('   ', ' pad character = 0 ')), '"Third list" fourth item should equal 00004');
     $this->assertEquals('(4)', NumerAlpha::renderCounter($parser, $frame, array('  First list ', ' prefix = ( ', 'suffix = )')), '"Third list" third item should equal (4)');
     /** list with standard format showing levels
     			{{#counter:list-with-levels|level prefix=:}} Start lev 1
     			{{#counter:}} Stay lev 1
     			{{#counter:|level=2}} Jump to lev 2
     			{{#counter:}} Stay lev 2
     			{{#counter:|level=1}} Drop to lev 1
     			{{#counter:|level=2}} back to lev 2
     			{{#counter:|level=3}} jump to lev 3
     
     			Results in:
     			:1
     			:2
     			::1
     			::2
     			:3
     			::1
     			:::1
     
     		*/
     $this->assertEquals(':1', NumerAlpha::renderCounter($parser, $frame, array('list-with-levels', ' level prefix = : ')), '"list-with-levels" first item should equal 1 at level 1');
     $this->assertEquals(':2', NumerAlpha::renderCounter($parser, $frame, array()), '"list-with-levels" second item should equal 2, remembering last counter and maintains level');
     $this->assertEquals('::1', NumerAlpha::renderCounter($parser, $frame, array('', 'level=2')), '"list-with-levels" first item at level 2 should equal 1');
     $this->assertEquals('::2', NumerAlpha::renderCounter($parser, $frame, array()), '"list-with-levels" second item at level 2 should equal 2, remembering last counter and maintains level');
     $this->assertEquals(':3', NumerAlpha::renderCounter($parser, $frame, array('', ' level =1')), '"list-with-levels" third item at level 1 should equal 3, remembers level');
     $this->assertEquals('::1', NumerAlpha::renderCounter($parser, $frame, array('', ' level  = 2 ')), '"list-with-levels" should equal 1, previous higher level increment resets lower level counters');
     $this->assertEquals(':::1', NumerAlpha::renderCounter($parser, $frame, array(' ', 'level=3')), '"list-with-levels" should equal 1, increasing level resets counter');
     /** outline-format list with levels, non-standard level prefix, varying types, and implicit levels
     			{{#counter:outline-list-with-levels|level prefix=_|format=outline}} Start lev 1
     			{{#counter:}} Stay lev 1
     			{{#counter:|level=2}} Jump to lev 2
     			{{#counter:}} Stay lev 2
     			{{#counter:|level=1}} Drop to lev 1
     			{{#counter:|level=2|type=alpha}} back to lev 2, type alpha
     			{{#counter:|level=3|type=roman}} jump to lev 3, type roman
     			{{#counter:|level=5}} jump to lev 5, no type, implicit numeral lev 4
     			{{#counter:|level=4|type=alpha}} drop to lev 4, change to alpha type
     			{{#counter:|level=2}} drop to lev 2
     
     			Results in:
     			_1
     			_2
     			__2.1
     			__2.2
     			_3
     			__3.a
     			___3.a.i
     			_____3.a.i.1.1
     			____3.a.i.b
     			__3.b
     		*/
     $this->assertEquals('_1', NumerAlpha::renderCounter($parser, $frame, array('outline-list-with-levels', ' level prefix = _ ')), '"outline-list-with-levels" first item should equal 1 at level 1');
     $this->assertEquals('_2', NumerAlpha::renderCounter($parser, $frame, array()), '"outline-list-with-levels" second item should equal 2, remembering last counter and maintains level');
     $this->assertEquals('__2.1', NumerAlpha::renderCounter($parser, $frame, array('', 'level=2')), '"outline-list-with-levels" first item at level 2 should equal 1');
     $this->assertEquals('__2.2', NumerAlpha::renderCounter($parser, $frame, array()), '"outline-list-with-levels" second item at level 2 should equal 2, remembering last counter and maintains level');
     $this->assertEquals('_3', NumerAlpha::renderCounter($parser, $frame, array('', ' level =1')), '"outline-list-with-levels" third item at level 1 should equal 3, remembers level');
     $this->assertEquals('__3.a', NumerAlpha::renderCounter($parser, $frame, array('', 'level=2', 'type=alpha')), '"outline-list-with-levels" should equal a, previous higher level increment resets lower level counters, change type to alpha');
     $this->assertEquals('___3.a.i', NumerAlpha::renderCounter($parser, $frame, array(' ', 'level=3', 'type=roman')), '"outline-list-with-levels" should equal i, increasing level resets counter, level 2 still alpha, level 3 type roman');
     $this->assertEquals('_____3.a.i.1.1', NumerAlpha::renderCounter($parser, $frame, array(' ', 'level=5')), '"outline-list-with-levels" implicit level 4 should equal 1, new level 5 should also equal 1, previous types maintained');
     $this->assertEquals('____3.a.i.b', NumerAlpha::renderCounter($parser, $frame, array(' ', 'level=4', 'type=alpha')), '"outline-list-with-levels" increment implicit level 4, change type to alpha, should equal b, previous types maintained');
     $this->assertEquals('__3.b', NumerAlpha::renderCounter($parser, $frame, array(' ', 'level=2')), '"outline-list-with-levels" drop to level 2, should equal b, previous types maintained');
 }