Open Monograph Press  3.3.0
StreamTest.php
1 <?php
2 
3 namespace Guzzle\Tests\Stream;
4 
6 
12 {
17  {
18  $stream = new Stream(true);
19  }
20 
21  public function testConstructor()
22  {
23  $handle = fopen('php://temp', 'r+');
24  fwrite($handle, 'data');
25  $stream = new Stream($handle);
26  $this->assertEquals($handle, $stream->getStream());
27  $this->assertTrue($stream->isReadable());
28  $this->assertTrue($stream->isWritable());
29  $this->assertTrue($stream->isLocal());
30  $this->assertTrue($stream->isSeekable());
31  $this->assertEquals('PHP', $stream->getWrapper());
32  $this->assertEquals('TEMP', $stream->getStreamType());
33  $this->assertEquals(4, $stream->getSize());
34  $this->assertEquals('php://temp', $stream->getUri());
35  $this->assertEquals(array(), $stream->getWrapperData());
36  $this->assertFalse($stream->isConsumed());
37  unset($stream);
38  }
39 
40  public function testCanModifyStream()
41  {
42  $handle1 = fopen('php://temp', 'r+');
43  $handle2 = fopen('php://temp', 'r+');
44  $stream = new Stream($handle1);
45  $this->assertSame($handle1, $stream->getStream());
46  $stream->setStream($handle2, 10);
47  $this->assertEquals(10, $stream->getSize());
48  $this->assertSame($handle2, $stream->getStream());
49  }
50 
52  {
53  $handle = fopen('php://temp', 'r');
54  $stream = new Stream($handle);
55  unset($stream);
56  $this->assertFalse(is_resource($handle));
57  }
58 
59  public function testConvertsToString()
60  {
61  $handle = fopen('php://temp', 'w+');
62  fwrite($handle, 'data');
63  $stream = new Stream($handle);
64  $this->assertEquals('data', (string) $stream);
65  unset($stream);
66 
67  $handle = fopen(__DIR__ . '/../TestData/FileBody.txt', 'r');
68  $stream = new Stream($handle);
69  $this->assertEquals('', (string) $stream);
70  unset($stream);
71  }
72 
74  {
75  $handle = fopen('php://temp', 'w+');
76  $stream = new Stream($handle);
77  $stream->write('foobazbar');
78  $stream->seek(3);
79  $this->assertEquals('foobazbar', (string) $stream);
80  $this->assertEquals(3, $stream->ftell());
81  }
82 
83  public function testIsConsumed()
84  {
85  $handle = fopen('php://temp', 'w+');
86  fwrite($handle, 'data');
87  $stream = new Stream($handle);
88  $this->assertFalse($stream->isConsumed());
89  $stream->read(4);
90  $this->assertTrue($stream->isConsumed());
91  }
92 
93  public function testAllowsSettingManualSize()
94  {
95  $handle = fopen('php://temp', 'w+');
96  fwrite($handle, 'data');
97  $stream = new Stream($handle);
98  $stream->setSize(10);
99  $this->assertEquals(10, $stream->getSize());
100  unset($stream);
101  }
102 
103  public function testWrapsStream()
104  {
105  $handle = fopen('php://temp', 'w+');
106  fwrite($handle, 'data');
107  $stream = new Stream($handle);
108  $this->assertTrue($stream->isSeekable());
109  $this->assertTrue($stream->isReadable());
110  $this->assertTrue($stream->seek(0));
111  $this->assertEquals('da', $stream->read(2));
112  $this->assertEquals('ta', $stream->read(2));
113  $this->assertTrue($stream->seek(0));
114  $this->assertEquals('data', $stream->read(4));
115  $stream->write('_appended');
116  $stream->seek(0);
117  $this->assertEquals('data_appended', $stream->read(13));
118  }
119 
120  public function testGetSize()
121  {
122  $size = filesize(__DIR__ . '/../../../bootstrap.php');
123  $handle = fopen(__DIR__ . '/../../../bootstrap.php', 'r');
124  $stream = new Stream($handle);
125  $this->assertEquals($handle, $stream->getStream());
126  $this->assertEquals($size, $stream->getSize());
127  $this->assertEquals($size, $stream->getSize());
128  unset($stream);
129 
130  // Make sure that false is returned when the size cannot be determined
131  $this->getServer()->enqueue("HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n");
132  $handle = fopen('http://127.0.0.1:' . $this->getServer()->getPort(), 'r');
133  $stream = new Stream($handle);
134  $this->assertEquals(false, $stream->getSize());
135  unset($stream);
136  }
137 
138  public function testEnsuresSizeIsConsistent()
139  {
140  $h = fopen('php://temp', 'r+');
141  fwrite($h, 'foo');
142  $stream = new Stream($h);
143  $this->assertEquals(3, $stream->getSize());
144  $stream->write('test');
145  $this->assertEquals(7, $stream->getSize());
146  fclose($h);
147  }
148 
149  public function testAbstractsMetaData()
150  {
151  $handle = fopen(__DIR__ . '/../../../bootstrap.php', 'r');
152  $stream = new Stream($handle);
153  $this->assertEquals('plainfile', $stream->getMetaData('wrapper_type'));
154  $this->assertEquals(null, $stream->getMetaData('wrapper_data'));
155  $this->assertInternalType('array', $stream->getMetaData());
156  }
157 
159  {
160  $handle = fopen(__DIR__ . '/../../../bootstrap.php', 'r');
161  $stream = new Stream($handle);
162  $this->assertEquals(0, $stream->write('foo'));
163  }
164 
165  public function testProvidesStreamPosition()
166  {
167  $handle = fopen(__DIR__ . '/../../../bootstrap.php', 'r');
168  $stream = new Stream($handle);
169  $stream->read(2);
170  $this->assertSame(ftell($handle), $stream->ftell());
171  $this->assertEquals(2, $stream->ftell());
172  }
173 
174  public function testRewindIsSeekZero()
175  {
176  $stream = new Stream(fopen('php://temp', 'w+'));
177  $stream->write('foobazbar');
178  $this->assertTrue($stream->rewind());
179  $this->assertEquals('foobazbar', $stream->read(9));
180  }
181 
182  public function testCanDetachStream()
183  {
184  $r = fopen('php://temp', 'w+');
185  $stream = new Stream($r);
186  $stream->detachStream();
187  $this->assertNull($stream->getStream());
188  }
189 }
Guzzle\Tests\Stream\StreamTest\testAbstractsMetaData
testAbstractsMetaData()
Definition: StreamTest.php:149
Guzzle\Stream\Stream
Definition: lib/vendor/guzzle/guzzle/src/Guzzle/Stream/Stream.php:10
Guzzle\Tests\Stream\StreamTest\testRewindIsSeekZero
testRewindIsSeekZero()
Definition: StreamTest.php:174
Guzzle\Tests\Stream\StreamTest\testDoesNotAttemptToWriteToReadonlyStream
testDoesNotAttemptToWriteToReadonlyStream()
Definition: StreamTest.php:158
Guzzle\Tests\GuzzleTestCase
Definition: GuzzleTestCase.php:22
Guzzle\Tests\Stream\StreamTest\testStreamClosesHandleOnDestruct
testStreamClosesHandleOnDestruct()
Definition: StreamTest.php:51
Guzzle\Tests\Stream\StreamTest\testConvertsToStringAndRestoresCursorPos
testConvertsToStringAndRestoresCursorPos()
Definition: StreamTest.php:73
Guzzle\Tests\Stream\StreamTest\testIsConsumed
testIsConsumed()
Definition: StreamTest.php:83
Guzzle\Tests\Stream
Definition: PhpStreamRequestFactoryTest.php:3
Guzzle\Tests\Stream\StreamTest\testProvidesStreamPosition
testProvidesStreamPosition()
Definition: StreamTest.php:165
Guzzle\Tests\Stream\StreamTest\testConstructor
testConstructor()
Definition: StreamTest.php:21
Guzzle\Tests\Stream\StreamTest\testConvertsToString
testConvertsToString()
Definition: StreamTest.php:59
Guzzle\Tests\Stream\StreamTest\testWrapsStream
testWrapsStream()
Definition: StreamTest.php:103
Guzzle\Tests\Stream\StreamTest\testCanModifyStream
testCanModifyStream()
Definition: StreamTest.php:40
Guzzle\Tests\Stream\StreamTest\testCanDetachStream
testCanDetachStream()
Definition: StreamTest.php:182
Guzzle\Tests\Stream\StreamTest\testConstructorThrowsExceptionOnInvalidArgument
testConstructorThrowsExceptionOnInvalidArgument()
Definition: StreamTest.php:16
Guzzle\Tests\Stream\StreamTest
Definition: StreamTest.php:11
Guzzle\Tests\Stream\StreamTest\testAllowsSettingManualSize
testAllowsSettingManualSize()
Definition: StreamTest.php:93
Guzzle\Tests\Stream\StreamTest\testEnsuresSizeIsConsistent
testEnsuresSizeIsConsistent()
Definition: StreamTest.php:138
Guzzle\Tests\GuzzleTestCase\getServer
static getServer()
Definition: GuzzleTestCase.php:36
Guzzle\Tests\Stream\StreamTest\testGetSize
testGetSize()
Definition: StreamTest.php:120