public function StreamWrapperTest::testReadWrite in Examples for Developers 8
Same name and namespace in other branches
- 3.x modules/stream_wrapper_example/tests/src/Kernel/StreamWrapperTest.php \Drupal\Tests\stream_wrapper_example\Kernel\StreamWrapperTest::testReadWrite()
Test functions on a URI.
File
- stream_wrapper_example/
tests/ src/ Kernel/ StreamWrapperTest.php, line 58
Class
- StreamWrapperTest
- Test of the Session Stream Wrapper Class.
Namespace
Drupal\Tests\stream_wrapper_example\KernelCode
public function testReadWrite() {
$this
->resetStore();
$uri = 'session://drupal.txt';
$this
->assertFileNotExists($uri, "File {$uri} should not exist yet.");
$handle = fopen($uri, 'wb');
$this
->assertNotEmpty($handle, "Handle for {$uri} should be non-empty.");
$buffer = "Ain't seen nothin' yet!\n";
// Original session class gets an error here,
// "...stream_write wrote 10 bytes more data than requested".
// Does not matter for our demo, so repress error reporting here.".
$old = error_reporting(E_ERROR);
$bytes_written = @fwrite($handle, $buffer);
error_reporting($old);
$this
->assertNotFalse($bytes_written, "Write to {$uri} succeeded.");
$result = fclose($handle);
$this
->assertNotFalse($result, "Closed {$uri}.");
$this
->assertFileExists($uri, "File {$uri} should now exist.");
$this
->assertDirectoryNotExists($uri, "{$uri} is not a directory.");
$this
->assertTrue(is_file($uri), "{$uri} is a file.");
$contents = file_get_contents($uri);
// The example implementation calls HTML::escape() on output. We reverse it
// well enough for our sample data (this code is not I18n safe).
$contents = Html::decodeEntities($contents);
$this
->assertEquals($buffer, $contents, "Data for {$uri} should make the round trip.");
}