Browse Source

- new tests for ctype functions

experimental/first_unicode_implementation
Josie Messa 19 years ago
parent
commit
149fe30489
  1. 33
      ext/ctype/tests/ctype_alnum_basic.phpt
  2. 49
      ext/ctype/tests/ctype_alnum_error.phpt
  3. 183
      ext/ctype/tests/ctype_alnum_variation1.phpt
  4. 163
      ext/ctype/tests/ctype_alnum_variation2.phpt
  5. 133
      ext/ctype/tests/ctype_alnum_variation3.phpt
  6. 68
      ext/ctype/tests/ctype_alnum_variation4.phpt
  7. 33
      ext/ctype/tests/ctype_alpha_basic.phpt
  8. 45
      ext/ctype/tests/ctype_alpha_error.phpt
  9. 183
      ext/ctype/tests/ctype_alpha_variation1.phpt
  10. 153
      ext/ctype/tests/ctype_alpha_variation2.phpt
  11. 134
      ext/ctype/tests/ctype_alpha_variation3.phpt
  12. 68
      ext/ctype/tests/ctype_alpha_variation4.phpt
  13. 33
      ext/ctype/tests/ctype_cntrl_basic.phpt
  14. 45
      ext/ctype/tests/ctype_cntrl_error.phpt
  15. 184
      ext/ctype/tests/ctype_cntrl_variation1.phpt
  16. 102
      ext/ctype/tests/ctype_cntrl_variation2.phpt
  17. 162
      ext/ctype/tests/ctype_cntrl_variation3.phpt
  18. 67
      ext/ctype/tests/ctype_cntrl_variation4.phpt
  19. 33
      ext/ctype/tests/ctype_digit_basic.phpt
  20. 45
      ext/ctype/tests/ctype_digit_error.phpt
  21. 183
      ext/ctype/tests/ctype_digit_variation1.phpt
  22. 46
      ext/ctype/tests/ctype_digit_variation2.phpt
  23. 164
      ext/ctype/tests/ctype_digit_variation3.phpt
  24. 68
      ext/ctype/tests/ctype_digit_variation4.phpt
  25. 33
      ext/ctype/tests/ctype_graph_basic.phpt
  26. 45
      ext/ctype/tests/ctype_graph_error.phpt
  27. 183
      ext/ctype/tests/ctype_graph_variation1.phpt
  28. 224
      ext/ctype/tests/ctype_graph_variation2.phpt
  29. 152
      ext/ctype/tests/ctype_graph_variation3.phpt
  30. 68
      ext/ctype/tests/ctype_graph_variation4.phpt
  31. 33
      ext/ctype/tests/ctype_lower_basic.phpt
  32. 45
      ext/ctype/tests/ctype_lower_error.phpt
  33. 183
      ext/ctype/tests/ctype_lower_variation1.phpt
  34. 97
      ext/ctype/tests/ctype_lower_variation2.phpt
  35. 144
      ext/ctype/tests/ctype_lower_variation3.phpt
  36. 68
      ext/ctype/tests/ctype_lower_variation4.phpt
  37. 33
      ext/ctype/tests/ctype_print_basic.phpt
  38. 45
      ext/ctype/tests/ctype_print_error.phpt
  39. 183
      ext/ctype/tests/ctype_print_variation1.phpt
  40. 226
      ext/ctype/tests/ctype_print_variation2.phpt
  41. 132
      ext/ctype/tests/ctype_print_variation3.phpt
  42. 67
      ext/ctype/tests/ctype_print_variation4.phpt
  43. 34
      ext/ctype/tests/ctype_punct_basic.phpt
  44. 50
      ext/ctype/tests/ctype_punct_error.phpt
  45. 184
      ext/ctype/tests/ctype_punct_variation1.phpt
  46. 65
      ext/ctype/tests/ctype_punct_variation2.phpt
  47. 144
      ext/ctype/tests/ctype_punct_variation3.phpt
  48. 69
      ext/ctype/tests/ctype_punct_variation4.phpt
  49. 33
      ext/ctype/tests/ctype_space_basic.phpt
  50. 49
      ext/ctype/tests/ctype_space_error.phpt
  51. 183
      ext/ctype/tests/ctype_space_variation1.phpt
  52. 47
      ext/ctype/tests/ctype_space_variation2.phpt
  53. 144
      ext/ctype/tests/ctype_space_variation3.phpt
  54. 75
      ext/ctype/tests/ctype_space_variation4.phpt
  55. 33
      ext/ctype/tests/ctype_upper_basic.phpt
  56. 45
      ext/ctype/tests/ctype_upper_error.phpt
  57. 183
      ext/ctype/tests/ctype_upper_variation1.phpt
  58. 91
      ext/ctype/tests/ctype_upper_variation2.phpt
  59. 143
      ext/ctype/tests/ctype_upper_variation3.phpt
  60. 67
      ext/ctype/tests/ctype_upper_variation4.phpt
  61. 32
      ext/ctype/tests/ctype_xdigit_basic.phpt
  62. 45
      ext/ctype/tests/ctype_xdigit_error.phpt
  63. 183
      ext/ctype/tests/ctype_xdigit_variation1.phpt
  64. 58
      ext/ctype/tests/ctype_xdigit_variation2.phpt
  65. 144
      ext/ctype/tests/ctype_xdigit_variation3.phpt
  66. 87
      ext/ctype/tests/ctype_xdigit_variation4.phpt

33
ext/ctype/tests/ctype_alnum_basic.phpt

@ -0,0 +1,33 @@
--TEST--
Test ctype_alnum() function : basic functionality
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_alnum(mixed $c)
* Description: Checks for alphanumeric character(s)
* Source code: ext/ctype/ctype.c
*/
echo "*** Testing ctype_alnum() : basic functionality ***\n";
$orig = setlocale(LC_CTYPE, "C");
$c1 = 'abcXYZ';
$c2 = ' \t*@';
var_dump(ctype_alnum($c1));
var_dump(ctype_alnum($c2));
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_alnum() : basic functionality ***
bool(true)
bool(false)
===DONE===

49
ext/ctype/tests/ctype_alnum_error.phpt

@ -0,0 +1,49 @@
--TEST--
Test ctype_alnum() function : error conditions - Incorrect number of args
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_alnum(mixed $c)
* Description: Checks for alphanumeric character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass incorrect number of arguments to ctype_alnum() to test behaviour
*/
echo "*** Testing ctype_alnum() : error conditions ***\n";
$orig = setlocale(LC_CTYPE, "C");
// Zero arguments
echo "\n-- Testing ctype_alnum() function with Zero arguments --\n";
var_dump( ctype_alnum() );
//Test ctype_alnum with one more than the expected number of arguments
echo "\n-- Testing ctype_alnum() function with more than expected no. of arguments --\n";
$c = 1;
$extra_arg = 10;
var_dump( ctype_alnum($c, $extra_arg) );
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_alnum() : error conditions ***
-- Testing ctype_alnum() function with Zero arguments --
Warning: ctype_alnum() expects exactly 1 parameter, 0 given in %s on line %d
NULL
-- Testing ctype_alnum() function with more than expected no. of arguments --
Warning: ctype_alnum() expects exactly 1 parameter, 2 given in %s on line %d
NULL
===DONE===

183
ext/ctype/tests/ctype_alnum_variation1.phpt

@ -0,0 +1,183 @@
--TEST--
Test ctype_alnum() function : usage variations - Different data types as $c arg
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_alnum(mixed $c)
* Description: Checks for alphanumeric character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different data types as $c argument to ctype_alnum() to test behaviour
*/
echo "*** Testing ctype_alnum() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
//get an unset variable
$unset_var = 10;
unset ($unset_var);
// get a class
class classA
{
public function __toString() {
return "xyz";
}
}
// heredoc string
$heredoc = <<<EOT
123
EOT;
// get a resource variable
$fp = fopen(__FILE__, "r");
// unexpected values to be passed to $c argument
$inputs = array(
// int data
/*1*/ 0,
1,
12345,
-2345,
// float data
/*5*/ 10.5,
-10.5,
12.3456789000e10,
12.3456789000E-10,
.5,
// null data
/*10*/ NULL,
null,
// boolean data
/*12*/ true,
false,
TRUE,
FALSE,
// empty data
/*16*/ "",
'',
array(),
// string data
/*19*/ "pqr",
'LMN',
$heredoc,
// object data
/*22*/ new classA(),
// undefined data
/*23*/ @$undefined_var,
// unset data
/*24*/ @$unset_var,
// resource variable
/*25*/ $fp
);
// loop through each element of $inputs to check the behavior of ctype_alnum()
$iterator = 1;
foreach($inputs as $input) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_alnum($input) );
$iterator++;
};
fclose($fp);
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_alnum() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(false)
-- Iteration 6 --
bool(false)
-- Iteration 7 --
bool(false)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(false)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(false)
-- Iteration 16 --
bool(false)
-- Iteration 17 --
bool(false)
-- Iteration 18 --
bool(false)
-- Iteration 19 --
bool(true)
-- Iteration 20 --
bool(true)
-- Iteration 21 --
bool(true)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
-- Iteration 24 --
bool(false)
-- Iteration 25 --
bool(false)
===DONE===

163
ext/ctype/tests/ctype_alnum_variation2.phpt

@ -0,0 +1,163 @@
--TEST--
Test ctype_alnum() function : usage variations - different integers
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_alnum(mixed $c)
* Description: Checks for alphanumeric character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different integers to ctype_alnum() to test which character codes are considered
* valid alphanumeric characters
*/
echo "*** Testing ctype_alnum() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
for ($i = 0; $i < 256; $i++) {
if (ctype_alnum($i)) {
echo "character code $i is alpha numeric\n";
}
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_alnum() : usage variations ***
character code 48 is alpha numeric
character code 49 is alpha numeric
character code 50 is alpha numeric
character code 51 is alpha numeric
character code 52 is alpha numeric
character code 53 is alpha numeric
character code 54 is alpha numeric
character code 55 is alpha numeric
character code 56 is alpha numeric
character code 57 is alpha numeric
character code 65 is alpha numeric
character code 66 is alpha numeric
character code 67 is alpha numeric
character code 68 is alpha numeric
character code 69 is alpha numeric
character code 70 is alpha numeric
character code 71 is alpha numeric
character code 72 is alpha numeric
character code 73 is alpha numeric
character code 74 is alpha numeric
character code 75 is alpha numeric
character code 76 is alpha numeric
character code 77 is alpha numeric
character code 78 is alpha numeric
character code 79 is alpha numeric
character code 80 is alpha numeric
character code 81 is alpha numeric
character code 82 is alpha numeric
character code 83 is alpha numeric
character code 84 is alpha numeric
character code 85 is alpha numeric
character code 86 is alpha numeric
character code 87 is alpha numeric
character code 88 is alpha numeric
character code 89 is alpha numeric
character code 90 is alpha numeric
character code 97 is alpha numeric
character code 98 is alpha numeric
character code 99 is alpha numeric
character code 100 is alpha numeric
character code 101 is alpha numeric
character code 102 is alpha numeric
character code 103 is alpha numeric
character code 104 is alpha numeric
character code 105 is alpha numeric
character code 106 is alpha numeric
character code 107 is alpha numeric
character code 108 is alpha numeric
character code 109 is alpha numeric
character code 110 is alpha numeric
character code 111 is alpha numeric
character code 112 is alpha numeric
character code 113 is alpha numeric
character code 114 is alpha numeric
character code 115 is alpha numeric
character code 116 is alpha numeric
character code 117 is alpha numeric
character code 118 is alpha numeric
character code 119 is alpha numeric
character code 120 is alpha numeric
character code 121 is alpha numeric
character code 122 is alpha numeric
character code 170 is alpha numeric
character code 181 is alpha numeric
character code 186 is alpha numeric
character code 192 is alpha numeric
character code 193 is alpha numeric
character code 194 is alpha numeric
character code 195 is alpha numeric
character code 196 is alpha numeric
character code 197 is alpha numeric
character code 198 is alpha numeric
character code 199 is alpha numeric
character code 200 is alpha numeric
character code 201 is alpha numeric
character code 202 is alpha numeric
character code 203 is alpha numeric
character code 204 is alpha numeric
character code 205 is alpha numeric
character code 206 is alpha numeric
character code 207 is alpha numeric
character code 208 is alpha numeric
character code 209 is alpha numeric
character code 210 is alpha numeric
character code 211 is alpha numeric
character code 212 is alpha numeric
character code 213 is alpha numeric
character code 214 is alpha numeric
character code 216 is alpha numeric
character code 217 is alpha numeric
character code 218 is alpha numeric
character code 219 is alpha numeric
character code 220 is alpha numeric
character code 221 is alpha numeric
character code 222 is alpha numeric
character code 223 is alpha numeric
character code 224 is alpha numeric
character code 225 is alpha numeric
character code 226 is alpha numeric
character code 227 is alpha numeric
character code 228 is alpha numeric
character code 229 is alpha numeric
character code 230 is alpha numeric
character code 231 is alpha numeric
character code 232 is alpha numeric
character code 233 is alpha numeric
character code 234 is alpha numeric
character code 235 is alpha numeric
character code 236 is alpha numeric
character code 237 is alpha numeric
character code 238 is alpha numeric
character code 239 is alpha numeric
character code 240 is alpha numeric
character code 241 is alpha numeric
character code 242 is alpha numeric
character code 243 is alpha numeric
character code 244 is alpha numeric
character code 245 is alpha numeric
character code 246 is alpha numeric
character code 248 is alpha numeric
character code 249 is alpha numeric
character code 250 is alpha numeric
character code 251 is alpha numeric
character code 252 is alpha numeric
character code 253 is alpha numeric
character code 254 is alpha numeric
character code 255 is alpha numeric
===DONE===

133
ext/ctype/tests/ctype_alnum_variation3.phpt

@ -0,0 +1,133 @@
--TEST--
Test ctype_alnum() function : usage variations - different string values
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_alnum(mixed $c)
* Description: Checks for alphanumeric character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different strings to ctype_alnum to test behaviour
*/
echo "*** Testing ctype_alnum() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$values = array(
/*1*/ "This string contains just letters and spaces", // Simple string
"but this one contains some numbers too 123+456 = 678", // Mixed string
"",
" ",
/*5*/ "a",
"ABCXYZ",
"abcxyz",
"ABCXYZ123DEF456",
"abczyz123DEF456",
/*10*/ "\r\n",
"123",
"03F", // hexadecimal 'digits'
")speci@! ch@r$(",
'@!$*',
/*15*/ 'ABC',
'abc',
'ABC123',
'abc123',
'abc123\n',
/*20*/ 'abc 123',
'',
' ',
/*23*/ base64_decode("w4DDoMOHw6fDiMOo") // non-ascii characters
);
// loop through each element of $values to test behaviour of ctype_alnum()
$iterator = 1;
foreach($values as $value) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_alnum($value) );
$iterator++;
};
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_alnum() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(true)
-- Iteration 6 --
bool(true)
-- Iteration 7 --
bool(true)
-- Iteration 8 --
bool(true)
-- Iteration 9 --
bool(true)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(true)
-- Iteration 12 --
bool(true)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(true)
-- Iteration 16 --
bool(true)
-- Iteration 17 --
bool(true)
-- Iteration 18 --
bool(true)
-- Iteration 19 --
bool(false)
-- Iteration 20 --
bool(false)
-- Iteration 21 --
bool(false)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
===DONE===

