| Current File : /home/jvzmxxx/wiki/extensions/Wikibase/lib/tests/phpunit/SettingsArrayTest.php |
<?php
namespace Wikibase\Lib\Test;
use OutOfBoundsException;
use Wikibase\SettingsArray;
/**
* @covers Wikibase\SettingsArray
*
* @group Wikibase
* @group WikibaseLib
* @group SettingsArrayTest
*
* @license GPL-2.0+
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
*/
class SettingsArrayTest extends \PHPUnit_Framework_TestCase {
/**
* @dataProvider settingProvider
*/
public function testGetKnownSetting( array $settings ) {
$settingsArray = new SettingsArray( $settings );
foreach ( $settingsArray as $settingName => $settingValue ) {
$this->assertEquals( $settingValue, $settingsArray->getSetting( $settingName ) );
}
$this->assertSameSize( $settings, $settingsArray );
}
public function settingProvider() {
$argLists = array();
$argLists[] = array( array() );
$argLists[] = array( array(
'foo' => 'bar'
) );
$argLists[] = array( array(
'foo' => 'bar',
'baz' => 'bah',
) );
$argLists[] = array( array(
'foo' => 'bar',
'baz' => 'bah',
'blah' => 'bah',
'nyan' => 1337,
'onoez' => array( 1, 2, 3 ),
'spam' => false,
'hax' => null,
) );
return $argLists;
}
/**
* @dataProvider settingProvider
*/
public function testGetUnknownSetting( array $settings ) {
$settingsArray = new SettingsArray( $settings );
$this->setExpectedException( OutOfBoundsException::class );
$settingsArray->getSetting( 'NyanData ALL the way across the sky' );
}
/**
* @dataProvider settingProvider
*/
public function testHasSetting( array $settings ) {
$settings = new SettingsArray( $settings );
foreach ( array_keys( iterator_to_array( $settings ) ) as $settingName ) {
$this->assertTrue( $settings->hasSetting( $settingName ) );
}
$this->assertFalse( $settings->hasSetting( 'I dont think therefore I dont exist' ) );
}
/**
* @dataProvider settingProvider
*/
public function testSetSetting( array $settings ) {
$settings = new SettingsArray( $settings );
foreach ( $settings as $settingName => $settingValue ) {
$settings->setSetting( $settingName, $settingValue );
$this->assertEquals( $settingValue, $settings->getSetting( $settingName ) );
}
foreach ( $settings as $settingName => $settingValue ) {
$settings->setSetting( $settingName, $settingValue );
$this->assertEquals( $settingValue, $settings->getSetting( $settingName ) );
}
if ( $settings->count() === 0 ) {
$this->assertTrue( true );
}
}
}