*/ /** Test the domframework Server-Sent Events part */ class sseTest extends PHPUnit_Framework_TestCase { public function test_loop_NOTDEFINED () { $this->expectException ("Exception"); $sse = new sse (); $res = $sse->loop (); } public function test_loop_JUSTPING () { $this->expectOutputString(str_repeat (": ping\n\n", 5)); $sse = new sse (); @unlink ("/tmp/dfwTestSSE1"); $sse->setBackendFiles ("/tmp/dfwTestSSE1") ->setPingTime(1); $sse->loop (); } public function test_loop_SKIP_START () { $this->expectOutputString(str_repeat (": ping\n\n", 5)); $sse = new sse (); @unlink ("/tmp/dfwTestSSE1"); file_put_contents ("/tmp/dfwTestSSE1", "NOT SEEN"); $sse->setBackendFiles ("/tmp/dfwTestSSE1") ->setPingTime(1); $sse->loop (); } public function test_loop_DATA () { $this->expectOutputString(str_repeat (": ping\n\n", 4). "data: WILL BE SEEN\n\n: ping\n\n"); @unlink ("/tmp/dfwTestSSE1"); $sse = new sse (); pcntl_signal(SIGALRM, function () { file_put_contents ("/tmp/dfwTestSSE1", "WILL BE SEEN\n"); }, false); pcntl_alarm(3); $sse->setBackendFiles ("/tmp/dfwTestSSE1") ->setPingTime(1); $sse->loop (); } public function test_loop_EVENTS () { $this->expectOutputString(str_repeat (": ping\n\n", 4). "event: event1\ndata: WILL BE SEEN 1\n\n". "event: event2\ndata: WILL BE SEEN 2\n\n". ": ping\n\n"); @unlink ("/tmp/dfwTestSSE1"); @unlink ("/tmp/dfwTestSSE2"); $sse = new sse (); pcntl_signal(SIGALRM, function () { file_put_contents ("/tmp/dfwTestSSE1", "WILL BE SEEN 1\n"); file_put_contents ("/tmp/dfwTestSSE2", "WILL BE SEEN 2\n"); }, false); pcntl_alarm(3); $sse->setBackendFiles (["event1" => "/tmp/dfwTestSSE1", "event2" => "/tmp/dfwTestSSE2"]) ->setPingTime(1); $sse->loop (); } public function test_loop_Handler () { $this->expectOutputString(str_repeat (": ping\n\n", 4). "event: event1\ndata: will be seen 1\n\n". "event: event2\ndata: WILL BE SEEN 2\n\n". ": ping\n\n"); @unlink ("/tmp/dfwTestSSE1"); @unlink ("/tmp/dfwTestSSE2"); $sse = new sse (); pcntl_signal(SIGALRM, function () { file_put_contents ("/tmp/dfwTestSSE1", "will be seen 1\n"); file_put_contents ("/tmp/dfwTestSSE2", "WILL BE SEEN 2\n"); }, false); pcntl_alarm(3); function lower ($val) { return strtolower ($val); } $sse->setBackendFiles (["event1" => "/tmp/dfwTestSSE1", "event2" => "/tmp/dfwTestSSE2"]) ->setHandlers (["event1" => "lower"]) ->setPingTime(1); $sse->loop (); } }