68
ext/ctype/tests/ctype_alnum_variation4.phpt

@ -0,0 +1,68 @@
--TEST--
Test ctype_alnum() function : usage variations - octal and hexadecimal values
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_alnum(mixed $c)
* Description: Checks for alphanumeric character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass octal and hexadecimal values to ctype_alnum() to test behaviour
*/
echo "*** Testing ctype_alnum() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$octal_values = array (060, 061, 062, 063);
$hex_values = array(0x30, 0x31, 0x32, 0x33);
echo "\n-- Octal Values --\n";
$iterator = 1;
foreach($octal_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_alnum($c));
$iterator++;
}
echo "\n-- Hexadecimal Values --\n";
$iterator = 1;
foreach($hex_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_alnum($c));
$iterator++;
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_alnum() : usage variations ***
-- Octal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
-- Hexadecimal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
===DONE===

33
ext/ctype/tests/ctype_alpha_basic.phpt

@ -0,0 +1,33 @@
--TEST--
Test ctype_alpha() function : basic functionality
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_alpha(mixed $c)
* Description: Checks for alphabetic character(s)
* Source code: ext/ctype/ctype.c
*/
echo "*** Testing ctype_alpha() : basic functionality ***\n";
$orig = setlocale(LC_CTYPE, "C");
$c1 = 'abcXYZ';
$c2 = "Hello, World!";
var_dump(ctype_alpha($c1));
var_dump(ctype_alpha($c2));
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_alpha() : basic functionality ***
bool(true)
bool(false)
===DONE===

45
ext/ctype/tests/ctype_alpha_error.phpt

@ -0,0 +1,45 @@
--TEST--
Test ctype_alpha() function : error conditions - Incorrect number of arguments
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_alpha(mixed $c)
* Description: Checks for alphabetic character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass an incorrect number of arguments to ctype_alpha() to test behaviour
*/
echo "*** Testing ctype_alpha() : error conditions ***\n";
// Zero arguments
echo "\n-- Testing ctype_alpha() function with Zero arguments --\n";
var_dump( ctype_alpha() );
//Test ctype_alpha with one more than the expected number of arguments
echo "\n-- Testing ctype_alpha() function with more than expected no. of arguments --\n";
$c = 1;
$extra_arg = 10;
var_dump( ctype_alpha($c, $extra_arg) );
?>
===DONE===
--EXPECTF--
*** Testing ctype_alpha() : error conditions ***
-- Testing ctype_alpha() function with Zero arguments --
Warning: ctype_alpha() expects exactly 1 parameter, 0 given in %s on line %d
NULL
-- Testing ctype_alpha() function with more than expected no. of arguments --
Warning: ctype_alpha() expects exactly 1 parameter, 2 given in %s on line %d
NULL
===DONE===

183
ext/ctype/tests/ctype_alpha_variation1.phpt

@ -0,0 +1,183 @@
--TEST--
Test ctype_alpha() function : usage variations - different data types as $c arg
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_alpha(mixed $c)
* Description: Checks for alphabetic character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different data types as $c argument to ctype_alpha() to test behaviour
*/
echo "*** Testing ctype_alpha() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
//get an unset variable
$unset_var = 10;
unset ($unset_var);
// get a class
class classA
{
public function __toString() {
return "abcdef";
}
}
// heredoc string
$heredoc = <<<EOT
XYZ
EOT;
// get a resource variable
$fp = fopen(__FILE__, "r");
// unexpected values to be passed to $c argument
$inputs = array(
// int data
/*1*/ 0,
1,
12345,
-2345,
// float data
/*5*/ 10.5,
-10.5,
12.3456789000e10,
12.3456789000E-10,
.5,
// null data
/*10*/ NULL,
null,
// boolean data
/*12*/ true,
false,
TRUE,
FALSE,
// empty data
/*16*/ "",
'',
array(),
// string data
/*19*/ "string",
'string',
$heredoc,
// object data
/*22*/ new classA(),
// undefined data
/*23*/ @$undefined_var,
// unset data
/*24*/ @$unset_var,
// resource variable
/*25*/ $fp
);
// loop through each element of $inputs to check the behavior of ctype_alpha()
$iterator = 1;
foreach($inputs as $input) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_alpha($input) );
$iterator++;
};
fclose($fp);
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_alpha() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(false)
-- Iteration 6 --
bool(false)
-- Iteration 7 --
bool(false)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(false)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(false)
-- Iteration 16 --
bool(false)
-- Iteration 17 --
bool(false)
-- Iteration 18 --
bool(false)
-- Iteration 19 --
bool(true)
-- Iteration 20 --
bool(true)
-- Iteration 21 --
bool(true)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
-- Iteration 24 --
bool(false)
-- Iteration 25 --
bool(false)
===DONE===

153
ext/ctype/tests/ctype_alpha_variation2.phpt

@ -0,0 +1,153 @@
--TEST--
Test ctype_alpha() function : usage variations - different integers
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_alpha(mixed $c)
* Description: Checks for alphabetic character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different integers to ctype_alpha() to test which character codes are considered
* valid alphabetic characters
*/
echo "*** Testing ctype_alpha() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
for ($i = 0; $i < 256; $i++) {
if (ctype_alpha($i)) {
echo "character code $i is alphabetic\n";
}
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_alpha() : usage variations ***
character code 65 is alphabetic
character code 66 is alphabetic
character code 67 is alphabetic
character code 68 is alphabetic
character code 69 is alphabetic
character code 70 is alphabetic
character code 71 is alphabetic
character code 72 is alphabetic
character code 73 is alphabetic
character code 74 is alphabetic
character code 75 is alphabetic
character code 76 is alphabetic
character code 77 is alphabetic
character code 78 is alphabetic
character code 79 is alphabetic
character code 80 is alphabetic
character code 81 is alphabetic
character code 82 is alphabetic
character code 83 is alphabetic
character code 84 is alphabetic
character code 85 is alphabetic
character code 86 is alphabetic
character code 87 is alphabetic
character code 88 is alphabetic
character code 89 is alphabetic
character code 90 is alphabetic
character code 97 is alphabetic
character code 98 is alphabetic
character code 99 is alphabetic
character code 100 is alphabetic
character code 101 is alphabetic
character code 102 is alphabetic
character code 103 is alphabetic
character code 104 is alphabetic
character code 105 is alphabetic
character code 106 is alphabetic
character code 107 is alphabetic
character code 108 is alphabetic
character code 109 is alphabetic
character code 110 is alphabetic
character code 111 is alphabetic
character code 112 is alphabetic
character code 113 is alphabetic
character code 114 is alphabetic
character code 115 is alphabetic
character code 116 is alphabetic
character code 117 is alphabetic
character code 118 is alphabetic
character code 119 is alphabetic
character code 120 is alphabetic
character code 121 is alphabetic
character code 122 is alphabetic
character code 170 is alphabetic
character code 181 is alphabetic
character code 186 is alphabetic
character code 192 is alphabetic
character code 193 is alphabetic
character code 194 is alphabetic
character code 195 is alphabetic
character code 196 is alphabetic
character code 197 is alphabetic
character code 198 is alphabetic
character code 199 is alphabetic
character code 200 is alphabetic
character code 201 is alphabetic
character code 202 is alphabetic
character code 203 is alphabetic
character code 204 is alphabetic
character code 205 is alphabetic
character code 206 is alphabetic
character code 207 is alphabetic
character code 208 is alphabetic
character code 209 is alphabetic
character code 210 is alphabetic
character code 211 is alphabetic
character code 212 is alphabetic
character code 213 is alphabetic
character code 214 is alphabetic
character code 216 is alphabetic
character code 217 is alphabetic
character code 218 is alphabetic
character code 219 is alphabetic
character code 220 is alphabetic
character code 221 is alphabetic
character code 222 is alphabetic
character code 223 is alphabetic
character code 224 is alphabetic
character code 225 is alphabetic
character code 226 is alphabetic
character code 227 is alphabetic
character code 228 is alphabetic
character code 229 is alphabetic
character code 230 is alphabetic
character code 231 is alphabetic
character code 232 is alphabetic
character code 233 is alphabetic
character code 234 is alphabetic
character code 235 is alphabetic
character code 236 is alphabetic
character code 237 is alphabetic
character code 238 is alphabetic
character code 239 is alphabetic
character code 240 is alphabetic
character code 241 is alphabetic
character code 242 is alphabetic
character code 243 is alphabetic
character code 244 is alphabetic
character code 245 is alphabetic
character code 246 is alphabetic
character code 248 is alphabetic
character code 249 is alphabetic
character code 250 is alphabetic
character code 251 is alphabetic
character code 252 is alphabetic
character code 253 is alphabetic
character code 254 is alphabetic
character code 255 is alphabetic
===DONE===

134
ext/ctype/tests/ctype_alpha_variation3.phpt

@ -0,0 +1,134 @@
--TEST--
Test ctype_alpha() function : usage variations - different strings
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_alpha(mixed $c)
* Description: Checks for alphabetic character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass strings containing different character types to ctype_alpha() to test
* which are considered valid alphabetic character only strings
*/
echo "*** Testing ctype_alpha() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$values = array(
/*1*/ "This string contains just letters and spaces", // Simple string
"but this one contains some numbers too 123+456 = 678", // Mixed string
"",
" ",
/*5*/ "a",
"ABCXYZ",
"abcxyz",
"ABCXYZ123DEF456",
"abczyz123DEF456",
/*10*/ "\r\n",
"123",
"03F", // hexadecimal 'digits'
")speci@! ch@r$(",
'@!$*',
/*15*/ 'ABC',
'abc',
'ABC123',
'abc123',
'abc123\n',
/*20*/ 'abc 123',
'',
' ',
/*23*/ base64_decode("w4DDoMOHw6fDiMOo") // non-ascii characters
);
// loop through each element of $values to test behaviour of ctype_alnum()
$iterator = 1;
foreach($values as $value) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_alpha($value) );
$iterator++;
};
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_alpha() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(true)
-- Iteration 6 --
bool(true)
-- Iteration 7 --
bool(true)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(false)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(true)
-- Iteration 16 --
bool(true)
-- Iteration 17 --
bool(false)
-- Iteration 18 --
bool(false)
-- Iteration 19 --
bool(false)
-- Iteration 20 --
bool(false)
-- Iteration 21 --
bool(false)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
===DONE===

68
ext/ctype/tests/ctype_alpha_variation4.phpt

@ -0,0 +1,68 @@
--TEST--
Test ctype_alpha() function : usage variations - Octal and hexadecimal values
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_alpha(mixed $c)
* Description: Checks for alphabetic character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass octal and hexadecimal values to ctype_alpha() to test behaviour
*/
echo "*** Testing ctype_alpha() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$octal_values = array (0101, 0102, 0103, 0104);
$hex_values = array (0x41, 0x42, 0x43, 0x44);
echo "\n-- Octal Values --\n";
$iterator = 1;
foreach($octal_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_alpha($c));
$iterator++;
}
echo "\n-- Hexadecimal Values --\n";
$iterator = 1;
foreach($hex_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_alpha($c));
$iterator++;
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_alpha() : usage variations ***
-- Octal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
-- Hexadecimal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
===DONE===

33
ext/ctype/tests/ctype_cntrl_basic.phpt

@ -0,0 +1,33 @@
--TEST--
Test ctype_cntrl() function : basic functionality
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_cntrl(mixed $c)
* Description: Checks for control character(s)
* Source code: ext/ctype/ctype.c
*/
echo "*** Testing ctype_cntrl() : basic functionality ***\n";
$orig = setlocale(LC_CTYPE, "C");
$c1 = "\r\n\t";
$c2 = "Hello, World!\n";
var_dump(ctype_cntrl($c1));
var_dump(ctype_cntrl($c2));
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_cntrl() : basic functionality ***
bool(true)
bool(false)
===DONE===

45
ext/ctype/tests/ctype_cntrl_error.phpt

