Location: PHPKode > scripts > Faker > fzaninotto-Faker-a6589c6/test/Faker/GeneratorTest.php
<?php

namespace Faker\Test;

use Faker\Generator;

class GeneratorTest extends \PHPUnit_Framework_TestCase
{
	public function testAddProviderGivesPriorityToNewlyAddedProvider()
	{
		$generator = new Generator;
		$generator->addProvider(new FooProvider());
		$generator->addProvider(new BarProvider());
		$this->assertEquals('barfoo', $generator->format('fooFormatter'));
	}
	
	public function testGetFormatterReturnsCallable()
	{
		$generator = new Generator;
		$provider = new FooProvider();
		$generator->addProvider($provider);
		$expected = array($provider, 'fooFormatter');
		$this->assertTrue(is_callable($generator->getFormatter('fooFormatter')));
	}

	public function testGetFormatterReturnsCorrectFormatter()
	{
		$generator = new Generator;
		$provider = new FooProvider();
		$generator->addProvider($provider);
		$expected = array($provider, 'fooFormatter');
		$this->assertEquals($expected, $generator->getFormatter('fooFormatter'));
	}

	/**
	 * @expectedException InvalidArgumentException
	 */
	public function testGetFormatterThrowsExceptionOnIncorrectProvider()
	{
		$generator = new Generator;
		$generator->getFormatter('fooFormatter');
	}

	/**
	 * @expectedException InvalidArgumentException
	 */
	public function testGetFormatterThrowsExceptionOnIncorrectFormatter()
	{
		$generator = new Generator;
		$provider = new FooProvider();
		$generator->addProvider($provider);
		$generator->getFormatter('barFormatter');
	}
	
	public function testFormatCallsFormatterOnProvider()
	{
		$generator = new Generator;
		$provider = new FooProvider();
		$generator->addProvider($provider);
		$this->assertEquals('foobar', $generator->format('fooFormatter'));
	}

	public function testFormatTransfersArgumentsToFormatter()
	{
		$generator = new Generator;
		$provider = new FooProvider();
		$generator->addProvider($provider);
		$this->assertEquals('bazfoo', $generator->format('fooFormatterWithArguments', array('foo')));
	}
	
	public function testParseReturnsSameStringWhenItContainsNoCurlyBraces()
	{
		$generator = new Generator();
		$this->assertEquals('fooBar#?', $generator->parse('fooBar#?'));
	}

	public function testParseReturnsStringWithTokensReplacedByFormatters()
	{
		$generator = new Generator();
		$provider = new FooProvider();
		$generator->addProvider($provider);
		$this->assertEquals('This is foobar a text with foobar', $generator->parse('This is {{fooFormatter}} a text with {{ fooFormatter }}'));
	}

	public function testMagicGetCallsFormat()
	{
		$generator = new Generator;
		$provider = new FooProvider();
		$generator->addProvider($provider);
		$this->assertEquals('foobar', $generator->fooFormatter);
	}

	public function testMagicCallCallsFormat()
	{
		$generator = new Generator;
		$provider = new FooProvider();
		$generator->addProvider($provider);
		$this->assertEquals('foobar', $generator->fooFormatter());
	}

	public function testMagicCallCallsFormatWithArguments()
	{
		$generator = new Generator;
		$provider = new FooProvider();
		$generator->addProvider($provider);
		$this->assertEquals('bazfoo', $generator->fooFormatterWithArguments('foo'));
	}

}

class FooProvider
{
	public function fooFormatter()
	{
		return 'foobar';
	}
	
	public function fooFormatterWithArguments($value = '')
	{
		return 'baz' . $value;
	}
}

class BarProvider
{
	public function fooFormatter()
	{
		return 'barfoo';
	}
}
Return current item: Faker