Skip to content

Commit 76d6f43

Browse files
committed
100% test coverage for Parser
1 parent d0519e1 commit 76d6f43

2 files changed

Lines changed: 63 additions & 4 deletions

File tree

src/Protocol/Parser.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,6 @@ private function parseMessage($message)
6464
return new Event($value, $parts);
6565
}
6666

67-
if ($key === 'Response' && $value === 'Error') {
68-
69-
}
70-
7167
return new Response($parts);
7268
}
7369
}

tests/Protocol/ParserTest.php

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<?php
2+
3+
use Clue\React\Ami\Protocol\Parser;
4+
5+
class ParserTest extends TestCase
6+
{
7+
public function testParseResponse()
8+
{
9+
$parser = new Parser();
10+
$this->assertEquals(array(), $parser->push("Asterisk Call Manager/1.3\r\n"));
11+
12+
$ret = $parser->push("Response: Success\r\n\r\n");
13+
$this->assertCount(1, $ret);
14+
15+
$first = reset($ret);
16+
/* @var $first Clue\React\Ami\Protocol\Response */
17+
18+
$this->assertInstanceOf('Clue\React\Ami\Protocol\Response', $first);
19+
$this->assertEquals('Success', $first->getPart('Response'));
20+
}
21+
22+
public function testParsingMultipleEvents()
23+
{
24+
$parser = new Parser();
25+
$this->assertEquals(array(), $parser->push("Asterisk Call Manager/1.3\r\n"));
26+
27+
$ret = $parser->push("Event: TestA\r\n\r\nEvent: TestB\r\n\r\n");
28+
$this->assertCount(2, $ret);
29+
30+
$first = reset($ret);
31+
/* @var $first Clue\React\Ami\Protocol\Event */
32+
33+
$this->assertInstanceOf('Clue\React\Ami\Protocol\Event', $first);
34+
$this->assertEquals('TestA', $first->getName());
35+
}
36+
37+
public function testParsingCommandResponse()
38+
{
39+
$parser = new Parser();
40+
$this->assertEquals(array(), $parser->push("Asterisk Call Manager/1.3\r\n"));
41+
42+
$ret = $parser->push("Response: Follows\r\nTesting: yes\nAnother Line\n--END COMMAND--\r\n\r\n");
43+
$this->assertCount(1, $ret);
44+
45+
$first = reset($ret);
46+
/* @var $first Clue\React\Ami\Protocol\Response */
47+
48+
$this->assertInstanceOf('Clue\React\Ami\Protocol\Response', $first);
49+
$this->assertEquals('Follows', $first->getPart('Response'));
50+
$this->assertEquals("Testing: yes\nAnother Line\n--END COMMAND--", $first->getPart('_'));
51+
}
52+
53+
/**
54+
* @expectedException UnexpectedValueException
55+
*/
56+
public function testParsingInvalidResponseFails()
57+
{
58+
$parser = new Parser();
59+
$this->assertEquals(array(), $parser->push("Asterisk Call Manager/1.3\r\n"));
60+
61+
$parser->push("invalid response\r\n\r\n");
62+
}
63+
}

0 commit comments

Comments
 (0)