@ -0,0 +1,45 @@
--TEST--
Test ctype_cntrl() function : error conditions - Incorrect number of args
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_cntrl(mixed $c)
* Description: Checks for control character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass an incorrect number of arguments to ctype_cntrl() to test behaviour
*/
echo "*** Testing ctype_cntrl() : error conditions ***\n";
// Zero arguments
echo "\n-- Testing ctype_cntrl() function with Zero arguments --\n";
var_dump( ctype_cntrl() );
//Test ctype_cntrl with one more than the expected number of arguments
echo "\n-- Testing ctype_cntrl() function with more than expected no. of arguments --\n";
$c = 1;
$extra_arg = 10;
var_dump( ctype_cntrl($c, $extra_arg) );
?>
===DONE===
--EXPECTF--
*** Testing ctype_cntrl() : error conditions ***
-- Testing ctype_cntrl() function with Zero arguments --
Warning: ctype_cntrl() expects exactly 1 parameter, 0 given in %s on line %d
NULL
-- Testing ctype_cntrl() function with more than expected no. of arguments --
Warning: ctype_cntrl() expects exactly 1 parameter, 2 given in %s on line %d
NULL
===DONE===

184
ext/ctype/tests/ctype_cntrl_variation1.phpt

@ -0,0 +1,184 @@
--TEST--
Test ctype_cntrl() function : usage variations - Different data types as $c arg
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_cntrl(mixed $c)
* Description: Checks for control character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different data types as $c argument to ctype_cntrl() to test behaviour
*/
echo "*** Testing ctype_cntrl() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
//get an unset variable
$unset_var = 10;
unset ($unset_var);
// get a class
class classA
{
public function __toString() {
return "\n\r\t";
}
}
// heredoc string
$heredoc = <<<EOT
\t\r\n
EOT;
// get a resource variable
$fp = fopen(__FILE__, "r");
// unexpected values to be passed to $c argument
$inputs = array(
// int data
/*1*/ 0,
1,
12345,
-2345,
// float data
/*5*/ 10.5,
-10.5,
12.3456789000e10,
12.3456789000E-10,
.5,
// null data
/*10*/ NULL,
null,
// boolean data
/*12*/ true,
false,
TRUE,
FALSE,
// empty data
/*16*/ "",
'',
array(),
// string data
/*19*/ "\t\r\n",
'
',
$heredoc,
// object data
/*22*/ new classA(),
// undefined data
/*23*/ @$undefined_var,
// unset data
/*24*/ @$unset_var,
// resource variable
/*25*/ $fp
);
// loop through each element of $inputs to check the behavior of ctype_cntrl()
$iterator = 1;
foreach($inputs as $input) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_cntrl($input) );
$iterator++;
};
fclose($fp);
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_cntrl() : usage variations ***
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(false)
-- Iteration 6 --
bool(false)
-- Iteration 7 --
bool(false)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(false)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(false)
-- Iteration 16 --
bool(false)
-- Iteration 17 --
bool(false)
-- Iteration 18 --
bool(false)
-- Iteration 19 --
bool(true)
-- Iteration 20 --
bool(true)
-- Iteration 21 --
bool(true)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
-- Iteration 24 --
bool(false)
-- Iteration 25 --
bool(false)
===DONE===

102
ext/ctype/tests/ctype_cntrl_variation2.phpt

@ -0,0 +1,102 @@
--TEST--
Test ctype_cntrl() function : usage variations - different integers
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_cntrl(mixed $c)
* Description: Checks for control character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different integers to ctype_cntrl() to test which character codes are considered
* valid control characters
*/
echo "*** Testing ctype_cntrl() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
for ($i = 0; $i < 256; $i++) {
if (ctype_cntrl($i)) {
echo "character code $i is control character\n";
}
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_cntrl() : usage variations ***
character code 0 is control character
character code 1 is control character
character code 2 is control character
character code 3 is control character
character code 4 is control character
character code 5 is control character
character code 6 is control character
character code 7 is control character
character code 8 is control character
character code 9 is control character
character code 10 is control character
character code 11 is control character
character code 12 is control character
character code 13 is control character
character code 14 is control character
character code 15 is control character
character code 16 is control character
character code 17 is control character
character code 18 is control character
character code 19 is control character
character code 20 is control character
character code 21 is control character
character code 22 is control character
character code 23 is control character
character code 24 is control character
character code 25 is control character
character code 26 is control character
character code 27 is control character
character code 28 is control character
character code 29 is control character
character code 30 is control character
character code 31 is control character
character code 127 is control character
character code 128 is control character
character code 129 is control character
character code 130 is control character
character code 131 is control character
character code 132 is control character
character code 133 is control character
character code 134 is control character
character code 135 is control character
character code 136 is control character
character code 137 is control character
character code 138 is control character
character code 139 is control character
character code 140 is control character
character code 141 is control character
character code 142 is control character
character code 143 is control character
character code 144 is control character
character code 145 is control character
character code 146 is control character
character code 147 is control character
character code 148 is control character
character code 149 is control character
character code 150 is control character
character code 151 is control character
character code 152 is control character
character code 153 is control character
character code 154 is control character
character code 155 is control character
character code 156 is control character
character code 157 is control character
character code 158 is control character
character code 159 is control character
character code 173 is control character
===DONE===

162
ext/ctype/tests/ctype_cntrl_variation3.phpt

@ -0,0 +1,162 @@
--TEST--
Test ctype_cntrl() function : usage variations - Different strings
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_cntrl(mixed $c)
* Description: Checks for control character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass strings containing different character types to ctype_cntrl() to test
* which are considered valid control character only strings
*/
echo "*** Testing ctype_cntrl() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$values = array(
/*1*/ "This string contains just letters and spaces", // Simple string
"but this one contains some numbers too 123+456 = 678", // Mixed string
"",
" ",
/*5*/ "a",
"ABCXYZ",
"abcxyz",
"ABCXYZ123DEF456",
"abczyz123DEF456",
/*10*/ "\r\n",
"123",
"03F", // hexadecimal 'digits'
")speci@! ch@r$(",
'@!$*',
/*15*/ 'ABC',
'abc',
'ABC123',
'abc123',
'abc123\n',
/*20*/ 'abc 123',
'',
' ',
base64_decode("w4DDoMOHw6fDiMOo"), // non-ascii characters
"\n",
/*25*/ "\r",
"\t",
"0xD",
"0xA",
"0xE",
/*30*/ "\t\r\n",
);
// loop through each element of $values to test behaviour of ctype_cntrl()
$iterator = 1;
foreach($values as $value) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_cntrl($value) );
$iterator++;
};
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_cntrl() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(false)
-- Iteration 6 --
bool(false)
-- Iteration 7 --
bool(false)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(true)
-- Iteration 11 --
bool(false)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(false)
-- Iteration 16 --
bool(false)
-- Iteration 17 --
bool(false)
-- Iteration 18 --
bool(false)
-- Iteration 19 --
bool(false)
-- Iteration 20 --
bool(false)
-- Iteration 21 --
bool(false)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
-- Iteration 24 --
bool(true)
-- Iteration 25 --
bool(true)
-- Iteration 26 --
bool(true)
-- Iteration 27 --
bool(false)
-- Iteration 28 --
bool(false)
-- Iteration 29 --
bool(false)
-- Iteration 30 --
bool(true)
===DONE===

67
ext/ctype/tests/ctype_cntrl_variation4.phpt

@ -0,0 +1,67 @@
--TEST--
Test ctype_cntrl() function : usage variations - Octal and hexadecimal values
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_cntrl(mixed $c)
* Description: Checks for control character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass hexadecimal and octal values to ctype_cntrl() to test behaviour
*/
echo "*** Testing ctype_cntrl() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$octal_values = array(01, 02, 03, 04);
$hex_values = array(0x1, 0x2, 0x3, 0x4);
echo "\n-- Octal Values --\n";
$iterator = 1;
foreach($octal_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_cntrl($c));
$iterator++;
}
echo "\n-- Hexadecimal Values --\n";
$iterator = 1;
foreach($hex_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_cntrl($c));
$iterator++;
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_cntrl() : usage variations ***
-- Octal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
-- Hexadecimal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
===DONE===

33
ext/ctype/tests/ctype_digit_basic.phpt

@ -0,0 +1,33 @@
--TEST--
Test ctype_digit() function : basic functionality
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_digit(mixed $c)
* Description: Checks for numeric character(s)
* Source code: ext/ctype/ctype.c
*/
echo "*** Testing ctype_digit() : basic functionality ***\n";
$orig = setlocale(LC_CTYPE, "C");
$c1 = '1234';
$c2 = 'abc123';
var_dump(ctype_digit($c1));
var_dump(ctype_digit($c2));
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_digit() : basic functionality ***
bool(true)
bool(false)
===DONE===

45
ext/ctype/tests/ctype_digit_error.phpt

@ -0,0 +1,45 @@
--TEST--
Test ctype_digit() function : error conditions - incorrect number of arguments
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_digit(mixed $c)
* Description: Checks for numeric character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass an incorrect number of arguments to ctype_digit() to test behaviour
*/
echo "*** Testing ctype_digit() : error conditions ***\n";
// Zero arguments
echo "\n-- Testing ctype_digit() function with Zero arguments --\n";
var_dump( ctype_digit() );
//Test ctype_digit with one more than the expected number of arguments
echo "\n-- Testing ctype_digit() function with more than expected no. of arguments --\n";
$c = 1;
$extra_arg = 10;
var_dump( ctype_digit($c, $extra_arg) );
?>
===DONE===
--EXPECTF--
*** Testing ctype_digit() : error conditions ***
-- Testing ctype_digit() function with Zero arguments --
Warning: ctype_digit() expects exactly 1 parameter, 0 given in %s on line %d
NULL
-- Testing ctype_digit() function with more than expected no. of arguments --
Warning: ctype_digit() expects exactly 1 parameter, 2 given in %s on line %d
NULL
===DONE===

183
ext/ctype/tests/ctype_digit_variation1.phpt

@ -0,0 +1,183 @@
--TEST--
Test ctype_digit() function : usage variations - different data types as $c arg
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_digit(mixed $c)
* Description: Checks for numeric character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different data types as $c argument to ctype_digit() to test behaviour
*/
echo "*** Testing ctype_digit() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
//get an unset variable
$unset_var = 10;
unset ($unset_var);
// get a class
class classA
{
public function __toString() {
return "123456";
}
}
// heredoc string
$heredoc = <<<EOT
1
EOT;
// get a resource variable
$fp = fopen(__FILE__, "r");
// unexpected values to be passed to $c argument
$inputs = array(
// int data
/*1*/ 0,
1,
12345,
-2345,
// float data
/*5*/ 10.5,
-10.5,
12.3456789000e10,
12.3456789000E-10,
.5,
// null data
/*10*/ NULL,
null,
// boolean data
/*12*/ true,
false,
TRUE,
FALSE,
// empty data
/*16*/ "",
'',
array(),
// string data
/*19*/ "2",
'309',
$heredoc,
// object data
/*22*/ new classA(),
// undefined data
/*23*/ @$undefined_var,
// unset data
/*24*/ @$unset_var,
// resource variable
/*25*/ $fp
);
// loop through each element of $inputs to check the behavior of ctype_digit()
$iterator = 1;
foreach($inputs as $input) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_digit($input) );
$iterator++;
};
fclose($fp);
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_digit() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(false)
-- Iteration 6 --
bool(false)
-- Iteration 7 --
bool(false)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(false)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(false)
-- Iteration 16 --
bool(false)
-- Iteration 17 --
bool(false)
-- Iteration 18 --
bool(false)
-- Iteration 19 --
bool(true)
-- Iteration 20 --
bool(true)
-- Iteration 21 --
bool(true)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
-- Iteration 24 --
bool(false)
-- Iteration 25 --
bool(false)
===DONE===

46
ext/ctype/tests/ctype_digit_variation2.phpt

@ -0,0 +1,46 @@
--TEST--
Test ctype_digit() function : usage variations - different integers
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_digit(mixed $c)
* Description: Checks for numeric character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different integers to ctype_digit() to test which character codes are considered
* valid decimal digits
*/
echo "*** Testing ctype_digit() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
for ($i = 0; $i < 256; $i++) {
if (ctype_digit($i)) {
echo "character code $i is a numeric digit\n";
}
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_digit() : usage variations ***
character code 48 is a numeric digit
character code 49 is a numeric digit
character code 50 is a numeric digit
character code 51 is a numeric digit
character code 52 is a numeric digit
character code 53 is a numeric digit
character code 54 is a numeric digit
character code 55 is a numeric digit
character code 56 is a numeric digit
character code 57 is a numeric digit
===DONE===

164
ext/ctype/tests/ctype_digit_variation3.phpt

@ -0,0 +1,164 @@
--TEST--
Test ctype_digit() function : usage variations - different strings
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_digit(mixed $c)
* Description: Checks for numeric character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass strings containing different character types to ctype_digit() to test
* which are considered valid decimal digit only strings
*/
echo "*** Testing ctype_digit() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$values = array(
/*1*/ "This string contains just letters and spaces", // Simple string
"but this one contains some numbers too 123+456 = 678", // Mixed string
"",
" ",
/*5*/ "a",
"ABCXYZ",
"abcxyz",
"ABCXYZ123DEF456",
"abczyz123DEF456",
/*10*/ "\r\n",
"123",
")speci@! ch@r$(",
'@!$*',
"0",
/*15*/ "3",
"9",
"1234",
"7890",
"0677",
/*20*/ '0',
'3',
'9',
'1234',
'7890',
/*25*/ "123abc",
"abc123",
"123\r\t",
"123 ",
" 123",
/*30*/ "123E4",
/*31*/ "0x3F",
);
$iterator = 1;
foreach($values as $value) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_digit($value) );
$iterator++;
};
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_digit() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(false)
-- Iteration 6 --
bool(false)
-- Iteration 7 --
bool(false)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(true)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(true)
-- Iteration 15 --
bool(true)
-- Iteration 16 --
bool(true)
-- Iteration 17 --
bool(true)
-- Iteration 18 --
bool(true)
-- Iteration 19 --
bool(true)
-- Iteration 20 --
bool(true)
-- Iteration 21 --
bool(true)
-- Iteration 22 --
bool(true)
-- Iteration 23 --
bool(true)
-- Iteration 24 --
bool(true)
-- Iteration 25 --
bool(false)
-- Iteration 26 --
bool(false)
-- Iteration 27 --
bool(false)
-- Iteration 28 --
bool(false)
-- Iteration 29 --
bool(false)
-- Iteration 30 --
bool(false)
-- Iteration 31 --
bool(false)
===DONE===

