Changeset View
Changeset View
Standalone View
Standalone View
src/channel/__tests__/PhutilChannelTestCase.php
- This file was added.
| <?php | |||||
| final class PhutilChannelTestCase extends PhutilTestCase { | |||||
| public function testChannelBasics() { | |||||
| list($x, $y) = PhutilSocketChannel::newChannelPair(); | |||||
| $str_len_8 = 'abcdefgh'; | |||||
| $str_len_4 = 'abcd'; | |||||
| // Do a write with no buffer limit. | |||||
| $x->write($str_len_8); | |||||
| while (true) { | |||||
| $x->update(); | |||||
| $y->update(); | |||||
| $read = $y->read(); | |||||
| if (strlen($read)) { | |||||
| break; | |||||
| } | |||||
| } | |||||
| // We expect to read the entire message. | |||||
| $this->assertEqual($str_len_8, $read); | |||||
| // Again, with a read buffer limit. | |||||
| $y->setReadBufferSize(4); | |||||
| $x->write($str_len_8); | |||||
| while (true) { | |||||
| $x->update(); | |||||
| $y->update(); | |||||
| $read = $y->read(); | |||||
| if (strlen($read)) { | |||||
| break; | |||||
| } | |||||
| } | |||||
| // We expect to see only the first 4 bytes of the message. | |||||
| $this->assertEqual($str_len_4, $read); | |||||
| } | |||||
| } | |||||