gnu-social/plugins/Irc/extlib/phergie/Tests/Phergie/ConnectionTest.php

263 lines
7.8 KiB
PHP

<?php
/**
* Phergie
*
* PHP version 5
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.
* It is also available through the world-wide-web at this URL:
* http://phergie.org/license
*
* @category Phergie
* @package Phergie_Tests
* @author Phergie Development Team <team@phergie.org>
* @copyright 2008-2010 Phergie Development Team (http://phergie.org)
* @license http://phergie.org/license New BSD License
* @link http://pear.phergie.org/package/Phergie_Tests
*/
/**
* Unit test suite for Pherge_Connection.
*
* @category Phergie
* @package Phergie_Tests
* @author Phergie Development Team <team@phergie.org>
* @license http://phergie.org/license New BSD License
* @link http://pear.phergie.org/package/Phergie_Tests
*/
class Phergie_ConnectionTest extends PHPUnit_Framework_TestCase
{
/**
* Associative array containing an option-to-value mapping
*
* @var array
*/
private $options = array(
'host' => 'example.com',
'port' => 4080,
'transport' => 'udp',
'encoding' => 'ASCII',
'nick' => 'MyNick',
'username' => 'MyUsername',
'realname' => 'MyRealName',
'password' => 'MyPassword',
);
/**
* Data provider for testGetOptionReturnsDefault().
*
* @return array Enumerated array of enumerated arrays each containing a
* set of parameters for a single call to
* testGetOptionReturnsDefault()
*/
public function dataProviderTestGetOptionReturnsDefault()
{
return array(
array('transport', 'tcp'),
array('encoding', 'ISO-8859-1'),
array('port', 6667),
array('password', null),
);
}
/**
* Tests that a default values are used for some options.
*
* @param string $option Name of the option with a default value
* @param mixed $value Default value of the option
*
* @return void
* @dataProvider dataProviderTestGetOptionReturnsDefault
*/
public function testGetOptionReturnsDefault($option, $value)
{
$connection = new Phergie_Connection;
$this->assertEquals($value, $connection->{'get' . ucfirst($option)}());
}
/**
* Tests that a default encoding is used if one isn't specified.
*
* @return void
*/
public function testGetEncodingReturnsDefault()
{
$connection = new Phergie_Connection;
$this->assertEquals('ISO-8859-1', $connection->getEncoding());
}
/**
* Tests that options can be set via the constructor.
*
* @return void
*/
public function testSetOptionsViaConstructor()
{
$connection = new Phergie_Connection($this->options);
foreach ($this->options as $key => $value) {
$this->assertEquals($value, $connection->{'get' . ucfirst($key)}());
}
}
/**
* Data provider for testGetHostmaskMissingDataGeneratesException().
*
* @return array Enumerated array of enumerated arrays each containing a
* set of parameters for a single call to
* testGetHostmaskMissingDataGeneratesException()
*/
public function dataProviderTestGetHostmaskMissingDataGeneratesException()
{
return array(
array(null, $this->options['username'], $this->options['host']),
array($this->options['nick'], null, $this->options['host']),
array($this->options['nick'], $this->options['username'], null),
);
}
/**
* Tests that attempting to retrieve a hostmask without option values
* for all of its constituents generates an exception.
*
* @param string $nick Bot nick
* @param string $username Bot username
* @param string $host Server hostname
*
* @return void
* @dataProvider dataProviderTestGetHostmaskMissingDataGeneratesException
*/
public function testGetHostmaskMissingDataGeneratesException($nick, $username, $host)
{
$options = array(
'nick' => $nick,
'username' => $username,
'host' => $host,
);
$connection = new Phergie_Connection($options);
try {
$hostmask = $connection->getHostmask();
$this->fail('Expected exception was not thrown');
} catch (Phergie_Connection_Exception $e) {
return;
} catch (Exception $e) {
$this->fail('Unexpected exception was thrown');
}
}
/**
* Tests that attempting to retrieve a hostmask with all required
* options is successful.
*
* @return void
*/
public function testGetHostmaskWithValidData()
{
$options = array(
'nick' => 'MyNick',
'username' => 'MyUsername',
'host' => 'example.com'
);
$connection = new Phergie_Connection($options);
$hostmask = $connection->getHostmask();
$this->assertType('Phergie_Hostmask', $hostmask);
}
/**
* Data provider for testGetRequiredOptionsWithoutValuesSet().
*
* @return array Enumerated array of enumerated arrays each containing a
* set of parameters for a single call to
* testGetRequiredOptionsWithoutValuesSet()
*/
public function dataProviderTestGetRequiredOptionsWithoutValuesSet()
{
return array(
array('host'),
array('nick'),
array('username'),
array('realname'),
);
}
/**
* Tests that attempting to retrieve values of required options when no
* values are set results in an exception.
*
* @param string $option Option name
*
* @return void
* @dataProvider dataProviderTestGetRequiredOptionsWithoutValuesSet
*/
public function testGetRequiredOptionsWithoutValuesSet($option)
{
try {
$connection = new Phergie_Connection;
$value = $connection->{'get' . ucfirst($option)}();
$this->fail('Expected exception was not thrown');
} catch (Phergie_Connection_Exception $e) {
return;
} catch (Exception $e) {
$this->fail('Unexpected exception was thrown');
}
}
/**
* Tests that attempting to set an invalid value for the transport
* results in an exception.
*
* @return void
*/
public function testSetTransportWithInvalidValue()
{
$connection = new Phergie_Connection;
try {
$connection->setTransport('blah');
$this->fail('Expected exception was not thrown');
} catch (Phergie_Connection_Exception $e) {
return;
} catch (Exception $e) {
$this->fail('Unexpected exception was thrown');
}
}
/**
* Tests that attempting to set an invalid value for the encoding
* results in an exception.
*
* @return void
*/
public function testSetEncodingWithInvalidValue()
{
$connection = new Phergie_Connection;
try {
$connection->setEncoding('blah');
$this->fail('Expected exception was not thrown');
} catch (Phergie_Connection_Exception $e) {
return;
} catch (Exception $e) {
$this->fail('Unexpected exception was thrown');
}
}
/**
* Tests that options can be set collectively after the connection is
* instantiated.
*
* @return void
*/
public function testSetOptions()
{
$connection = new Phergie_Connection;
$connection->setOptions($this->options);
foreach ($this->options as $key => $value) {
$this->assertEquals($value, $connection->{'get' . ucfirst($key)}());
}
}
}