68
ext/ctype/tests/ctype_digit_variation4.phpt

@ -0,0 +1,68 @@
--TEST--
Test ctype_digit() function : usage variations - octal and hexadecimal values
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_digit(mixed $c)
* Description: Checks for numeric character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass octal and hexadecimal values as $c argument to ctype_digit() to test behaviour
*/
echo "*** Testing ctype_digit() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$octal_values = array(061, 062, 063, 064);
$hex_values = array (0x31, 0x32, 0x33, 0x34);
echo "\n-- Octal Values --\n";
$iterator = 1;
foreach($octal_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_digit($c));
$iterator++;
}
echo "\n-- Hexadecimal Values --\n";
$iterator = 1;
foreach($hex_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_digit($c));
$iterator++;
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_digit() : usage variations ***
-- Octal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
-- Hexadecimal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
===DONE===

33
ext/ctype/tests/ctype_graph_basic.phpt

@ -0,0 +1,33 @@
--TEST--
Test ctype_graph() function : basic functionality
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_graph(mixed $c)
* Description: Checks for any printable character(s) except space
* Source code: ext/ctype/ctype.c
*/
echo "*** Testing ctype_graph() : basic functionality ***\n";
$orig = setlocale(LC_CTYPE, "C");
$c1 = 'helloWorld!';
$c2 = "Hello, world!\n";
var_dump(ctype_graph($c1));
var_dump(ctype_graph($c2));
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_graph() : basic functionality ***
bool(true)
bool(false)
===DONE===

45
ext/ctype/tests/ctype_graph_error.phpt

@ -0,0 +1,45 @@
--TEST--
Test ctype_graph() function : error conditions - incorrect number of arguments
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_graph(mixed $c)
* Description: Checks for any printable character(s) except space
* Source code: ext/ctype/ctype.c
*/
/*
* Pass an incorrect number of arguments to ctype_graph() to test behaviour
*/
echo "*** Testing ctype_graph() : error conditions ***\n";
// Zero arguments
echo "\n-- Testing ctype_graph() function with Zero arguments --\n";
var_dump( ctype_graph() );
//Test ctype_graph with one more than the expected number of arguments
echo "\n-- Testing ctype_graph() function with more than expected no. of arguments --\n";
$c = 1;
$extra_arg = 10;
var_dump( ctype_graph($c, $extra_arg) );
?>
===DONE===
--EXPECTF--
*** Testing ctype_graph() : error conditions ***
-- Testing ctype_graph() function with Zero arguments --
Warning: ctype_graph() expects exactly 1 parameter, 0 given in %s on line %d
NULL
-- Testing ctype_graph() function with more than expected no. of arguments --
Warning: ctype_graph() expects exactly 1 parameter, 2 given in %s on line %d
NULL
===DONE===

183
ext/ctype/tests/ctype_graph_variation1.phpt

@ -0,0 +1,183 @@
--TEST--
Test ctype_graph() function : usage variations - different data types as $c arg
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_graph(mixed $c)
* Description: Checks for any printable character(s) except space
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different data types as $c argument to ctype_graph() to test behaviour
*/
echo "*** Testing ctype_graph() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
//get an unset variable
$unset_var = 10;
unset ($unset_var);
// get a class
class classA
{
public function __toString() {
return "myClass";
}
}
// heredoc string
$heredoc = <<<EOT
hiWorld!
EOT;
// get a resource variable
$fp = fopen(__FILE__, "r");
// unexpected values to be passed to $c argument
$inputs = array(
// int data
/*1*/ 0,
1,
12345,
-2345,
// float data
/*5*/ 10.5,
-10.5,
12.3456789000e10,
12.3456789000E-10,
.5,
// null data
/*10*/ NULL,
null,
// boolean data
/*12*/ true,
false,
TRUE,
FALSE,
// empty data
/*16*/ "",
'',
array(),
// string data
/*19*/ "string",
'string',
$heredoc,
// object data
/*22*/ new classA(),
// undefined data
/*23*/ @$undefined_var,
// unset data
/*24*/ @$unset_var,
// resource variable
/*25*/ $fp
);
// loop through each element of $inputs to check the behavior of ctype_graph()
$iterator = 1;
foreach($inputs as $input) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_graph($input) );
$iterator++;
};
fclose($fp);
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_graph() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(false)
-- Iteration 6 --
bool(false)
-- Iteration 7 --
bool(false)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(false)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(false)
-- Iteration 16 --
bool(false)
-- Iteration 17 --
bool(false)
-- Iteration 18 --
bool(false)
-- Iteration 19 --
bool(true)
-- Iteration 20 --
bool(true)
-- Iteration 21 --
bool(true)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
-- Iteration 24 --
bool(false)
-- Iteration 25 --
bool(false)
===DONE===

224
ext/ctype/tests/ctype_graph_variation2.phpt

@ -0,0 +1,224 @@
--TEST--
Test ctype_graph() function : usage variations - different integers
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_graph(mixed $c)
* Description: Checks for any printable character(s) except space
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different integers to ctype_graph() to test which character codes are considered
* valid visibly printable characters
*/
echo "*** Testing ctype_graph() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
for ($i = 0; $i < 256; $i++) {
if (ctype_graph($i)) {
echo "character code $i is a printable character\n";
}
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_graph() : usage variations ***
character code 33 is a printable character
character code 34 is a printable character
character code 35 is a printable character
character code 36 is a printable character
character code 37 is a printable character
character code 38 is a printable character
character code 39 is a printable character
character code 40 is a printable character
character code 41 is a printable character
character code 42 is a printable character
character code 43 is a printable character
character code 44 is a printable character
character code 45 is a printable character
character code 46 is a printable character
character code 47 is a printable character
character code 48 is a printable character
character code 49 is a printable character
character code 50 is a printable character
character code 51 is a printable character
character code 52 is a printable character
character code 53 is a printable character
character code 54 is a printable character
character code 55 is a printable character
character code 56 is a printable character
character code 57 is a printable character
character code 58 is a printable character
character code 59 is a printable character
character code 60 is a printable character
character code 61 is a printable character
character code 62 is a printable character
character code 63 is a printable character
character code 64 is a printable character
character code 65 is a printable character
character code 66 is a printable character
character code 67 is a printable character
character code 68 is a printable character
character code 69 is a printable character
character code 70 is a printable character
character code 71 is a printable character
character code 72 is a printable character
character code 73 is a printable character
character code 74 is a printable character
character code 75 is a printable character
character code 76 is a printable character
character code 77 is a printable character
character code 78 is a printable character
character code 79 is a printable character
character code 80 is a printable character
character code 81 is a printable character
character code 82 is a printable character
character code 83 is a printable character
character code 84 is a printable character
character code 85 is a printable character
character code 86 is a printable character
character code 87 is a printable character
character code 88 is a printable character
character code 89 is a printable character
character code 90 is a printable character
character code 91 is a printable character
character code 92 is a printable character
character code 93 is a printable character
character code 94 is a printable character
character code 95 is a printable character
character code 96 is a printable character
character code 97 is a printable character
character code 98 is a printable character
character code 99 is a printable character
character code 100 is a printable character
character code 101 is a printable character
character code 102 is a printable character
character code 103 is a printable character
character code 104 is a printable character
character code 105 is a printable character
character code 106 is a printable character
character code 107 is a printable character
character code 108 is a printable character
character code 109 is a printable character
character code 110 is a printable character
character code 111 is a printable character
character code 112 is a printable character
character code 113 is a printable character
character code 114 is a printable character
character code 115 is a printable character
character code 116 is a printable character
character code 117 is a printable character
character code 118 is a printable character
character code 119 is a printable character
character code 120 is a printable character
character code 121 is a printable character
character code 122 is a printable character
character code 123 is a printable character
character code 124 is a printable character
character code 125 is a printable character
character code 126 is a printable character
character code 161 is a printable character
character code 162 is a printable character
character code 163 is a printable character
character code 164 is a printable character
character code 165 is a printable character
character code 166 is a printable character
character code 167 is a printable character
character code 168 is a printable character
character code 169 is a printable character
character code 170 is a printable character
character code 171 is a printable character
character code 172 is a printable character
character code 174 is a printable character
character code 175 is a printable character
character code 176 is a printable character
character code 177 is a printable character
character code 178 is a printable character
character code 179 is a printable character
character code 180 is a printable character
character code 181 is a printable character
character code 182 is a printable character
character code 183 is a printable character
character code 184 is a printable character
character code 185 is a printable character
character code 186 is a printable character
character code 187 is a printable character
character code 188 is a printable character
character code 189 is a printable character
character code 190 is a printable character
character code 191 is a printable character
character code 192 is a printable character
character code 193 is a printable character
character code 194 is a printable character
character code 195 is a printable character
character code 196 is a printable character
character code 197 is a printable character
character code 198 is a printable character
character code 199 is a printable character
character code 200 is a printable character
character code 201 is a printable character
character code 202 is a printable character
character code 203 is a printable character
character code 204 is a printable character
character code 205 is a printable character
character code 206 is a printable character
character code 207 is a printable character
character code 208 is a printable character
character code 209 is a printable character
character code 210 is a printable character
character code 211 is a printable character
character code 212 is a printable character
character code 213 is a printable character
character code 214 is a printable character
character code 215 is a printable character
character code 216 is a printable character
character code 217 is a printable character
character code 218 is a printable character
character code 219 is a printable character
character code 220 is a printable character
character code 221 is a printable character
character code 222 is a printable character
character code 223 is a printable character
character code 224 is a printable character
character code 225 is a printable character
character code 226 is a printable character
character code 227 is a printable character
character code 228 is a printable character
character code 229 is a printable character
character code 230 is a printable character
character code 231 is a printable character
character code 232 is a printable character
character code 233 is a printable character
character code 234 is a printable character
character code 235 is a printable character
character code 236 is a printable character
character code 237 is a printable character
character code 238 is a printable character
character code 239 is a printable character
character code 240 is a printable character
character code 241 is a printable character
character code 242 is a printable character
character code 243 is a printable character
character code 244 is a printable character
character code 245 is a printable character
character code 246 is a printable character
character code 247 is a printable character
character code 248 is a printable character
character code 249 is a printable character
character code 250 is a printable character
character code 251 is a printable character
character code 252 is a printable character
character code 253 is a printable character
character code 254 is a printable character
character code 255 is a printable character
===DONE===

152
ext/ctype/tests/ctype_graph_variation3.phpt

@ -0,0 +1,152 @@
--TEST--
Test ctype_graph() function : usage variations - different strings
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_graph(mixed $c)
* Description: Checks for any printable character(s) except space
* Source code: ext/ctype/ctype.c
*/
/*
* Pass strings containing different character types to ctype_graph() to test
* which are considered valid printable character only strings
*/
echo "*** Testing ctype_graph() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$values = array(
/*1*/ "This string contains just letters and spaces", // Simple string
"but this one contains some numbers too 123+456 = 678", // Mixed string
"",
" ",
/*5*/ "a",
"ABCXYZ",
"abcxyz",
"ABCXYZ123DEF456",
"abczyz123DEF456",
/*10*/ "\r\n",
"123",
"03F", // hexadecimal 'digits'
")speci@! ch@r$(",
'@!$*',
/*15*/ 'ABC',
'abc',
'ABC123',
'abc123',
"abc123\n",
/*20*/ 'abc 123',
'',
' ',
base64_decode("w4DDoMOHw6fDiMOo"), // non-ascii characters
"!$%^&*()_+-={}[]:;@~'#<,>.?/",
/*25*/ "\"ABC\"",
"String\twith\ttabs",
"Sample string with newline\n",
/*28*/ "123 ABC XYZ",
);
$iterator = 1;
foreach($values as $value) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_graph($value) );
$iterator++;
};
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_graph() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(true)
-- Iteration 6 --
bool(true)
-- Iteration 7 --
bool(true)
-- Iteration 8 --
bool(true)
-- Iteration 9 --
bool(true)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(true)
-- Iteration 12 --
bool(true)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(true)
-- Iteration 15 --
bool(true)
-- Iteration 16 --
bool(true)
-- Iteration 17 --
bool(true)
-- Iteration 18 --
bool(true)
-- Iteration 19 --
bool(false)
-- Iteration 20 --
bool(false)
-- Iteration 21 --
bool(false)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
-- Iteration 24 --
bool(true)
-- Iteration 25 --
bool(true)
-- Iteration 26 --
bool(false)
-- Iteration 27 --
bool(false)
-- Iteration 28 --
bool(false)
===DONE===

68
ext/ctype/tests/ctype_graph_variation4.phpt

@ -0,0 +1,68 @@
--TEST--
Test ctype_graph() function : usage variations - octal and hexadecimal values
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_graph(mixed $c)
* Description: Checks for any printable character(s) except space
* Source code: ext/ctype/ctype.c
*/
/*
* Pass octal and hexadecimal values to ctype_graph() to test behaviour
*/
echo "*** Testing ctype_graph() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$octal_values = array(061, 062, 063, 064);
$hex_values = array (0x31, 0x32, 0x33, 0x34);
echo "\n-- Octal Values --\n";
$iterator = 1;
foreach($octal_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_graph($c));
$iterator++;
}
echo "\n-- Hexadecimal Values --\n";
$iterator = 1;
foreach($hex_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_graph($c));
$iterator++;
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_graph() : usage variations ***
-- Octal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
-- Hexadecimal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
===DONE===

33
ext/ctype/tests/ctype_lower_basic.phpt

