Annotation of embedaddon/php/ext/standard/tests/file/fopencookie.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: fopencookie detected and working (or cast mechanism works)
! 3: --FILE--
! 4: <?php
! 5: # vim600:syn=php:
! 6:
! 7: /* This test verifies that the casting mechanism is working correctly.
! 8: * On systems with fopencookie, a FILE* is created around the user
! 9: * stream and that is passed back to the ZE to include.
! 10: * On systems without fopencookie, the stream is fed into a temporary
! 11: * file, and that temporary file is passed back to the ZE.
! 12: * The important thing here is really fopencookie; the glibc people
! 13: * changed the binary interface, so if haven't detected it correctly,
! 14: * you can expect this test to segfault.
! 15: *
! 16: * FIXME: the test really needs something to fseek(3) on the FILE*
! 17: * used internally for this test to be really effective.
! 18: */
! 19:
! 20: class userstream {
! 21: public $position = 0;
! 22: public $data = "If you can read this, it worked";
! 23:
! 24: function stream_open($path, $mode, $options, &$opened_path)
! 25: {
! 26: return true;
! 27: }
! 28:
! 29: function stream_read($count)
! 30: {
! 31: $ret = substr($this->data, $this->position, $count);
! 32: $this->position += strlen($ret);
! 33: return $ret;
! 34: }
! 35:
! 36: function stream_tell()
! 37: {
! 38: return $this->position;
! 39: }
! 40:
! 41: function stream_eof()
! 42: {
! 43: return $this->position >= strlen($this->data);
! 44: }
! 45:
! 46: function stream_seek($offset, $whence)
! 47: {
! 48: switch($whence) {
! 49: case SEEK_SET:
! 50: if ($offset < strlen($this->data) && $offset >= 0) {
! 51: $this->position = $offset;
! 52: return true;
! 53: } else {
! 54: return false;
! 55: }
! 56: break;
! 57: case SEEK_CUR:
! 58: if ($offset >= 0) {
! 59: $this->position += $offset;
! 60: return true;
! 61: } else {
! 62: return false;
! 63: }
! 64: break;
! 65: case SEEK_END:
! 66: if (strlen($this->data) + $offset >= 0) {
! 67: $this->position = strlen($this->data) + $offset;
! 68: return true;
! 69: } else {
! 70: return false;
! 71: }
! 72: break;
! 73: default:
! 74: return false;
! 75: }
! 76: }
! 77: function stream_stat() {
! 78: return array('size' => strlen($this->data));
! 79: }
! 80: }
! 81:
! 82: stream_wrapper_register("cookietest", "userstream");
! 83:
! 84: include("cookietest://foo");
! 85:
! 86: ?>
! 87: --EXPECT--
! 88: If you can read this, it worked
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>