PHP7 Builder

This commit is contained in:
Dominik Liebler
2016-09-22 13:36:58 +02:00
parent 4760d898a0
commit 9f42521e8f
8 changed files with 28 additions and 102 deletions

View File

@@ -3,39 +3,24 @@
namespace DesignPatterns\Creational\Builder\Tests;
use DesignPatterns\Creational\Builder\BikeBuilder;
use DesignPatterns\Creational\Builder\BuilderInterface;
use DesignPatterns\Creational\Builder\CarBuilder;
use DesignPatterns\Creational\Builder\Director;
/**
* DirectorTest tests the builder pattern.
*/
class DirectorTest extends \PHPUnit_Framework_TestCase
{
protected $director;
protected function setUp()
public function testCanBuildBike()
{
$this->director = new Director();
$bikeBuilder = new BikeBuilder();
$newVehicle = (new Director())->build($bikeBuilder);
$this->assertInstanceOf('DesignPatterns\Creational\Builder\Parts\Bike', $newVehicle);
}
public function getBuilder()
public function testCanBuildCar()
{
return array(
array(new CarBuilder()),
array(new BikeBuilder()),
);
}
$carBuilder = new CarBuilder();
$newVehicle = (new Director())->build($carBuilder);
/**
* Here we test the build process. Notice that the client don't know
* anything about the concrete builder.
*
* @dataProvider getBuilder
*/
public function testBuild(BuilderInterface $builder)
{
$newVehicle = $this->director->build($builder);
$this->assertInstanceOf('DesignPatterns\Creational\Builder\Parts\Vehicle', $newVehicle);
$this->assertInstanceOf('DesignPatterns\Creational\Builder\Parts\Car', $newVehicle);
}
}