@ -0,0 +1,33 @@
--TEST--
Test ctype_lower() function : basic functionality
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_lower(mixed $c)
* Description: Checks for lowercase character(s)
* Source code: ext/ctype/ctype.c
*/
echo "*** Testing ctype_lower() : basic functionality ***\n";
$orig = setlocale(LC_CTYPE, "C");
$c1 = 'helloworld';
$c2 = "Hello, world!\n";
var_dump(ctype_lower($c1));
var_dump(ctype_lower($c2));
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_lower() : basic functionality ***
bool(true)
bool(false)
===DONE===

45
ext/ctype/tests/ctype_lower_error.phpt

@ -0,0 +1,45 @@
--TEST--
Test ctype_lower() function : error conditions - incorrect number of args
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_lower(mixed $c)
* Description: Checks for lowercase character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass incorrect number of arguments to ctype_lower() to test behaviour
*/
echo "*** Testing ctype_lower() : error conditions ***\n";
// Zero arguments
echo "\n-- Testing ctype_lower() function with Zero arguments --\n";
var_dump( ctype_lower() );
//Test ctype_lower with one more than the expected number of arguments
echo "\n-- Testing ctype_lower() function with more than expected no. of arguments --\n";
$c = 1;
$extra_arg = 10;
var_dump( ctype_lower($c, $extra_arg) );
?>
===DONE===
--EXPECTF--
*** Testing ctype_lower() : error conditions ***
-- Testing ctype_lower() function with Zero arguments --
Warning: ctype_lower() expects exactly 1 parameter, 0 given in %s on line %d
NULL
-- Testing ctype_lower() function with more than expected no. of arguments --
Warning: ctype_lower() expects exactly 1 parameter, 2 given in %s on line %d
NULL
===DONE===

183
ext/ctype/tests/ctype_lower_variation1.phpt

@ -0,0 +1,183 @@
--TEST--
Test ctype_lower() function : usage variations - different data types as $c arg
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_lower(mixed $c)
* Description: Checks for lowercase character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different data types as $c argument to ctype_lower() to test behaviour
*/
echo "*** Testing ctype_lower() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
//get an unset variable
$unset_var = 10;
unset ($unset_var);
// get a class
class classA
{
public function __toString() {
return "class";
}
}
// heredoc string
$heredoc = <<<EOT
heredoc
EOT;
// get a resource variable
$fp = fopen(__FILE__, "r");
// unexpected values to be passed to $c argument
$inputs = array(
// int data
/*1*/ 0,
1,
12345,
-2345,
// float data
/*5*/ 10.5,
-10.5,
12.3456789000e10,
12.3456789000E-10,
.5,
// null data
/*10*/ NULL,
null,
// boolean data
/*12*/ true,
false,
TRUE,
FALSE,
// empty data
/*16*/ "",
'',
array(),
// string data
/*19*/ "string",
'string',
$heredoc,
// object data
/*22*/ new classA(),
// undefined data
/*23*/ @$undefined_var,
// unset data
/*24*/ @$unset_var,
// resource variable
/*25*/ $fp
);
// loop through each element of $inputs to check the behavior of ctype_lower()
$iterator = 1;
foreach($inputs as $input) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_lower($input) );
$iterator++;
};
fclose($fp);
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_lower() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(false)
-- Iteration 6 --
bool(false)
-- Iteration 7 --
bool(false)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(false)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(false)
-- Iteration 16 --
bool(false)
-- Iteration 17 --
bool(false)
-- Iteration 18 --
bool(false)
-- Iteration 19 --
bool(true)
-- Iteration 20 --
bool(true)
-- Iteration 21 --
bool(true)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
-- Iteration 24 --
bool(false)
-- Iteration 25 --
bool(false)
===DONE===

97
ext/ctype/tests/ctype_lower_variation2.phpt

@ -0,0 +1,97 @@
--TEST--
Test ctype_lower() function : usage variations - different integers
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_lower(mixed $c)
* Description: Checks for lowercase character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different integers to ctype_lower() to test which character codes are considered
* valid lowercase characters
*/
echo "*** Testing ctype_lower() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
for ($i = 0; $i < 256; $i++) {
if (ctype_lower($i)) {
echo "character code $i is a lower case character\n";
}
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_lower() : usage variations ***
character code 97 is a lower case character
character code 98 is a lower case character
character code 99 is a lower case character
character code 100 is a lower case character
character code 101 is a lower case character
character code 102 is a lower case character
character code 103 is a lower case character
character code 104 is a lower case character
character code 105 is a lower case character
character code 106 is a lower case character
character code 107 is a lower case character
character code 108 is a lower case character
character code 109 is a lower case character
character code 110 is a lower case character
character code 111 is a lower case character
character code 112 is a lower case character
character code 113 is a lower case character
character code 114 is a lower case character
character code 115 is a lower case character
character code 116 is a lower case character
character code 117 is a lower case character
character code 118 is a lower case character
character code 119 is a lower case character
character code 120 is a lower case character
character code 121 is a lower case character
character code 122 is a lower case character
character code 170 is a lower case character
character code 181 is a lower case character
character code 186 is a lower case character
character code 223 is a lower case character
character code 224 is a lower case character
character code 225 is a lower case character
character code 226 is a lower case character
character code 227 is a lower case character
character code 228 is a lower case character
character code 229 is a lower case character
character code 230 is a lower case character
character code 231 is a lower case character
character code 232 is a lower case character
character code 233 is a lower case character
character code 234 is a lower case character
character code 235 is a lower case character
character code 236 is a lower case character
character code 237 is a lower case character
character code 238 is a lower case character
character code 239 is a lower case character
character code 240 is a lower case character
character code 241 is a lower case character
character code 242 is a lower case character
character code 243 is a lower case character
character code 244 is a lower case character
character code 245 is a lower case character
character code 246 is a lower case character
character code 248 is a lower case character
character code 249 is a lower case character
character code 250 is a lower case character
character code 251 is a lower case character
character code 252 is a lower case character
character code 253 is a lower case character
character code 254 is a lower case character
character code 255 is a lower case character
===DONE===

144
ext/ctype/tests/ctype_lower_variation3.phpt

@ -0,0 +1,144 @@
--TEST--
Test ctype_lower() function : usage variations - different strings
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_lower(mixed $c)
* Description: Checks for lowercase character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass strings containing different character types to ctype_lower() to test
* which are considered valid lowercase character only strings
*/
echo "*** Testing ctype_lower() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$values = array(
/*1*/ "This string contains just letters and spaces", // Simple string
"but this one contains some numbers too 123+456 = 678", // Mixed string
"",
" ",
/*5*/ "a",
"ABCXYZ",
"abcxyz",
"ABCXYZ123DEF456",
"abczyz123DEF456",
/*10*/ "\r\n",
"123",
"03F", // hexadecimal 'digits'
")speci@! ch@r$(",
'@!$*',
/*15*/ 'ABC',
'abc',
'ABC123',
'abc123',
'abc123\n',
/*20*/ 'abc 123',
'',
' ',
base64_decode("w4DDoMOHw6fDiMOo"), // non-ascii characters
"abcXYZ",
/*25*/ "abc xyz",
/*26*/ "abc+efg*xyz",
);
$iterator = 1;
foreach($values as $value) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_lower($value) );
$iterator++;
};
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_lower() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(true)
-- Iteration 6 --
bool(false)
-- Iteration 7 --
bool(true)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(false)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(false)
-- Iteration 16 --
bool(true)
-- Iteration 17 --
bool(false)
-- Iteration 18 --
bool(false)
-- Iteration 19 --
bool(false)
-- Iteration 20 --
bool(false)
-- Iteration 21 --
bool(false)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
-- Iteration 24 --
bool(false)
-- Iteration 25 --
bool(false)
-- Iteration 26 --
bool(false)
===DONE===

68
ext/ctype/tests/ctype_lower_variation4.phpt

@ -0,0 +1,68 @@
--TEST--
Test ctype_lower() function : usage variations - octal and hexadecimal values
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_lower(mixed $c)
* Description: Checks for lowercase character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass octal and hexadecimal values to ctype_lower() to test behaviour
*/
echo "*** Testing ctype_lower() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$octal_values = array(0141, 0142, 0143, 0144);
$hex_values = array (0x61, 0x62, 0x63, 0x64);
echo "\n-- Octal Values --\n";
$iterator = 1;
foreach($octal_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_lower($c));
$iterator++;
}
echo "\n-- Hexadecimal Values --\n";
$iterator = 1;
foreach($hex_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_lower($c));
$iterator++;
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_lower() : usage variations ***
-- Octal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
-- Hexadecimal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
===DONE===

33
ext/ctype/tests/ctype_print_basic.phpt

@ -0,0 +1,33 @@
--TEST--
Test ctype_print() function : basic functionality
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_print(mixed $c)
* Description: Checks for printable character(s)
* Source code: ext/ctype/ctype.c
*/
echo "*** Testing ctype_print() : basic functionality ***\n";
$orig = setlocale(LC_CTYPE, "C");
$c1 = "Hello, World!";
$c2 = null;
var_dump(ctype_print($c1));
var_dump(ctype_print($c2));
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_print() : basic functionality ***
bool(true)
bool(false)
===DONE===

45
ext/ctype/tests/ctype_print_error.phpt

@ -0,0 +1,45 @@
--TEST--
Test ctype_print() function : error conditions - incorrect number of args
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_print(mixed $c)
* Description: Checks for printable character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass incorrect number of arguments to ctype_print() to test behaviour
*/
echo "*** Testing ctype_print() : error conditions ***\n";
// Zero arguments
echo "\n-- Testing ctype_print() function with Zero arguments --\n";
var_dump( ctype_print() );
//Test ctype_print with one more than the expected number of arguments
echo "\n-- Testing ctype_print() function with more than expected no. of arguments --\n";
$c = 1;
$extra_arg = 10;
var_dump( ctype_print($c, $extra_arg) );
?>
===DONE===
--EXPECTF--
*** Testing ctype_print() : error conditions ***
-- Testing ctype_print() function with Zero arguments --
Warning: ctype_print() expects exactly 1 parameter, 0 given in %s on line %d
NULL
-- Testing ctype_print() function with more than expected no. of arguments --
Warning: ctype_print() expects exactly 1 parameter, 2 given in %s on line %d
NULL
===DONE===

183
ext/ctype/tests/ctype_print_variation1.phpt

@ -0,0 +1,183 @@
--TEST--
Test ctype_print() function : usage variations - different data types as $c arg
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_print(mixed $c)
* Description: Checks for printable character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different data types as $c argument to ctype_print() to test behaviour
*/
echo "*** Testing ctype_print() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
//get an unset variable
$unset_var = 10;
unset ($unset_var);
// get a class
class classA
{
public function __toString() {
return "Class A object";
}
}
// heredoc string
$heredoc = <<<EOT
hello world
EOT;
// get a resource variable
$fp = fopen(__FILE__, "r");
// unexpected values to be passed to $c argument
$inputs = array(
// int data
/*1*/ 0,
1,
12345,
-2345,
// float data
/*5*/ 10.5,
-10.5,
12.3456789000e10,
12.3456789000E-10,
.5,
// null data
/*10*/ NULL,
null,
// boolean data
/*12*/ true,
false,
TRUE,
FALSE,
// empty data
/*16*/ "",
'',
array(),
// string data
/*19*/ "string",
'string',
$heredoc,
// object data
/*22*/ new classA(),
// undefined data
/*23*/ @$undefined_var,
// unset data
/*24*/ @$unset_var,
// resource variable
/*25*/ $fp
);
// loop through each element of $inputs to check the behavior of ctype_print()
$iterator = 1;
foreach($inputs as $input) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_print($input) );
$iterator++;
};
fclose($fp);
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_print() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(false)
-- Iteration 6 --
bool(false)
-- Iteration 7 --
bool(false)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(false)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(false)
-- Iteration 16 --
bool(false)
-- Iteration 17 --
bool(false)
-- Iteration 18 --
bool(false)
-- Iteration 19 --
bool(true)
-- Iteration 20 --
bool(true)
-- Iteration 21 --
bool(true)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
-- Iteration 24 --
bool(false)
-- Iteration 25 --
bool(false)
===DONE===

226
ext/ctype/tests/ctype_print_variation2.phpt

