more tests written, need to fix that retval problem stat

This commit is contained in:
Meredith L. Patterson 2013-12-01 22:09:45 -08:00
parent 5c5a10b5c1
commit 60d096bc16
4 changed files with 129 additions and 0 deletions

View file

@ -0,0 +1,35 @@
<?php
include_once 'hammer.php';
class AndTest extends PHPUnit_Framework_TestCase
{
protected $parser1;
protected $parser2;
protected $parser3;
protected function setUp()
{
$this->parser1 = sequence(h_and(ch("0")), ch("0"));
$this->parser2 = sequence(h_and(ch("0")), ch("1"));
$this->parser3 = sequence(ch("1"), h_and(ch("2")));
}
public function testSuccess1()
{
$result = h_parse($this->parser1, "0");
$this->assertEquals(array("0"), $result);
}
public function testFailure2()
{
$result = h_parse($this->parser2, "0");
$this->assertEquals(NULL, $result);
}
public function testSuccess3()
{
$result = h_parse($this->parser3, "12");
$this->assertEquals(array("1"), $result);
}
}
?>

View file

@ -0,0 +1,35 @@
<?php
include_once 'hammer.php';
class EpsilonPTest extends PHPUnit_Framework_TestCase
{
protected $parser1;
protected $parser2;
protected $parser3;
protected function setUp()
{
$this->parser1 = sequence(ch("a"), h_epsilon_p(), ch("b"));
$this->parser2 = sequence(h_epsilon_p(), ch("a"));
$this->parser3 = sequence(ch("a"), h_epsilon_p());
}
public function testSuccess1()
{
$result = h_parse($this->parser1, "ab");
$this->assertEquals(array("a", "b"), $result);
}
public function testSuccess2()
{
$result = h_parse($this->parser2, "a");
$this->assertEquals(array("a"), $result);
}
public function testSuccess3()
{
$result = h_parse($this->parser3, "ab");
$this->assertEquals(array("a"), $result);
}
}
?>

View file

@ -0,0 +1,24 @@
<?php
include_once 'hammer.php';
class LeftrecTest extends PHPUnit_Framework_TestCase
{
protected $parser;
protected function setUp()
{
$this->parser = h_indirect();
h_bind_indirect($this->parser, choice(sequence($this->parser, ch("a")), ch("a")));
}
public function testSuccess()
{
$result1 = h_parse($this->parser, "a");
$result2 = h_parse($this->parser, "aa");
$result3 = h_parse($this->parser, "aaa");
$this->assertEquals("a", $result1);
$this->assertEquals(array("a", "a"), $result);
$this->assertEquals(array(array("a", "a"), "a"), $result);
}
}
?>

View file

@ -0,0 +1,35 @@
<?php
include_once 'hammer.php';
class NotTest extends PHPUnit_Framework_TestCase
{
protected $parser1;
protected $parser2;
protected function setUp()
{
$this->parser1 = sequence(ch("a"), choice(ch("+"), h_token("++")), ch("b"));
$this->parser2 = sequence(ch("a"), choice(sequence(ch("+"), h_not(ch("+"))), h_token("++")), ch("b"));
}
public function testSuccess1()
{
$result = h_parse($this->parser1, "a+b");
$this->assertEquals(array("a", "+", "b"), $result);
}
public function testFailure1()
{
$result = h_parse($this->parser1, "a++b");
$this->assertEquals(NULL, $result);
}
public function testSuccess2()
{
$result1 = h_parse($this->parser2, "a+b");
$result2 = h_parse($this->parser2, "a++b");
$this->assertEquals(array("a", array("+"), "b"), $result1);
$this->assertEquals(array("a", "++", "b"), $result2);
}
}
?>