userstreams_003.phpt 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. --TEST--
  2. User-space streams: stream_set_option()
  3. --FILE--
  4. <?php
  5. class test_wrapper_base {
  6. public $return_value;
  7. public $expected_option;
  8. public $expected_value;
  9. function stream_open($path, $mode, $openedpath) {
  10. return true;
  11. }
  12. function stream_eof() {
  13. return false;
  14. }
  15. }
  16. class test_wrapper extends test_wrapper_base {
  17. function stream_set_option($option, $value, $ptrparam) {
  18. echo "value:\n";
  19. var_dump($value);
  20. echo "ptrparam:\n";
  21. var_dump($ptrparam);
  22. echo "\$option === $option === " . $this->expected_option . ":\n";
  23. var_dump($option === $this->expected_option);
  24. echo "\$value === $value === " . $this->expected_value. ":\n";
  25. var_dump($value === $this->expected_value);
  26. return $this->return_value;
  27. }
  28. }
  29. function test($name, $fd, $return_value, $func, $args, $expected_option, $expected_value) {
  30. echo "\n------ $name: -------\n";
  31. $data = stream_get_meta_data($fd);
  32. $data['wrapper_data']->return_value = $return_value;
  33. $data['wrapper_data']->expected_option = $expected_option;
  34. $data['wrapper_data']->expected_value = $expected_value;
  35. var_dump(call_user_func_array($func, $args));
  36. }
  37. var_dump(stream_wrapper_register('test', 'test_wrapper'));
  38. var_dump(stream_wrapper_register('test2', 'test_wrapper_base'));
  39. $fd = fopen("test://foo","r");
  40. $fd2 = fopen("test2://foo","r");
  41. test("stream_set_blocking - 1", $fd, true, "stream_set_blocking", array($fd,0), STREAM_OPTION_BLOCKING, 0);
  42. test("stream_set_blocking - 2", $fd, false, "stream_set_blocking", array($fd,1), STREAM_OPTION_BLOCKING, 1);
  43. test("stream_set_blocking - 3", $fd, "foo", "stream_set_blocking", array($fd,0), STREAM_OPTION_BLOCKING, 0);
  44. test("stream_set_blocking - 4", $fd2, true, "stream_set_blocking", array($fd2,1), STREAM_OPTION_BLOCKING, 1);
  45. test("stream_set_write_buffer - 1", $fd, true, "stream_set_write_buffer", array($fd,0), STREAM_OPTION_WRITE_BUFFER, STREAM_BUFFER_NONE);
  46. test("stream_set_write_buffer - 2", $fd, true, "stream_set_write_buffer", array($fd,4096), STREAM_OPTION_WRITE_BUFFER, STREAM_BUFFER_FULL);
  47. test("stream_set_write_buffer - 3", $fd, false, "stream_set_write_buffer", array($fd,8192), STREAM_OPTION_WRITE_BUFFER, STREAM_BUFFER_FULL);
  48. test("stream_set_timeout - 1", $fd, true, "stream_set_timeout", array($fd,10,11), STREAM_OPTION_READ_TIMEOUT, 10);
  49. test("stream_set_timeout - 2", $fd, false, "stream_set_timeout", array($fd,11,12), STREAM_OPTION_READ_TIMEOUT, 11);
  50. ?>
  51. --EXPECTF--
  52. bool(true)
  53. bool(true)
  54. ------ stream_set_blocking - 1: -------
  55. value:
  56. int(0)
  57. ptrparam:
  58. NULL
  59. $option === 1 === 1:
  60. bool(true)
  61. $value === 0 === 0:
  62. bool(true)
  63. bool(true)
  64. ------ stream_set_blocking - 2: -------
  65. value:
  66. int(1)
  67. ptrparam:
  68. NULL
  69. $option === 1 === 1:
  70. bool(true)
  71. $value === 1 === 1:
  72. bool(true)
  73. bool(false)
  74. ------ stream_set_blocking - 3: -------
  75. value:
  76. int(0)
  77. ptrparam:
  78. NULL
  79. $option === 1 === 1:
  80. bool(true)
  81. $value === 0 === 0:
  82. bool(true)
  83. bool(true)
  84. ------ stream_set_blocking - 4: -------
  85. Warning: stream_set_blocking(): test_wrapper_base::stream_set_option is not implemented! in %s
  86. bool(false)
  87. ------ stream_set_write_buffer - 1: -------
  88. value:
  89. int(0)
  90. ptrparam:
  91. int(%d)
  92. $option === 3 === 3:
  93. bool(true)
  94. $value === 0 === 0:
  95. bool(true)
  96. int(0)
  97. ------ stream_set_write_buffer - 2: -------
  98. value:
  99. int(2)
  100. ptrparam:
  101. int(4096)
  102. $option === 3 === 3:
  103. bool(true)
  104. $value === 2 === 2:
  105. bool(true)
  106. int(0)
  107. ------ stream_set_write_buffer - 3: -------
  108. value:
  109. int(2)
  110. ptrparam:
  111. int(8192)
  112. $option === 3 === 3:
  113. bool(true)
  114. $value === 2 === 2:
  115. bool(true)
  116. int(-1)
  117. ------ stream_set_timeout - 1: -------
  118. value:
  119. int(10)
  120. ptrparam:
  121. int(11)
  122. $option === 4 === 4:
  123. bool(true)
  124. $value === 10 === 10:
  125. bool(true)
  126. bool(true)
  127. ------ stream_set_timeout - 2: -------
  128. value:
  129. int(11)
  130. ptrparam:
  131. int(12)
  132. $option === 4 === 4:
  133. bool(true)
  134. $value === 11 === 11:
  135. bool(true)
  136. bool(false)