@ -0,0 +1,226 @@
--TEST--
Test ctype_print() function : usage variations - different integers
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_print(mixed $c)
* Description: Checks for printable character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different integers to ctype_print() to test which character codes are considered
* valid printable characters
*/
echo "*** Testing ctype_print() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
for ($i = 0; $i < 256; $i++) {
if (ctype_print($i)) {
echo "character code $i is a printable character\n";
}
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_print() : usage variations ***
character code 32 is a printable character
character code 33 is a printable character
character code 34 is a printable character
character code 35 is a printable character
character code 36 is a printable character
character code 37 is a printable character
character code 38 is a printable character
character code 39 is a printable character
character code 40 is a printable character
character code 41 is a printable character
character code 42 is a printable character
character code 43 is a printable character
character code 44 is a printable character
character code 45 is a printable character
character code 46 is a printable character
character code 47 is a printable character
character code 48 is a printable character
character code 49 is a printable character
character code 50 is a printable character
character code 51 is a printable character
character code 52 is a printable character
character code 53 is a printable character
character code 54 is a printable character
character code 55 is a printable character
character code 56 is a printable character
character code 57 is a printable character
character code 58 is a printable character
character code 59 is a printable character
character code 60 is a printable character
character code 61 is a printable character
character code 62 is a printable character
character code 63 is a printable character
character code 64 is a printable character
character code 65 is a printable character
character code 66 is a printable character
character code 67 is a printable character
character code 68 is a printable character
character code 69 is a printable character
character code 70 is a printable character
character code 71 is a printable character
character code 72 is a printable character
character code 73 is a printable character
character code 74 is a printable character
character code 75 is a printable character
character code 76 is a printable character
character code 77 is a printable character
character code 78 is a printable character
character code 79 is a printable character
character code 80 is a printable character
character code 81 is a printable character
character code 82 is a printable character
character code 83 is a printable character
character code 84 is a printable character
character code 85 is a printable character
character code 86 is a printable character
character code 87 is a printable character
character code 88 is a printable character
character code 89 is a printable character
character code 90 is a printable character
character code 91 is a printable character
character code 92 is a printable character
character code 93 is a printable character
character code 94 is a printable character
character code 95 is a printable character
character code 96 is a printable character
character code 97 is a printable character
character code 98 is a printable character
character code 99 is a printable character
character code 100 is a printable character
character code 101 is a printable character
character code 102 is a printable character
character code 103 is a printable character
character code 104 is a printable character
character code 105 is a printable character
character code 106 is a printable character
character code 107 is a printable character
character code 108 is a printable character
character code 109 is a printable character
character code 110 is a printable character
character code 111 is a printable character
character code 112 is a printable character
character code 113 is a printable character
character code 114 is a printable character
character code 115 is a printable character
character code 116 is a printable character
character code 117 is a printable character
character code 118 is a printable character
character code 119 is a printable character
character code 120 is a printable character
character code 121 is a printable character
character code 122 is a printable character
character code 123 is a printable character
character code 124 is a printable character
character code 125 is a printable character
character code 126 is a printable character
character code 160 is a printable character
character code 161 is a printable character
character code 162 is a printable character
character code 163 is a printable character
character code 164 is a printable character
character code 165 is a printable character
character code 166 is a printable character
character code 167 is a printable character
character code 168 is a printable character
character code 169 is a printable character
character code 170 is a printable character
character code 171 is a printable character
character code 172 is a printable character
character code 174 is a printable character
character code 175 is a printable character
character code 176 is a printable character
character code 177 is a printable character
character code 178 is a printable character
character code 179 is a printable character
character code 180 is a printable character
character code 181 is a printable character
character code 182 is a printable character
character code 183 is a printable character
character code 184 is a printable character
character code 185 is a printable character
character code 186 is a printable character
character code 187 is a printable character
character code 188 is a printable character
character code 189 is a printable character
character code 190 is a printable character
character code 191 is a printable character
character code 192 is a printable character
character code 193 is a printable character
character code 194 is a printable character
character code 195 is a printable character
character code 196 is a printable character
character code 197 is a printable character
character code 198 is a printable character
character code 199 is a printable character
character code 200 is a printable character
character code 201 is a printable character
character code 202 is a printable character
character code 203 is a printable character
character code 204 is a printable character
character code 205 is a printable character
character code 206 is a printable character
character code 207 is a printable character
character code 208 is a printable character
character code 209 is a printable character
character code 210 is a printable character
character code 211 is a printable character
character code 212 is a printable character
character code 213 is a printable character
character code 214 is a printable character
character code 215 is a printable character
character code 216 is a printable character
character code 217 is a printable character
character code 218 is a printable character
character code 219 is a printable character
character code 220 is a printable character
character code 221 is a printable character
character code 222 is a printable character
character code 223 is a printable character
character code 224 is a printable character
character code 225 is a printable character
character code 226 is a printable character
character code 227 is a printable character
character code 228 is a printable character
character code 229 is a printable character
character code 230 is a printable character
character code 231 is a printable character
character code 232 is a printable character
character code 233 is a printable character
character code 234 is a printable character
character code 235 is a printable character
character code 236 is a printable character
character code 237 is a printable character
character code 238 is a printable character
character code 239 is a printable character
character code 240 is a printable character
character code 241 is a printable character
character code 242 is a printable character
character code 243 is a printable character
character code 244 is a printable character
character code 245 is a printable character
character code 246 is a printable character
character code 247 is a printable character
character code 248 is a printable character
character code 249 is a printable character
character code 250 is a printable character
character code 251 is a printable character
character code 252 is a printable character
character code 253 is a printable character
character code 254 is a printable character
character code 255 is a printable character
===DONE===

132
ext/ctype/tests/ctype_print_variation3.phpt

@ -0,0 +1,132 @@
--TEST--
Test ctype_print() function : usage variations - different strings
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_print(mixed $c)
* Description: Checks for printable character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass strings containing different character types to ctype_print() to test
* which are considered valid printable character only strings
*/
echo "*** Testing ctype_print() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$values = array(
/*1*/ "This string contains just letters and spaces", // Simple string
"but this one contains some numbers too 123+456 = 678", // Mixed string
"",
" ",
/*5*/ "a",
"ABCXYZ",
"abcxyz",
"ABCXYZ123DEF456",
"abczyz123DEF456",
/*10*/ "\r\n",
"123",
"03F", // hexadecimal 'digits'
")speci@! ch@r$(",
'@!$*',
/*15*/ 'ABC',
'abc',
'ABC123',
'abc123',
"abc123\n",
/*20*/ 'abc 123',
'',
' ',
/*23*/ base64_decode("w4DDoMOHw6fDiMOo") // non-ascii characters
);
$iterator = 1;
foreach($values as $value) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_print($value) );
$iterator++;
};
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_print() : usage variations ***
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(true)
-- Iteration 5 --
bool(true)
-- Iteration 6 --
bool(true)
-- Iteration 7 --
bool(true)
-- Iteration 8 --
bool(true)
-- Iteration 9 --
bool(true)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(true)
-- Iteration 12 --
bool(true)
-- Iteration 13 --
bool(true)
-- Iteration 14 --
bool(true)
-- Iteration 15 --
bool(true)
-- Iteration 16 --
bool(true)
-- Iteration 17 --
bool(true)
-- Iteration 18 --
bool(true)
-- Iteration 19 --
bool(false)
-- Iteration 20 --
bool(true)
-- Iteration 21 --
bool(false)
-- Iteration 22 --
bool(true)
-- Iteration 23 --
bool(false)
===DONE===

67
ext/ctype/tests/ctype_print_variation4.phpt

@ -0,0 +1,67 @@
--TEST--
Test ctype_print() function : usage variations - octal and hexadecimal values
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_print(mixed $c)
* Description: Checks for printable character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass octal and hexadecimal values to ctype_print() to test behaviour
*/
echo "*** Testing ctype_print() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$octal_values = array(040, 041, 042, 043);
$hex_values = array (0x20, 0x21, 0x23, 0x24);
echo "\n-- Octal Values --\n";
$iterator = 1;
foreach($octal_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_print($c));
$iterator++;
}
echo "\n-- Hexadecimal Values --\n";
$iterator = 1;
foreach($hex_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_print($c));
$iterator++;
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_print() : usage variations ***
-- Octal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
-- Hexadecimal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
===DONE===

34
ext/ctype/tests/ctype_punct_basic.phpt

@ -0,0 +1,34 @@
--TEST--
Test ctype_punct() function : basic functionality
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_punct(mixed $c)
* Description: Checks for any printable character which is not whitespace
* or an alphanumeric character
* Source code: ext/ctype/ctype.c
*/
echo "*** Testing ctype_punct() : basic functionality ***\n";
$orig = setlocale(LC_CTYPE, "C");
$c1 = '@!$*';
$c2 = 'hello, world!';
var_dump(ctype_punct($c1));
var_dump(ctype_punct($c2));
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_punct() : basic functionality ***
bool(true)
bool(false)
===DONE===

50
ext/ctype/tests/ctype_punct_error.phpt

@ -0,0 +1,50 @@
--TEST--
Test ctype_punct() function : error conditions - incorrect number of args
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_punct(mixed $c)
* Description: Checks for any printable character which is not whitespace
* or an alphanumeric character
* Source code: ext/ctype/ctype.c
*/
/*
* Pass incorrect number of arguments to ctype_punct() to test behaviour
*/
echo "*** Testing ctype_punct() : error conditions ***\n";
$orig = setlocale(LC_CTYPE, "C");
// Zero arguments
echo "\n-- Testing ctype_punct() function with Zero arguments --\n";
var_dump( ctype_punct() );
//Test ctype_punct with one more than the expected number of arguments
echo "\n-- Testing ctype_punct() function with more than expected no. of arguments --\n";
$c = 1;
$extra_arg = 10;
var_dump( ctype_punct($c, $extra_arg) );
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_punct() : error conditions ***
-- Testing ctype_punct() function with Zero arguments --
Warning: ctype_punct() expects exactly 1 parameter, 0 given in %s on line %d
NULL
-- Testing ctype_punct() function with more than expected no. of arguments --
Warning: ctype_punct() expects exactly 1 parameter, 2 given in %s on line %d
NULL
===DONE===

184
ext/ctype/tests/ctype_punct_variation1.phpt

@ -0,0 +1,184 @@
--TEST--
Test ctype_punct() function : usage variations - different data types as $c argument
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_punct(mixed $c)
* Description: Checks for any printable character which is not whitespace
* or an alphanumeric character
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different data types as $c argument to ctype_punt() to test behaviour
*/
echo "*** Testing ctype_punct() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
//get an unset variable
$unset_var = 10;
unset ($unset_var);
// get a class
class classA
{
public function __toString() {
return ",<.>";
}
}
// heredoc string
$heredoc = <<<EOT
[{}]
EOT;
// get a resource variable
$fp = fopen(__FILE__, "r");
// unexpected values to be passed to $c argument
$inputs = array(
// int data
/*1*/ 0,
1,
12345,
-2345,
// float data
/*5*/ 10.5,
-10.5,
12.3456789000e10,
12.3456789000E-10,
.5,
// null data
/*10*/ NULL,
null,
// boolean data
/*12*/ true,
false,
TRUE,
FALSE,
// empty data
/*16*/ "",
'',
array(),
// string data
/*19*/ ";:'@",
'#~/?',
$heredoc,
// object data
/*22*/ new classA(),
// undefined data
/*23*/ @$undefined_var,
// unset data
/*24*/ @$unset_var,
// resource variable
/*25*/ $fp
);
// loop through each element of $inputs to check the behavior of ctype_punct
$iterator = 1;
foreach($inputs as $input) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_punct($input) );
$iterator++;
};
fclose($fp);
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_punct() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(false)
-- Iteration 6 --
bool(false)
-- Iteration 7 --
bool(false)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(false)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(false)
-- Iteration 16 --
bool(false)
-- Iteration 17 --
bool(false)
-- Iteration 18 --
bool(false)
-- Iteration 19 --
bool(true)
-- Iteration 20 --
bool(true)
-- Iteration 21 --
bool(true)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
-- Iteration 24 --
bool(false)
-- Iteration 25 --
bool(false)
===DONE===

65
ext/ctype/tests/ctype_punct_variation2.phpt

@ -0,0 +1,65 @@
--TEST--
Test ctype_punct() function : usage variations - different integers
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_punct(mixed $c)
* Description: Checks for any printable character which is not whitespace
* or an alphanumeric character
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different integers to ctype_punct() to test which character codes are considered
* valid punctuation characters
*/
echo "*** Testing ctype_punct() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
for ($c = 1; $c < 256; $c++) {
if (ctype_punct($c)) {
echo "character code $c is punctuation\n";
}
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_punct() : usage variations ***
character code 33 is punctuation
character code 34 is punctuation
character code 35 is punctuation
character code 37 is punctuation
character code 38 is punctuation
character code 39 is punctuation
character code 40 is punctuation
character code 41 is punctuation
character code 42 is punctuation
character code 44 is punctuation
character code 45 is punctuation
character code 46 is punctuation
character code 47 is punctuation
character code 58 is punctuation
character code 59 is punctuation
character code 63 is punctuation
character code 64 is punctuation
character code 91 is punctuation
character code 92 is punctuation
character code 93 is punctuation
character code 95 is punctuation
character code 123 is punctuation
character code 125 is punctuation
character code 161 is punctuation
character code 171 is punctuation
character code 183 is punctuation
character code 187 is punctuation
character code 191 is punctuation
===DONE===

144
ext/ctype/tests/ctype_punct_variation3.phpt

@ -0,0 +1,144 @@
--TEST--
Test ctype_punct() function : usage variations - different punctuation
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_punct(mixed $c)
* Description: Checks for any printable character which is not whitespace
* or an alphanumeric character
* Source code: ext/ctype/ctype.c
*/
/*
* Pass strings containing different character types to ctype_punct() to test
* which are considered valid punctuation character only strings
*/
echo "*** Testing ctype_punct() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$values = array(
/*1*/ "This string contains just letters and spaces", // Simple string
"but this one contains some numbers too 123+456 = 678", // Mixed string
"",
" ",
/*5*/ "a",
"ABCXYZ",
"abcxyz",
"ABCXYZ123DEF456",
"abczyz123DEF456",
/*10*/ "\r\n",
"123",
"03F", // hexadecimal 'digits'
")speci@! ch@r$(",
'@!$*',
/*15*/ 'ABC',
'abc',
'ABC123',
'abc123',
"abc123\n",
/*20*/ 'abc 123',
'',
' ',
base64_decode("w4DDoMOHw6fDiMOo"), // non-ascii characters
"!$%@\n",
/*25*/ "\"?!\"",
/*26*/ "|\ @~",
);
$iterator = 1;
foreach($values as $value) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_punct($value) );
$iterator++;
};
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_punct() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(false)
-- Iteration 6 --
bool(false)
-- Iteration 7 --
bool(false)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(false)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(true)
-- Iteration 15 --
bool(false)
-- Iteration 16 --
bool(false)
-- Iteration 17 --
bool(false)
-- Iteration 18 --
bool(false)
-- Iteration 19 --
bool(false)
-- Iteration 20 --
bool(false)
-- Iteration 21 --
bool(false)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
-- Iteration 24 --
bool(false)
-- Iteration 25 --
bool(true)
-- Iteration 26 --
bool(false)
===DONE===

69
ext/ctype/tests/ctype_punct_variation4.phpt

