From 5b99af0f82b661596f3ae406ab1d97fbfab203f4 Mon Sep 17 00:00:00 2001 From: Chris Boden Date: Mon, 24 Oct 2011 14:05:54 -0400 Subject: [PATCH] Unit Testing --- lib/Ratchet/Logging/MonologAdapter.php | 12 ++++++ .../Ratchet/Tests/Logging/NullLoggerTest.php | 30 ++++++++++++++ tests/Ratchet/Tests/Mock/ArrayLogger.php | 19 +++++++++ tests/Ratchet/Tests/ServerTest.php | 39 ++++++++++++++++++- 4 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 tests/Ratchet/Tests/Logging/NullLoggerTest.php create mode 100644 tests/Ratchet/Tests/Mock/ArrayLogger.php diff --git a/lib/Ratchet/Logging/MonologAdapter.php b/lib/Ratchet/Logging/MonologAdapter.php index 7c5dcf9..d38ecf0 100644 --- a/lib/Ratchet/Logging/MonologAdapter.php +++ b/lib/Ratchet/Logging/MonologAdapter.php @@ -3,14 +3,26 @@ namespace Ratchet\Logging; use Monolog\Logger; class MonologAdapter extends Logger implements LoggerInterface { + /** + * Maps to Monolog\Logger::addInfo + * @param string + */ function note($msg) { $this->addInfo($msg); } + /** + * Maps to Monolog\Logger::addWarning + * @param string + */ function warning($msg) { $this->addWarning($msg); } + /** + * Maps to Monolog\Logger::addError + * @param string + */ function error($msg) { $this->addError($msg); } diff --git a/tests/Ratchet/Tests/Logging/NullLoggerTest.php b/tests/Ratchet/Tests/Logging/NullLoggerTest.php new file mode 100644 index 0000000..c46d2d4 --- /dev/null +++ b/tests/Ratchet/Tests/Logging/NullLoggerTest.php @@ -0,0 +1,30 @@ +_log = new NullLogger; + } + + public function testInterface() { + $this->assertInstanceOf('\\Ratchet\\Logging\\LoggerInterface', $this->_log); + } + + public function testNoteDoesNothing() { + $this->assertNull($this->_log->note('hi')); + } + + public function testWarningDoesNothing() { + $this->assertNull($this->_log->warning('hi')); + } + + public function testErrorDoesNothing() { + $this->assertNull($this->_log->error('hi')); + } +} \ No newline at end of file diff --git a/tests/Ratchet/Tests/Mock/ArrayLogger.php b/tests/Ratchet/Tests/Mock/ArrayLogger.php new file mode 100644 index 0000000..5b047a5 --- /dev/null +++ b/tests/Ratchet/Tests/Mock/ArrayLogger.php @@ -0,0 +1,19 @@ +last_msg = $msg; + } + + public function warning($msg) { + $this->last_msg = $msg; + } + + public function error($msg) { + $this->last_msg = $msg; + } +} \ No newline at end of file diff --git a/tests/Ratchet/Tests/ServerTest.php b/tests/Ratchet/Tests/ServerTest.php index c57d112..8ece70a 100644 --- a/tests/Ratchet/Tests/ServerTest.php +++ b/tests/Ratchet/Tests/ServerTest.php @@ -3,15 +3,26 @@ namespace Ratchet\Tests; use Ratchet\Server; use Ratchet\Tests\Mock\FakeSocket as Socket; use Ratchet\Tests\Mock\Application as TestApp; +use Ratchet\Tests\Mock\ArrayLogger; /** * @covers Ratchet\Server */ class ServerTest extends \PHPUnit_Framework_TestCase { + protected $_catalyst; protected $_server; public function setUp() { - $this->_server = new Server(new Socket()); + $this->_catalyst = new Socket; + $this->_server = new Server($this->_catalyst); + } + + protected function getPrivateProperty($class, $name) { + $reflectedClass = new \ReflectionClass($class); + $property = $reflectedClass->getProperty($name); + $property->setAccessible(true); + + return $property->getValue($class); } public function testServerHasServerInterface() { @@ -19,6 +30,32 @@ class ServerTest extends \PHPUnit_Framework_TestCase { $this->assertThat($this->_server, $constraint); } + public function testNullLoggerIsSetInConstruct() { + $this->assertInstanceOf('\\Ratchet\\Logging\\LoggerInterface', $this->getPrivateProperty($this->_server, '_log')); + } + + public function testPassedLoggerIsSetInConstruct() { + $logger = new ArrayLogger; + $server = new Server(new Socket(), $logger); + + $this->assertSame($logger, $this->getPrivateProperty($server, '_log')); + } + + public function testLoggerIsSetInMethod() { + $logger = new ArrayLogger; + $this->_server->setLogger($logger); + + $this->assertSame($logger, $this->getPrivateProperty($this->_server, '_log')); + } + + public function testGetMasterReturnsCatalyst() { + $this->assertSame($this->_catalyst, $this->_server->getMaster()); + } + + public function testIteration() { + $this->assertInstanceOf('\\Iterator', $this->_server->getIterator()); + } + public function testServerCanNotRunWithoutApplication() { $this->setExpectedException('\\RuntimeException'); $this->_server->run();