Add test coverage for Mustache.php 2.0

Update legacy tests for new codebase.
This commit is contained in:
Justin Hileman
2012-02-29 19:12:22 -08:00
parent 8710e4b8a4
commit 0034bf657b
16 changed files with 1123 additions and 707 deletions
+157
View File
@@ -0,0 +1,157 @@
<?php
namespace Mustache\Test;
use Mustache\Parser;
use Mustache\Tokenizer;
/**
* @group unit
*/
class ParserTest extends \PHPUnit_Framework_TestCase {
/**
* @dataProvider getTokenSets
*/
public function testParse($tokens, $expected)
{
$parser = new Parser;
$this->assertEquals($expected, $parser->parse($tokens));
}
public function getTokenSets()
{
return array(
array(
array(),
array()
),
array(
array('text'),
array('text')
),
array(
array(array(
Tokenizer::TAG => '_v',
Tokenizer::NAME => 'name'
)),
array(array(
Tokenizer::TAG => '_v',
Tokenizer::NAME => 'name'
)),
),
array(
array(
'foo',
array(
Tokenizer::TAG => '^',
Tokenizer::INDEX => 123,
Tokenizer::NAME => 'parent'
),
array(
Tokenizer::TAG => '_v',
Tokenizer::NAME => 'name'
),
array(
Tokenizer::TAG => '/',
Tokenizer::INDEX => 456,
Tokenizer::NAME => 'parent'
),
'bar',
),
array(
'foo',
array(
Tokenizer::TAG => '^',
Tokenizer::NAME => 'parent',
Tokenizer::INDEX => 123,
Tokenizer::END => 456,
Tokenizer::NODES => array(
array(
Tokenizer::TAG => '_v',
Tokenizer::NAME => 'name'
),
),
),
'bar',
),
),
);
}
/**
* @dataProvider getBadParseTrees
* @expectedException \LogicException
*/
public function testParserThrowsExceptions($tokens) {
$parser = new Parser;
$parser->parse($tokens);
}
public function getBadParseTrees() {
return array(
// no close
array(
array(
array(
Tokenizer::TAG => '#',
Tokenizer::INDEX => 123,
Tokenizer::NAME => 'parent'
),
),
),
// no close inverted
array(
array(
array(
Tokenizer::TAG => '^',
Tokenizer::INDEX => 123,
Tokenizer::NAME => 'parent'
),
),
),
// no opening inverted
array(
array(
array(
Tokenizer::TAG => '/',
Tokenizer::INDEX => 123,
Tokenizer::NAME => 'parent'
),
),
),
// weird nesting
array(
array(
array(
Tokenizer::TAG => '#',
Tokenizer::INDEX => 123,
Tokenizer::NAME => 'parent'
),
array(
Tokenizer::TAG => '#',
Tokenizer::INDEX => 123,
Tokenizer::NAME => 'child'
),
array(
Tokenizer::TAG => '/',
Tokenizer::INDEX => 123,
Tokenizer::NAME => 'parent'
),
array(
Tokenizer::TAG => '/',
Tokenizer::INDEX => 123,
Tokenizer::NAME => 'child'
),
),
),
);
}
}