@ -0,0 +1,69 @@
--TEST--
Test ctype_punct() function : usage variations - Octal and Hexadecimal values
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_punct(mixed $c)
* Description: Checks for any printable character which is not whitespace
* or an alphanumeric character
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different octal and hexadecimal values to ctype_punct() to test behaviour
*/
echo "*** Testing ctype_punct() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$octal_values = array(045, 046, 047, 050);
$hex_values = array(0x25, 0x26, 0x27, 0x28);
echo "\n-- Octal Values --\n";
$iterator = 1;
foreach($octal_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_punct($c));
$iterator++;
}
echo "\n-- Hexadecimal Values --\n";
$iterator = 1;
foreach($hex_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_punct($c));
$iterator++;
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_punct() : usage variations ***
-- Octal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
-- Hexadecimal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
===DONE===

33
ext/ctype/tests/ctype_space_basic.phpt

@ -0,0 +1,33 @@
--TEST--
Test ctype_space() function : basic functionality
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_space(mixed $c)
* Description: Checks for whitespace character(s)
* Source code: ext/ctype/ctype.c
*/
echo "*** Testing ctype_space() : basic functionality ***\n";
$orig = setlocale(LC_CTYPE, "C");
$c1 = " \t\r\n";
var_dump(ctype_space($c1));
$c2 = "Hello, world!\n";
var_dump(ctype_space($c2));
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_space() : basic functionality ***
bool(true)
bool(false)
===DONE===

49
ext/ctype/tests/ctype_space_error.phpt

@ -0,0 +1,49 @@
--TEST--
Test ctype_space() function : error conditions - Incorrect number of args
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_space(mixed $c)
* Description: Checks for whitespace character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass an incorrect number of arguments to ctype_space() to test behaviour
*/
echo "*** Testing ctype_space() : error conditions ***\n";
$orig = setlocale(LC_CTYPE, "C");
// Zero arguments
echo "\n-- Testing ctype_space() function with Zero arguments --\n";
var_dump( ctype_space() );
//Test ctype_space with one more than the expected number of arguments
echo "\n-- Testing ctype_space() function with more than expected no. of arguments --\n";
$c = " ";
$extra_arg = 10;
var_dump( ctype_space($c, $extra_arg) );
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_space() : error conditions ***
-- Testing ctype_space() function with Zero arguments --
Warning: ctype_space() expects exactly 1 parameter, 0 given in %s on line %d
NULL
-- Testing ctype_space() function with more than expected no. of arguments --
Warning: ctype_space() expects exactly 1 parameter, 2 given in %s on line %d
NULL
===DONE===

183
ext/ctype/tests/ctype_space_variation1.phpt

@ -0,0 +1,183 @@
--TEST--
Test ctype_space() function : usage variations - different data types as $c argument
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_space(mixed $c)
* Description: Checks for whitespace character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different data types as $c argument to ctype_space() to test behaviour
*/
echo "*** Testing ctype_space() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
//get an unset variable
$unset_var = 10;
unset ($unset_var);
// get a class
class classA
{
public function __toString() {
return "\n\t\r";
}
}
// heredoc string
$heredoc = <<<EOT
EOT;
// get a resource variable
$fp = fopen(__FILE__, "r");
// unexpected values to be passed to $c argument
$inputs = array(
// int data
/*1*/ 0,
1,
12345,
-2345,
// float data
/*5*/ 10.5,
-10.5,
12.3456789000e10,
12.3456789000E-10,
.5,
// null data
/*10*/ NULL,
null,
// boolean data
/*12*/ true,
false,
TRUE,
FALSE,
// empty data
/*16*/ "",
'',
array(),
// string data
/*19*/ "\n\t\r",
' ',
$heredoc,
// object data
/*22*/ new classA(),
// undefined data
/*23*/ @$undefined_var,
// unset data
/*24*/ @$unset_var,
// resource variable
/*25*/ $fp
);
// loop through each element of $inputs to check the behavior of ctype_space()
$iterator = 1;
foreach($inputs as $input) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_space($input) );
$iterator++;
};
fclose($fp);
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_space() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(false)
-- Iteration 6 --
bool(false)
-- Iteration 7 --
bool(false)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(false)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(false)
-- Iteration 16 --
bool(false)
-- Iteration 17 --
bool(false)
-- Iteration 18 --
bool(false)
-- Iteration 19 --
bool(true)
-- Iteration 20 --
bool(true)
-- Iteration 21 --
bool(true)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
-- Iteration 24 --
bool(false)
-- Iteration 25 --
bool(false)
===DONE===

47
ext/ctype/tests/ctype_space_variation2.phpt

@ -0,0 +1,47 @@
--TEST--
Test ctype_space() function : usage variations - different integers
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_space(mixed $c)
* Description: Checks for whitespace character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different integers to ctype_space() to test which character codes are considered
* valid whitespace characters
*/
echo "*** Testing ctype_space() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
for ($c = 1; $c < 256; $c++) {
if (ctype_space($c)) {
echo "character code $c is a space character\n";
}
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_space() : usage variations ***
character code 9 is a space character
character code 10 is a space character
character code 11 is a space character
character code 12 is a space character
character code 13 is a space character
character code 28 is a space character
character code 29 is a space character
character code 30 is a space character
character code 31 is a space character
character code 32 is a space character
character code 133 is a space character
character code 160 is a space character
===DONE===

144
ext/ctype/tests/ctype_space_variation3.phpt

@ -0,0 +1,144 @@
--TEST--
Test ctype_space() function : usage variations - different strings
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_space(mixed $c)
* Description: Checks for whitespace character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass strings containing different character types to ctype_space() to test
* which are considered valid whitespace character only strings
*/
echo "*** Testing ctype_space() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$values = array(
/*1*/ "This string contains just letters and spaces", // Simple string
"but this one contains some numbers too 123+456 = 678", // Mixed string
"",
" ",
/*5*/ "a",
"ABCXYZ",
"abcxyz",
"ABCXYZ123DEF456",
"abczyz123DEF456",
/*10*/ "\r\n",
"123",
"03F", // hexadecimal 'digits'
")speci@! ch@r$(",
'@!$*',
/*15*/ 'ABC',
'abc',
'ABC123',
'abc123',
"abc123\n",
/*20*/ 'abc 123',
'',
' ',
base64_decode("w4DDoMOHw6fDiMOo"), // non-ascii characters
"\"\n",
/*25*/ " \t\r\n",
/*26*/ "\v\f",
);
$iterator = 1;
foreach($values as $value) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_space($value) );
$iterator++;
};
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_space() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(true)
-- Iteration 5 --
bool(false)
-- Iteration 6 --
bool(false)
-- Iteration 7 --
bool(false)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(true)
-- Iteration 11 --
bool(false)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(false)
-- Iteration 16 --
bool(false)
-- Iteration 17 --
bool(false)
-- Iteration 18 --
bool(false)
-- Iteration 19 --
bool(false)
-- Iteration 20 --
bool(false)
-- Iteration 21 --
bool(false)
-- Iteration 22 --
bool(true)
-- Iteration 23 --
bool(false)
-- Iteration 24 --
bool(false)
-- Iteration 25 --
bool(true)
-- Iteration 26 --
bool(true)
===DONE===

75
ext/ctype/tests/ctype_space_variation4.phpt

@ -0,0 +1,75 @@
--TEST--
Test ctype_space() function : usage variations - octal and hexadecimal values
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_space(mixed $c)
* Description: Checks for whitespace character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass octal and hexadecimal values as $c to ctype_space() to test behaviour
*/
echo "*** Testing ctype_space() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$octal_values = array (011, 012, 013, 014, 015, 040);
$hex_values = array (0x9, 0xA, 0xB, 0xC, 0xD, 0x20);
echo "\n-- Octal Values --\n";
$iterator = 1;
foreach($octal_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_space($c));
$iterator++;
}
echo "\n-- Hexadecimal Values --\n";
$iterator = 1;
foreach($hex_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_space($c));
$iterator++;
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_space() : usage variations ***
-- Octal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
-- Iteration 5 --
bool(true)
-- Iteration 6 --
bool(true)
-- Hexadecimal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
-- Iteration 5 --
bool(true)
-- Iteration 6 --
bool(true)
===DONE===

33
ext/ctype/tests/ctype_upper_basic.phpt

@ -0,0 +1,33 @@
--TEST--
Test ctype_upper() function : basic functionality
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_upper(mixed $c)
* Description: Checks for uppercase character(s)
* Source code: ext/ctype/ctype.c
*/
echo "*** Testing ctype_upper() : basic functionality ***\n";
$orig = setlocale(LC_CTYPE, "C");
$c1 = 'HELLOWORLD';
$c2 = "Hello, World!\n";
var_dump(ctype_upper($c1));
var_dump(ctype_upper($c2));
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_upper() : basic functionality ***
bool(true)
bool(false)
===DONE===

45
ext/ctype/tests/ctype_upper_error.phpt

@ -0,0 +1,45 @@
--TEST--
Test ctype_upper() function : error conditions - incorrect number of args
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_upper(mixed $c)
* Description: Checks for uppercase character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass incorrect number of arguments to ctype_upper() to test behaviour
*/
echo "*** Testing ctype_upper() : error conditions ***\n";
// Zero arguments
echo "\n-- Testing ctype_upper() function with Zero arguments --\n";
var_dump( ctype_upper() );
//Test ctype_upper with one more than the expected number of arguments
echo "\n-- Testing ctype_upper() function with more than expected no. of arguments --\n";
$c = 1;
$extra_arg = 10;
var_dump( ctype_upper($c, $extra_arg) );
?>
===DONE===
--EXPECTF--
*** Testing ctype_upper() : error conditions ***
-- Testing ctype_upper() function with Zero arguments --
Warning: ctype_upper() expects exactly 1 parameter, 0 given in %s on line %d
NULL
-- Testing ctype_upper() function with more than expected no. of arguments --
Warning: ctype_upper() expects exactly 1 parameter, 2 given in %s on line %d
NULL
===DONE===

183
ext/ctype/tests/ctype_upper_variation1.phpt

@ -0,0 +1,183 @@
--TEST--
Test ctype_upper() function : usage variations - different data types
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_upper(mixed $c)
* Description: Checks for uppercase character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different data types as $c argument to ctype_upper() to test behaviour
*/
echo "*** Testing ctype_upper() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
//get an unset variable
$unset_var = 10;
unset ($unset_var);
// get a class
class classA
{
public function __toString() {
return "HELLO";
}
}
// heredoc string
$heredoc = <<<EOT
HI
EOT;
// get a resource variable
$fp = fopen(__FILE__, "r");
// unexpected values to be passed to $c argument
$inputs = array(
// int data
/*1*/ 0,
1,
12345,
-2345,
// float data
/*5*/ 10.5,
-10.5,
12.3456789000e10,
12.3456789000E-10,
.5,
// null data
/*10*/ NULL,
null,
// boolean data
/*12*/ true,
false,
TRUE,
FALSE,
// empty data
/*16*/ "",
'',
array(),
// string data
/*19*/ "STRING",
'STRING',
$heredoc,
// object data
/*22*/ new classA(),
// undefined data
/*23*/ @$undefined_var,
// unset data
/*24*/ @$unset_var,
// resource variable
/*25*/ $fp
);
// loop through each element of $inputs to check the behavior of ctype_upper()
$iterator = 1;
foreach($inputs as $input) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_upper($input) );
$iterator++;
};
fclose($fp);
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_upper() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(false)
-- Iteration 6 --
bool(false)
-- Iteration 7 --
bool(false)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(false)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(false)
-- Iteration 16 --
bool(false)
-- Iteration 17 --
bool(false)
-- Iteration 18 --
bool(false)
-- Iteration 19 --
bool(true)
-- Iteration 20 --
bool(true)
-- Iteration 21 --
bool(true)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
-- Iteration 24 --
bool(false)
-- Iteration 25 --
bool(false)
===DONE===

91
ext/ctype/tests/ctype_upper_variation2.phpt

@ -0,0 +1,91 @@
--TEST--
Test ctype_upper() function : usage variations - different integers
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_upper(mixed $c)
* Description: Checks for uppercase character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different integers to ctype_upper() to test which character codes are considered
* valid uppercase characters
*/
echo "*** Testing ctype_upper() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
for ($i = 0; $i < 256; $i++) {
if (ctype_upper($i)) {
echo "character code $i is a uppercase character\n";
}
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_upper() : usage variations ***
character code 65 is a uppercase character
character code 66 is a uppercase character
character code 67 is a uppercase character
character code 68 is a uppercase character
character code 69 is a uppercase character
character code 70 is a uppercase character
character code 71 is a uppercase character
character code 72 is a uppercase character
character code 73 is a uppercase character
character code 74 is a uppercase character
character code 75 is a uppercase character
character code 76 is a uppercase character
character code 77 is a uppercase character
character code 78 is a uppercase character
character code 79 is a uppercase character
character code 80 is a uppercase character
character code 81 is a uppercase character
character code 82 is a uppercase character
character code 83 is a uppercase character
character code 84 is a uppercase character
character code 85 is a uppercase character
character code 86 is a uppercase character
character code 87 is a uppercase character
character code 88 is a uppercase character
character code 89 is a uppercase character
character code 90 is a uppercase character
character code 192 is a uppercase character
character code 193 is a uppercase character
character code 194 is a uppercase character
character code 195 is a uppercase character
character code 196 is a uppercase character
character code 197 is a uppercase character
character code 198 is a uppercase character
character code 199 is a uppercase character
character code 200 is a uppercase character
character code 201 is a uppercase character
character code 202 is a uppercase character
character code 203 is a uppercase character
character code 204 is a uppercase character
character code 205 is a uppercase character
character code 206 is a uppercase character
character code 207 is a uppercase character
character code 208 is a uppercase character
character code 209 is a uppercase character
character code 210 is a uppercase character
character code 211 is a uppercase character
character code 212 is a uppercase character
character code 213 is a uppercase character
character code 214 is a uppercase character
character code 216 is a uppercase character
character code 217 is a uppercase character
character code 218 is a uppercase character
character code 219 is a uppercase character
character code 220 is a uppercase character
character code 221 is a uppercase character
character code 222 is a uppercase character
===DONE===

143
ext/ctype/tests/ctype_upper_variation3.phpt

@ -0,0 +1,143 @@
--TEST--
Test ctype_upper() function : usage variations - different strings
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_upper(mixed $c)
* Description: Checks for uppercase character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass strings containing different character types to ctype_upper() to test
* which are considered valid uppercase character only strings
*/
echo "*** Testing ctype_upper() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$values = array(
/*1*/ "This string contains just letters and spaces", // Simple string
"but this one contains some numbers too 123+456 = 678", // Mixed string
"",
" ",
/*5*/ "a",
"ABCXYZ",
"abcxyz",
"ABCXYZ123DEF456",
"abczyz123DEF456",
/*10*/ "\r\n",
"123",
"03F", // hexadecimal 'digits'
")speci@! ch@r$(",
'@!$*',
/*15*/ 'ABC',
'abc',
'ABC123',
'abc123',
'abc123\n',
/*20*/ 'abc 123',
'',
' ',
base64_decode("w4DDoMOHw6fDiMOo"), // non-ascii characters
"abcXYZ",
/*25*/ "ABC XYZ",
/*26*/ "ABC+EFG*XYZ",
);
$iterator = 1;
foreach($values as $value) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_upper($value) );
$iterator++;
};
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_upper() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(false)
-- Iteration 6 --
bool(true)
-- Iteration 7 --
bool(false)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(false)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(true)
-- Iteration 16 --
bool(false)
-- Iteration 17 --
bool(false)
-- Iteration 18 --
bool(false)
-- Iteration 19 --
bool(false)
-- Iteration 20 --
bool(false)
-- Iteration 21 --
bool(false)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
-- Iteration 24 --
bool(false)
-- Iteration 25 --
bool(false)
-- Iteration 26 --
bool(false)
===DONE===

