263 lines
7.8 KiB
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)}());
|
|
}
|
|
}
|
|
}
|