Files
DesignPatternsPHP/Creational/AbstractFactory/Tests/AbstractFactoryTest.php
Wilson_Yang f9b4da7677 Fixed the line break for Windows
Unit testing cannot pass here when using Windows
2019-02-24 16:13:57 +08:00

61 lines
1.6 KiB
PHP

<?php
namespace DesignPatterns\Creational\AbstractFactory\Tests;
use DesignPatterns\Creational\AbstractFactory\CsvParser;
use DesignPatterns\Creational\AbstractFactory\JsonParser;
use DesignPatterns\Creational\AbstractFactory\ParserFactory;
use PHPUnit\Framework\TestCase;
class AbstractFactoryTest extends TestCase
{
public function testCanCreateCsvParser()
{
$factory = new ParserFactory();
$parser = $factory->createCsvParser(CsvParser::OPTION_CONTAINS_HEADER);
$this->assertInstanceOf(CsvParser::class, $parser);
}
public function testCsvParserCanParse()
{
$factory = new ParserFactory();
$parser = $factory->createCsvParser(CsvParser::OPTION_CONTAINS_NO_HEADER);
$result = $parser->parse("A0,A1,A2" . PHP_EOL . "B0,B1,B2" . PHP_EOL . "C0,C1,C2");
$this->assertEquals(
[
['A0', 'A1', 'A2'],
['B0', 'B1', 'B2'],
['C0', 'C1', 'C2']
],
$result
);
}
public function testCsvParserCanSkipHeader()
{
$factory = new ParserFactory();
$parser = $factory->createCsvParser(CsvParser::OPTION_CONTAINS_HEADER);
$result = $parser->parse("A0,A1,A2" . PHP_EOL . "B0,B1,B2" . PHP_EOL . "C0,C1,C2");
$this->assertEquals(
[
['B0', 'B1', 'B2'],
['C0', 'C1', 'C2']
],
$result
);
}
public function testCanCreateJsonParser()
{
$factory = new ParserFactory();
$parser = $factory->createJsonParser();
$this->assertInstanceOf(JsonParser::class, $parser);
}
}