Current File : /home/jvzmxxx/wiki1/extensions/Wikibase/view/tests/phpunit/TextInjectorTest.php
<?php

namespace Wikibase\View\Tests;

use Wikibase\View\TextInjector;

/**
 * @covers Wikibase\View\TextInjector
 *
 * @group Wikibase
 * @group WikibaseView
 *
 * @license GPL-2.0+
 * @author Daniel Kinzler
 */
class TextInjectorTest extends \PHPUnit_Framework_TestCase {

	public function testConstructor() {
		$injector = new TextInjector();
		$this->assertEmpty( $injector->getMarkers() );

		$injector = new TextInjector( array( 'test' => array( 'foo', 'bar' ) ) );
		$this->assertArrayHasKey( 'test', $injector->getMarkers() );
	}

	public function testNewMarker() {
		$injector = new TextInjector();

		$foo = $injector->newMarker( 'foo' );
		$bar = $injector->newMarker( 'bar' );

		$markers = $injector->getMarkers();

		$this->assertArrayHasKey( $foo, $markers );
		$this->assertEquals( array( 'foo' ), $markers[$foo] );

		$this->assertArrayHasKey( $bar, $markers );
		$this->assertEquals( array( 'bar' ), $markers[$bar] );
	}

	public function testInject() {
		$injector = new TextInjector();

		$text = 'Good ' . $injector->newMarker( 'morning' )
			. ' to ' . $injector->newMarker( 'you' ) . '!';

		$expected = 'Good morning to you!';

		$actual = $injector->inject( $text, function () {
			$args = func_get_args();
			return implode( ' ', $args );
		} );

		$this->assertEquals( $expected, $actual );
	}

}