1--TEST--
2Test readdir() function : usage variations - different file names
3--FILE--
4<?php
5/* Prototype  : string readdir([resource $dir_handle])
6 * Description: Read directory entry from dir_handle
7 * Source code: ext/standard/dir.c
8 */
9
10/*
11 * Pass a directory handle pointing to a directory that contains
12 * files with different file names to test how readdir() reads them
13 */
14
15echo "*** Testing readdir() : usage variations ***\n";
16
17$dir_path = dirname(__FILE__) . "/readdir_variation4/";
18mkdir($dir_path);
19
20// heredoc string
21$heredoc = <<<EOT
22hd_file
23EOT;
24
25$inputs = array(
26
27       // int data
28/*1*/  0,
29       1,
30       12345,
31       -2345,
32
33       // float data
34/*5*/  10.5,
35       -10.5,
36       12.3456789000e10,
37       12.3456789000E-10,
38       .5,
39
40       // empty data
41/*10*/ "",
42       array(),
43
44       // string data
45/*12*/ "double_file",
46       'single_file',
47       $heredoc,
48);
49
50$iterator = 1;
51foreach($inputs as $key => $input) {
52	echo "\n-- Iteration $iterator --\n";
53	$handle = "fp{$iterator}";
54	var_dump( $$handle = fopen($dir_path . $input . '.tmp', 'w') );
55	var_dump( fwrite($$handle, $key));
56	fclose($$handle);
57	$iterator++;
58};
59
60echo "\n-- Call to readdir() --\n";
61$dir_handle = opendir($dir_path);
62while(FALSE !== ($file = readdir($dir_handle))){
63
64	// different OS order files differently so will
65	// store file names into an array so can use sorted in expected output
66	$contents[] = $file;
67
68	// remove files while going through directory
69	@unlink($dir_path . $file);
70}
71
72// more important to check that all contents are present than order they are returned in
73sort($contents);
74var_dump($contents);
75
76closedir($dir_handle);
77?>
78===DONE===
79--CLEAN--
80<?php
81$dir_path = dirname(__FILE__) . "/readdir_variation4/";
82rmdir($dir_path);
83?>
84--EXPECTF--
85*** Testing readdir() : usage variations ***
86
87-- Iteration 1 --
88resource(%d) of type (stream)
89int(1)
90
91-- Iteration 2 --
92resource(%d) of type (stream)
93int(1)
94
95-- Iteration 3 --
96resource(%d) of type (stream)
97int(1)
98
99-- Iteration 4 --
100resource(%d) of type (stream)
101int(1)
102
103-- Iteration 5 --
104resource(%d) of type (stream)
105int(1)
106
107-- Iteration 6 --
108resource(%d) of type (stream)
109int(1)
110
111-- Iteration 7 --
112resource(%d) of type (stream)
113int(1)
114
115-- Iteration 8 --
116resource(%d) of type (stream)
117int(1)
118
119-- Iteration 9 --
120resource(%d) of type (stream)
121int(1)
122
123-- Iteration 10 --
124resource(%d) of type (stream)
125int(1)
126
127-- Iteration 11 --
128resource(%d) of type (stream)
129int(2)
130
131-- Iteration 12 --
132resource(%d) of type (stream)
133int(2)
134
135-- Iteration 13 --
136resource(%d) of type (stream)
137int(2)
138
139-- Iteration 14 --
140resource(%d) of type (stream)
141int(2)
142
143-- Call to readdir() --
144array(16) {
145  [0]=>
146  string(9) "-10.5.tmp"
147  [1]=>
148  string(9) "-2345.tmp"
149  [2]=>
150  string(1) "."
151  [3]=>
152  string(2) ".."
153  [4]=>
154  string(4) ".tmp"
155  [5]=>
156  string(7) "0.5.tmp"
157  [6]=>
158  string(5) "0.tmp"
159  [7]=>
160  string(17) "1.23456789E-9.tmp"
161  [8]=>
162  string(5) "1.tmp"
163  [9]=>
164  string(8) "10.5.tmp"
165  [10]=>
166  string(9) "12345.tmp"
167  [11]=>
168  string(16) "123456789000.tmp"
169  [12]=>
170  string(9) "Array.tmp"
171  [13]=>
172  string(15) "double_file.tmp"
173  [14]=>
174  string(11) "hd_file.tmp"
175  [15]=>
176  string(15) "single_file.tmp"
177}
178===DONE===
179