123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- <?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)}());
- }
- }
- }
|