1--TEST--
2Test md5_file() function with ASCII output and raw binary output
3--FILE--
4<?php
5
6/* Prototype: string md5_file( string filename[, bool raw_output] )
7 * Description: Calculate the MD5 hash of a given file
8 */
9
10/* Creating an empty file */
11if (($handle = fopen( "EmptyFile.txt", "w+")) == FALSE)
12return false;
13
14/* Creating a data file */
15if (($handle2 = fopen( "DataFile.txt", "w+")) == FALSE)
16return false;
17
18/* Writing into file */
19$filename = "DataFile.txt";
20$content = "Add this to the file\n";
21if (is_writable($filename)) {
22  if (fwrite($handle2, $content) === FALSE) {
23    echo "Cannot write to file ($filename)";
24    exit;
25  }
26}
27
28// close the files
29fclose($handle);
30fclose($handle2);
31
32/* Testing error conditions */
33echo "\n*** Testing for error conditions ***\n";
34
35/* No filename */
36var_dump( md5_file("") );
37
38/* invalid filename */
39var_dump( md5_file("aZrq16u") );
40
41/* Scalar value as filename  */
42var_dump( md5_file(12) );
43
44/* NULL as filename */
45var_dump( md5_file(NULL) );
46
47/* Zero arguments */
48 var_dump ( md5_file() );
49
50/* More than valid number of arguments ( valid is 2)  */
51var_dump ( md5_file("EmptyFile.txt", true, NULL) );
52
53/* Hexadecimal Output for Empty file as input */
54echo "\n*** Hexadecimal Output for Empty file as Argument ***\n";
55var_dump( md5_file("EmptyFile.txt") );
56
57/* Raw Binary Output for Empty file as input */
58echo "\n*** Raw Binary Output for Empty file as Argument ***\n";
59var_dump( md5_file("EmptyFile.txt", true) );
60
61/* Normal operation with hexadecimal output */
62echo "\n*** Hexadecimal Output for a valid file with some contents ***\n";
63var_dump( md5_file("DataFile.txt") );
64
65/* Normal operation with raw binary output */
66echo "\n*** Raw Binary Output for a valid file with some contents ***\n";
67var_dump ( md5_file("DataFile.txt", true) );
68
69// remove temp files
70unlink("DataFile.txt");
71unlink("EmptyFile.txt");
72
73echo "\nDone";
74?>
75--EXPECTF--
76*** Testing for error conditions ***
77
78Warning: md5_file(): Filename cannot be empty in %s on line %d
79bool(false)
80
81Warning: md5_file(aZrq16u): failed to open stream: No such file or directory in %s on line %d
82bool(false)
83
84Warning: md5_file(12): failed to open stream: No such file or directory in %s on line %d
85bool(false)
86
87Warning: md5_file(): Filename cannot be empty in %s on line %d
88bool(false)
89
90Warning: md5_file() expects at least 1 parameter, 0 given in %s on line %d
91NULL
92
93Warning: md5_file() expects at most 2 parameters, 3 given in %s on line %d
94NULL
95
96*** Hexadecimal Output for Empty file as Argument ***
97string(32) "d41d8cd98f00b204e9800998ecf8427e"
98
99*** Raw Binary Output for Empty file as Argument ***
100string(16) "��ُ���	���B~"
101
102*** Hexadecimal Output for a valid file with some contents ***
103string(32) "7f28ec647825e2a70bf67778472cd4a2"
104
105*** Raw Binary Output for a valid file with some contents ***
106string(16) "(�dx%��wxG,Ԣ"
107
108Done
109
110