67
ext/ctype/tests/ctype_upper_variation4.phpt

@ -0,0 +1,67 @@
--TEST--
Test ctype_upper() function : usage variations - octal and hexadecimal values
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_upper(mixed $c)
* Description: Checks for uppercase character(s)
* Source code: ext/ctype/ctype.c
*/
/*
* Pass octal and hexadecimal values to ctype_upper() to test behaviour
*/
echo "*** Testing ctype_upper() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$octal_values = array(0101, 0102, 0103, 0104);
$hex_values = array(0x41, 0x42, 0x43, 0x44);
echo "\n-- Octal Values --\n";
$iterator = 1;
foreach($octal_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_upper($c));
$iterator++;
}
echo "\n-- Hexadecimal Values --\n";
$iterator = 1;
foreach($hex_values as $c) {
echo "-- Iteration $iterator --\n";
var_dump(ctype_upper($c));
$iterator++;
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_upper() : usage variations ***
-- Octal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
-- Hexadecimal Values --
-- Iteration 1 --
bool(true)
-- Iteration 2 --
bool(true)
-- Iteration 3 --
bool(true)
-- Iteration 4 --
bool(true)
===DONE===

32
ext/ctype/tests/ctype_xdigit_basic.phpt

@ -0,0 +1,32 @@
--TEST--
Test ctype_xdigit() function : basic functionality
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_xdigit(mixed $c)
* Description: Checks for character(s) representing a hexadecimal digit
* Source code: ext/ctype/ctype.c
*/
echo "*** Testing ctype_xdigit() : basic functionality ***\n";
$orig = setlocale(LC_CTYPE, "C");
$c1 = 'abcdefABCDEF0123456789';
$c2 = 'face 034';
var_dump(ctype_xdigit($c1));
var_dump(ctype_xdigit($c2));
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_xdigit() : basic functionality ***
bool(true)
bool(false)
===DONE===

45
ext/ctype/tests/ctype_xdigit_error.phpt

@ -0,0 +1,45 @@
--TEST--
Test ctype_xdigit() function : error conditions - Incorrect number of args
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_xdigit(mixed $c)
* Description: Checks for character(s) representing a hexadecimal digit
* Source code: ext/ctype/ctype.c
*/
/*
* Pass incorrect number of arguments to ctype_xdigit() to test behaviour
*/
echo "*** Testing ctype_xdigit() : error conditions ***\n";
// Zero arguments
echo "\n-- Testing ctype_xdigit() function with Zero arguments --\n";
var_dump( ctype_xdigit() );
//Test ctype_xdigit with one more than the expected number of arguments
echo "\n-- Testing ctype_xdigit() function with more than expected no. of arguments --\n";
$c = 1;
$extra_arg = 10;
var_dump( ctype_xdigit($c, $extra_arg) );
?>
===DONE===
--EXPECTF--
*** Testing ctype_xdigit() : error conditions ***
-- Testing ctype_xdigit() function with Zero arguments --
Warning: ctype_xdigit() expects exactly 1 parameter, 0 given in %s on line %d
NULL
-- Testing ctype_xdigit() function with more than expected no. of arguments --
Warning: ctype_xdigit() expects exactly 1 parameter, 2 given in %s on line %d
NULL
===DONE===

183
ext/ctype/tests/ctype_xdigit_variation1.phpt

@ -0,0 +1,183 @@
--TEST--
Test ctype_xdigit() function : usage variations - different data typse as $c arg
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_xdigit(mixed $c)
* Description: Checks for character(s) representing a hexadecimal digit
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different data types as $c argument to ctype_xdigit() to test behaviour
*/
echo "*** Testing ctype_xdigit() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
//get an unset variable
$unset_var = 10;
unset ($unset_var);
// get a class
class classA
{
public function __toString() {
return "ABcd";
}
}
// heredoc string
$heredoc = <<<EOT
234
EOT;
// get a resource variable
$fp = fopen(__FILE__, "r");
// unexpected values to be passed to $c argument
$inputs = array(
// int data
/*1*/ 0,
1,
12345,
-2345,
// float data
/*5*/ 10.5,
-10.5,
12.3456789000e10,
12.3456789000E-10,
.5,
// null data
/*10*/ NULL,
null,
// boolean data
/*12*/ true,
false,
TRUE,
FALSE,
// empty data
/*16*/ "",
'',
array(),
// string data
/*19*/ "456",
'def',
$heredoc,
// object data
/*22*/ new classA(),
// undefined data
/*23*/ @$undefined_var,
// unset data
/*24*/ @$unset_var,
// resource variable
/*25*/ $fp
);
// loop through each element of $inputs to check the behavior of ctype_xdigit()
$iterator = 1;
foreach($inputs as $input) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_xdigit($input) );
$iterator++;
};
fclose($fp);
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_xdigit() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(false)
-- Iteration 6 --
bool(false)
-- Iteration 7 --
bool(false)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(false)
-- Iteration 12 --
bool(false)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(false)
-- Iteration 16 --
bool(false)
-- Iteration 17 --
bool(false)
-- Iteration 18 --
bool(false)
-- Iteration 19 --
bool(true)
-- Iteration 20 --
bool(true)
-- Iteration 21 --
bool(true)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
-- Iteration 24 --
bool(false)
-- Iteration 25 --
bool(false)
===DONE===

58
ext/ctype/tests/ctype_xdigit_variation2.phpt

@ -0,0 +1,58 @@
--TEST--
Test ctype_xdigit() function : usage variations - different integers
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_xdigit(mixed $c)
* Description: Checks for character(s) representing a hexadecimal digit
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different integers to ctype_xdigit() to test which character codes are considered
* valid hexadecimal 'digits'
*/
echo "*** Testing ctype_xdigit() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
for($c = 1; $c < 256; $c++) {
if (ctype_xdigit($c)) {
echo "character code $c is a hexadecimal 'digit'\n";
}
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_xdigit() : usage variations ***
character code 48 is a hexadecimal 'digit'
character code 49 is a hexadecimal 'digit'
character code 50 is a hexadecimal 'digit'
character code 51 is a hexadecimal 'digit'
character code 52 is a hexadecimal 'digit'
character code 53 is a hexadecimal 'digit'
character code 54 is a hexadecimal 'digit'
character code 55 is a hexadecimal 'digit'
character code 56 is a hexadecimal 'digit'
character code 57 is a hexadecimal 'digit'
character code 65 is a hexadecimal 'digit'
character code 66 is a hexadecimal 'digit'
character code 67 is a hexadecimal 'digit'
character code 68 is a hexadecimal 'digit'
character code 69 is a hexadecimal 'digit'
character code 70 is a hexadecimal 'digit'
character code 97 is a hexadecimal 'digit'
character code 98 is a hexadecimal 'digit'
character code 99 is a hexadecimal 'digit'
character code 100 is a hexadecimal 'digit'
character code 101 is a hexadecimal 'digit'
character code 102 is a hexadecimal 'digit'
===DONE===

144
ext/ctype/tests/ctype_xdigit_variation3.phpt

@ -0,0 +1,144 @@
--TEST--
Test ctype_xdigit() function : usage variations - Different strings
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_xdigit(mixed $c)
* Description: Checks for character(s) representing a hexadecimal digit
* Source code: ext/ctype/ctype.c
*/
/*
* Pass strings containing different character types to ctype_xdigit() to test
* which are considered valid hexadecimal 'digit' only strings
*/
echo "*** Testing ctype_xdigit() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
$values = array(
/*1*/ "This string contains just letters and spaces", // Simple string
"but this one contains some numbers too 123+456 = 678", // Mixed string
"",
" ",
/*5*/ "a",
"ABCXYZ",
"abcxyz",
"ABCXYZ123DEF456",
"abczyz123DEF456",
/*10*/ "\r\n",
"123",
"03F", // hexadecimal 'digits'
")speci@! ch@r$(",
'@!$*',
/*15*/ 'ABC',
'abc',
'ABC123',
'abc123',
'abc123\n',
/*20*/ 'abc 123',
'',
' ',
base64_decode("w4DDoMOHw6fDiMOo"), // non-ascii characters
'ABCdef07',
"56ea\tFB",
"0x2A"
);
$iterator = 1;
foreach($values as $value) {
echo "\n-- Iteration $iterator --\n";
var_dump( ctype_xdigit($value) );
$iterator++;
};
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_xdigit() : usage variations ***
-- Iteration 1 --
bool(false)
-- Iteration 2 --
bool(false)
-- Iteration 3 --
bool(false)
-- Iteration 4 --
bool(false)
-- Iteration 5 --
bool(true)
-- Iteration 6 --
bool(false)
-- Iteration 7 --
bool(false)
-- Iteration 8 --
bool(false)
-- Iteration 9 --
bool(false)
-- Iteration 10 --
bool(false)
-- Iteration 11 --
bool(true)
-- Iteration 12 --
bool(true)
-- Iteration 13 --
bool(false)
-- Iteration 14 --
bool(false)
-- Iteration 15 --
bool(true)
-- Iteration 16 --
bool(true)
-- Iteration 17 --
bool(true)
-- Iteration 18 --
bool(true)
-- Iteration 19 --
bool(false)
-- Iteration 20 --
bool(false)
-- Iteration 21 --
bool(false)
-- Iteration 22 --
bool(false)
-- Iteration 23 --
bool(false)
-- Iteration 24 --
bool(true)
-- Iteration 25 --
bool(false)
-- Iteration 26 --
bool(false)
===DONE===

87
ext/ctype/tests/ctype_xdigit_variation4.phpt

@ -0,0 +1,87 @@
--TEST--
Test ctype_xdigit() function : usage variations - heaxadecimal and octal values
--SKIPIF--
<?php
if( ini_get("unicode.semantics") == "1") {
die('skip do not run when unicode on');
}
?>
--FILE--
<?php
/* Prototype : bool ctype_xdigit(mixed $c)
* Description: Checks for character(s) representing a hexadecimal digit
* Source code: ext/ctype/ctype.c
*/
/*
* Pass different hexadecimal and octal values that:
* 1. contain hexadecimal digits
* 2. correspond to character codes recognised as hexadecimal digits (see variation2)
* referred to as 'correct' integers below
*/
echo "*** Testing ctype_xdigit() : usage variations ***\n";
$orig = setlocale(LC_CTYPE, "C");
// contain hexadecimal digits but do not correspond to 'correct' ints
$octal_values1 = array(012, 013, 014, 015);
// correspond to 'correct' integers
$octal_values2 = array(061, 062, 063, 064);
// contain hexadecimal digits but do not correspond to 'correct' ints
$hex_values1 = array(0x1A, 0x1B, 0x1C, 0x1D);
//correspond to 'correct' integers
$hex_values2 = array(0x61, 0x62, 0x63, 0x64);
echo "\n-- Octal values --\n";
echo "'Incorrect' Integers: \n";
foreach($octal_values1 as $c) {
var_dump(ctype_xdigit($c));
}
echo "'Correct' Integers: \n";
foreach($octal_values2 as $c) {
var_dump(ctype_xdigit($c));
}
echo "\n-- Hexadecimal values --\n";
echo "'Incorrect' Integers: \n";
foreach($hex_values1 as $c) {
var_dump(ctype_xdigit($c));
}
echo "'Correct' Integers: \n";
foreach($hex_values2 as $c) {
var_dump(ctype_xdigit($c));
}
setlocale(LC_CTYPE, $orig);
?>
===DONE===
--EXPECTF--
*** Testing ctype_xdigit() : usage variations ***
-- Octal values --
'Incorrect' Integers:
bool(false)
bool(false)
bool(false)
bool(false)
'Correct' Integers:
bool(true)
bool(true)
bool(true)
bool(true)
-- Hexadecimal values --
'Incorrect' Integers:
bool(false)
bool(false)
bool(false)
bool(false)
'Correct' Integers:
bool(true)
bool(true)
bool(true)
bool(true)
===DONE===
Loading…
Cancel
Save