| 
									
										
										
										
											2016-09-30 09:30:08 +00:00
										 |  |  | <?php | 
					
						
							|  |  |  | declare(strict_types = 1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace LanguageServer\Tests; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | use PHPUnit\Framework\TestCase; | 
					
						
							|  |  |  | use LanguageServer\ProtocolStreamWriter; | 
					
						
							|  |  |  | use LanguageServer\Protocol\Message; | 
					
						
							|  |  |  | use AdvancedJsonRpc\{Request as RequestBody}; | 
					
						
							| 
									
										
										
										
											2016-10-25 21:50:36 +00:00
										 |  |  | use Sabre\Event\Loop; | 
					
						
							| 
									
										
										
										
											2016-09-30 09:30:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | class ProtocolStreamWriterTest extends TestCase | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     public function testLargeMessageIsSent() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $tmpfile = tempnam('', ''); | 
					
						
							|  |  |  |         $writeHandle = fopen($tmpfile, 'w'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         stream_set_blocking($writeHandle, false); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $writer = new ProtocolStreamWriter($writeHandle); | 
					
						
							|  |  |  |         $msg = new Message(new RequestBody(1, 'aMethod', ['arg' => str_repeat('X', 100000)])); | 
					
						
							|  |  |  |         $msgString = (string)$msg; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-25 21:50:36 +00:00
										 |  |  |         $promise = $writer->write($msg); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-31 09:23:37 +00:00
										 |  |  |         Loop\tick(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $promise->wait(); | 
					
						
							| 
									
										
										
										
											2016-09-30 09:30:08 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |         fclose($writeHandle); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->assertEquals(strlen($msgString), filesize($tmpfile)); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |