moriyoshi               Fri Jul 25 12:50:14 2008 UTC

  Added files:                 
    /php-src/ext/mbstring/tests mb_stripos.phpt mb_stripos_basic.phpt 
                                mb_stripos_error1.phpt 
                                mb_stripos_error2.phpt 
                                mb_stripos_variation1.phpt 
                                mb_stripos_variation2.phpt 
                                mb_stripos_variation3.phpt 
                                mb_stripos_variation4.phpt 

  Modified files:              
    /php-src/ext/mbstring       mbstring.c 
  Log:
  - fix a typo in mb_stripos() that caused segfault.
    (noticed by [EMAIL PROTECTED], thanks). 
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/mbstring.c?r1=1.288&r2=1.289&diff_format=u
Index: php-src/ext/mbstring/mbstring.c
diff -u php-src/ext/mbstring/mbstring.c:1.288 
php-src/ext/mbstring/mbstring.c:1.289
--- php-src/ext/mbstring/mbstring.c:1.288       Thu Jul 24 13:46:35 2008
+++ php-src/ext/mbstring/mbstring.c     Fri Jul 25 12:50:14 2008
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: mbstring.c,v 1.288 2008/07/24 13:46:35 moriyoshi Exp $ */
+/* $Id: mbstring.c,v 1.289 2008/07/25 12:50:14 moriyoshi Exp $ */
 
 /*
  * PHP 4 Multibyte String module "mbstring"
@@ -2236,10 +2236,13 @@
        n = -1;
        offset = 0;
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|ls", (char 
**)&haystack.val, (int *)&haystack.len, (char **)needle.val, (int 
*)&needle.len, &offset, &from_encoding, &from_encoding_len) == FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|ls", (char 
**)&haystack.val, (int *)&haystack.len, (char **)&needle.val, (int 
*)&needle.len, &offset, &from_encoding, &from_encoding_len) == FAILURE) {
+               RETURN_FALSE;
+       }
+       if (needle.len == 0) {
+               php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty delimiter.");
                RETURN_FALSE;
        }
-
        n = php_mb_stripos(0, (char *)haystack.val, haystack.len, (char 
*)needle.val, needle.len, offset, from_encoding TSRMLS_CC);
 
        if (n >= 0) {

http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/tests/mb_stripos.phpt?view=markup&rev=1.1
Index: php-src/ext/mbstring/tests/mb_stripos.phpt
+++ php-src/ext/mbstring/tests/mb_stripos.phpt
--TEST--
mb_stripos() 
--SKIPIF--
<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
--FILE--
<?php
// TODO: Add more encodings

//$debug=true;
ini_set('include_path', dirname(__FILE__));
include_once('common.inc');


// Test string
$euc_jp = 
'0123¤³¤Îʸ»úÎó¤ÏÆüËܸì¤Ç¤¹¡£EUC-JP¤ò»È¤Ã¤Æ¤¤¤Þ¤¹¡£0123ÆüËܸì¤ÏÌÌÅݽ­¤¤¡£';

// EUC-JP - With encoding parameter
mb_internal_encoding('UTF-8') or print("mb_internal_encoding() failed\n");

echo  "== POSITIVE OFFSET ==\n";
print  mb_stripos($euc_jp,'ÆüËܸì', 0, 'EUC-JP') . "\n";
print  mb_stripos($euc_jp, '0', 0,     'EUC-JP') . "\n";
print  mb_stripos($euc_jp, 3, 0,       'EUC-JP') . "\n";
print  mb_stripos($euc_jp, 0, 0,       'EUC-JP') . "\n";
print  mb_stripos($euc_jp,'ÆüËܸì', 15, 'EUC-JP') . "\n";
print  mb_stripos($euc_jp, '0', 15,     'EUC-JP') . "\n";
print  mb_stripos($euc_jp, 3, 15,       'EUC-JP') . "\n";
print  mb_stripos($euc_jp, 0, 15,       'EUC-JP') . "\n";

// Negative offset
// Note: PHP Warning - offset is negative.
// Note: For offset(-15). It does not return position of latter string. (ie the 
same result as -50)
echo "== NEGATIVE OFFSET ==\n";
$r = mb_stripos($euc_jp,'ÆüËܸì', -15, 'EUC-JP');
($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
$r = mb_stripos($euc_jp, '0', -15,     'EUC-JP');
($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
$r = mb_stripos($euc_jp, 3, -15,       'EUC-JP');
($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
$r = mb_stripos($euc_jp, 0, -15,       'EUC-JP');
($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
$r = mb_stripos($euc_jp,'ÆüËܸì', -50, 'EUC-JP');
($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
$r = mb_stripos($euc_jp, '0', -50,     'EUC-JP');
($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
$r = mb_stripos($euc_jp, 3, -50,       'EUC-JP');
($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
$r = mb_stripos($euc_jp, 0, -50,       'EUC-JP');
($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";

// Out of range - should return false
print ("== OUT OF RANGE ==\n");
$r =  mb_stripos($euc_jp,'ÆüËܸì', 40, 'EUC-JP');
($r === FALSE) ? print "OK_OUT_RANGE\n"     : print "NG_OUT_RANGE\n";
$r =  mb_stripos($euc_jp, '0', 40,     'EUC-JP');
($r === FALSE) ? print "OK_OUT_RANGE\n"     : print "NG_OUT_RANGE\n";
$r =  mb_stripos($euc_jp, 3, 40,       'EUC-JP');
($r === FALSE) ? print "OK_OUT_RANGE\n"     : print "NG_OUT_RANGE\n";
$r =   mb_stripos($euc_jp, 0, 40,       'EUC-JP');
($r === FALSE) ? print "OK_OUT_RANGE\n"     : print "NG_OUT_RANGE\n";
// Note: Returned NULL string
// echo gettype($r). ' val '. $r ."\n"; 


// Non-existent
echo "== NON-EXISTENT ==\n";
$r = mb_stripos($euc_jp, '´Ú¹ñ¸ì', 0, 'EUC-JP');
($r === FALSE) ? print "OK_STR\n"     : print "NG_STR\n";
$r = mb_stripos($euc_jp, "\n",     0, 'EUC-JP');
($r === FALSE) ? print "OK_NEWLINE\n" : print "NG_NEWLINE\n";


// EUC-JP - No encoding parameter
echo "== NO ENCODING PARAMETER ==\n";
mb_internal_encoding('EUC-JP')  or print("mb_internal_encoding() failed\n");

print  mb_stripos($euc_jp,'ÆüËܸì', 0) . "\n";
print  mb_stripos($euc_jp, '0', 0) . "\n";
print  mb_stripos($euc_jp, 3, 0) . "\n";
print  mb_stripos($euc_jp, 0, 0) . "\n";

$r = mb_stripos($euc_jp,'´Ú¹ñ¸ì', 0);
($r === FALSE) ? print "OK_STR\n"     : print "NG_STR\n";
$r = mb_stripos($euc_jp,"\n", 0);
($r === FALSE) ? print "OK_NEWLINE\n" : print "NG_NEWLINE\n";

// EUC-JP - No offset and encoding parameter
echo "== NO OFFSET AND ENCODING PARAMETER ==\n";
mb_internal_encoding('EUC-JP')  or print("mb_internal_encoding() failed\n");

print  mb_stripos($euc_jp,'ÆüËܸì') . "\n";
print  mb_stripos($euc_jp, '0') . "\n";
print  mb_stripos($euc_jp, 3) . "\n";
print  mb_stripos($euc_jp, 0) . "\n";

$r = mb_stripos($euc_jp,'´Ú¹ñ¸ì');
($r === FALSE) ? print "OK_STR\n"     : print "NG_STR\n";
$r = mb_stripos($euc_jp,"\n");
($r === FALSE) ? print "OK_NEWLINE\n" : print "NG_NEWLINE\n";


// Invalid Parameters
echo "== INVALID PARAMETER TEST ==\n";

$r = mb_stripos($euc_jp,'','EUC-JP');
($r === FALSE) ? print("OK_NULL\n") : print("NG_NULL\n");
$r = mb_stripos($euc_jp, $t_ary, 'EUC-JP');
($r === FALSE) ? print("OK_ARRAY\n") : print("NG_ARRAY\n");
$r = mb_stripos($euc_jp, $t_obj, 'EUC-JP');
($r === FALSE) ? print("OK_OBJECT\n") : print("NG_OBJECT\n");
$r = mb_stripos($euc_jp, $t_obj, 'BAD_ENCODING');
($r === FALSE) ? print("OK_BAD_ENCODING\n") : print("NG_BAD_ENCODING\n");


?>

--EXPECT--
== POSITIVE OFFSET ==
10
0
3
0
34
30
33
30
== NEGATIVE OFFSET ==
ERR: Warning
OK_NEGATIVE_OFFSET
ERR: Warning
OK_NEGATIVE_OFFSET
ERR: Warning
OK_NEGATIVE_OFFSET
ERR: Warning
OK_NEGATIVE_OFFSET
ERR: Warning
OK_NEGATIVE_OFFSET
ERR: Warning
OK_NEGATIVE_OFFSET
ERR: Warning
OK_NEGATIVE_OFFSET
ERR: Warning
OK_NEGATIVE_OFFSET
== OUT OF RANGE ==
OK_OUT_RANGE
OK_OUT_RANGE
OK_OUT_RANGE
OK_OUT_RANGE
== NON-EXISTENT ==
OK_STR
OK_NEWLINE
== NO ENCODING PARAMETER ==
10
0
3
0
OK_STR
OK_NEWLINE
== NO OFFSET AND ENCODING PARAMETER ==
10
0
3
0
OK_STR
OK_NEWLINE
== INVALID PARAMETER TEST ==
ERR: Warning
OK_NULL
ERR: Warning
OK_ARRAY
ERR: Warning
OK_OBJECT
ERR: Warning
OK_BAD_ENCODING


http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/tests/mb_stripos_basic.phpt?view=markup&rev=1.1
Index: php-src/ext/mbstring/tests/mb_stripos_basic.phpt
+++ php-src/ext/mbstring/tests/mb_stripos_basic.phpt
--TEST--
Test mb_stripos() function : basic functionality
--SKIPIF--
<?php
extension_loaded('mbstring') or die('skip');
function_exists('mb_stripos') or die("skip mb_stripos() is not available in 
this build");
?>
--FILE--
<?php
/* Prototype  : int mb_stripos(string $haystack, string $needle [, int $offset 
[, string $encoding]])
 * Description: Find position of first occurrence of a string within another 
 * Source code: ext/mbstring/mbstring.c
 */

/*
 * Test basic functionality of mb_stripos with ASCII and multibyte characters
 */

echo "*** Testing mb_stripos() : basic functionality***\n";

mb_internal_encoding('UTF-8');

$string_ascii = 'abc def ABC DEF';
//Japanese string in UTF-8
$string_mb = '日本語テキストです。0123456789。';

echo "\n-- ISO-8859-1 string 1 --\n";
var_dump(mb_stripos($string_ascii, 'd', 0, 'ISO-8859-1'));

echo "\n-- ISO-8859-1 string 2 --\n";
var_dump(mb_stripos($string_ascii, 'D', 0, 'ISO-8859-1'));

echo "\n-- ISO-8859-1 string 3 --\n";
var_dump(mb_stripos($string_ascii, 'd', 1, 'ISO-8859-1'));

echo "\n-- ISO-8859-1 string 4 --\n";
var_dump(mb_stripos($string_ascii, 'D', 1, 'ISO-8859-1'));

echo "\n-- ISO-8859-1 string 5 --\n";
var_dump(mb_stripos($string_ascii, 'c', 4, 'ISO-8859-1'));

echo "\n-- ISO-8859-1 string 6 --\n";
var_dump(mb_stripos($string_ascii, 'c D', 0, 'ISO-8859-1'));

echo "\n-- ISO-8859-1 string 7 --\n";
var_dump(mb_stripos($string_ascii, 'C d', 0, 'ISO-8859-1'));

echo "\n-- ISO-8859-1 string 8 --\n";
var_dump(mb_stripos($string_ascii, 'deF', 0, 'ISO-8859-1'));

echo "\n-- ISO-8859-1 string 9 --\n";
var_dump(mb_stripos($string_ascii, '123', 0, 'ISO-8859-1'));

echo "\n-- ISO-8859-1 string 10 --\n";
var_dump(mb_stripos($string_ascii, 'c D', 1, 'ISO-8859-1'));

echo "\n-- ISO-8859-1 string 11 --\n";
var_dump(mb_stripos($string_ascii, 'C d', 1, 'ISO-8859-1'));

echo "\n-- ISO-8859-1 string 12 --\n";
var_dump(mb_stripos($string_ascii, 'deF', 1, 'ISO-8859-1'));

echo "\n-- ISO-8859-1 string 13 --\n";
var_dump(mb_stripos($string_ascii, '123', 1, 'ISO-8859-1'));

echo "\n-- ISO-8859-1 string 14 --\n";
var_dump(mb_stripos($string_ascii, 'c D', 4, 'ISO-8859-1'));

echo "\n-- ISO-8859-1 string 15 --\n";
var_dump(mb_stripos($string_ascii, 'C d', 4, 'ISO-8859-1'));

echo "\n-- ISO-8859-1 string 16 --\n";
var_dump(mb_stripos($string_ascii, 'deF', 4, 'ISO-8859-1'));

echo "\n-- ISO-8859-1 string 17 --\n";
var_dump(mb_stripos($string_ascii, 'deF', 5, 'ISO-8859-1'));

echo "\n-- ISO-8859-1 string 18 --\n";
var_dump(mb_stripos($string_ascii, '123', 4, 'ISO-8859-1'));

echo "\n-- Multibyte string 1 --\n";
$needle1 = '日本語';
var_dump(mb_stripos($string_mb, $needle1));

echo "\n-- Multibyte string 2 --\n";
$needle2 = 'こんにちは、世界';
var_dump(mb_stripos($string_mb, $needle2));

echo "Done";
?>
--EXPECTF--
*** Testing mb_stripos() : basic functionality***

-- ISO-8859-1 string 1 --
int(4)

-- ISO-8859-1 string 2 --
int(4)

-- ISO-8859-1 string 3 --
int(4)

-- ISO-8859-1 string 4 --
int(4)

-- ISO-8859-1 string 5 --
int(10)

-- ISO-8859-1 string 6 --
int(2)

-- ISO-8859-1 string 7 --
int(2)

-- ISO-8859-1 string 8 --
int(4)

-- ISO-8859-1 string 9 --
bool(false)

-- ISO-8859-1 string 10 --
int(2)

-- ISO-8859-1 string 11 --
int(2)

-- ISO-8859-1 string 12 --
int(4)

-- ISO-8859-1 string 13 --
bool(false)

-- ISO-8859-1 string 14 --
int(10)

-- ISO-8859-1 string 15 --
int(10)

-- ISO-8859-1 string 16 --
int(4)

-- ISO-8859-1 string 17 --
int(12)

-- ISO-8859-1 string 18 --
bool(false)

-- Multibyte string 1 --
int(0)

-- Multibyte string 2 --
bool(false)
Done

http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/tests/mb_stripos_error1.phpt?view=markup&rev=1.1
Index: php-src/ext/mbstring/tests/mb_stripos_error1.phpt
+++ php-src/ext/mbstring/tests/mb_stripos_error1.phpt
--TEST--
Test mb_stripos() function : error conditions - Pass incorrect number of args
--SKIPIF--
<?php
extension_loaded('mbstring') or die('skip');
function_exists('mb_stripos') or die("skip mb_stripos() is not available in 
this build");
?>
--FILE--
<?php
/* Prototype  : int mb_stripos(string $haystack, string $needle [, int $offset 
[, string $encoding]])
 * Description: Find position of first occurrence of a string within another 
 * Source code: ext/mbstring/mbstring.c
 */

/*
 * Test how mb_stripos behaves when passed an incorrect number of arguments
 */

echo "*** Testing mb_stripos() : error conditions ***\n";


//Test mb_stripos with one more than the expected number of arguments
echo "\n-- Testing mb_stripos() function with more than expected no. of 
arguments --\n";
$haystack = 'string_val';
$needle = 'string_val';
$offset = 10;
$encoding = 'string_val';
$extra_arg = 10;
var_dump( mb_stripos($haystack, $needle, $offset, $encoding, $extra_arg) );

// Testing mb_stripos with one less than the expected number of arguments
echo "\n-- Testing mb_stripos() function with less than expected no. of 
arguments --\n";
$haystack = 'string_val';
var_dump( mb_stripos($haystack) );

echo "Done";
?>
--EXPECTF--
*** Testing mb_stripos() : error conditions ***

-- Testing mb_stripos() function with more than expected no. of arguments --

Warning: mb_stripos() expects at most 4 parameters, 5 given in %s on line %d
bool(false)

-- Testing mb_stripos() function with less than expected no. of arguments --

Warning: mb_stripos() expects at least 2 parameters, 1 given in %s on line %d
bool(false)
Done

http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/tests/mb_stripos_error2.phpt?view=markup&rev=1.1
Index: php-src/ext/mbstring/tests/mb_stripos_error2.phpt
+++ php-src/ext/mbstring/tests/mb_stripos_error2.phpt
--TEST--
Test mb_stripos() function : error conditions - Pass unknown encoding
--SKIPIF--
<?php
extension_loaded('mbstring') or die('skip');
function_exists('mb_stripos') or die("skip mb_stripos() is not available in 
this build");
?>
--FILE--
<?php
/* Prototype  : int mb_stripos(string $haystack, string $needle [, int $offset 
[, string $encoding]])
 * Description: Find position of first occurrence of a string within another 
 * Source code: ext/mbstring/mbstring.c
 */

/*
 * Pass an unknown encoding to mb_stripos() to test behaviour
 */

echo "*** Testing mb_stripos() : error conditions ***\n";
$haystack = 'Hello, world';
$needle = 'world';
$offset = 2;
$encoding = 'unknown-encoding';

var_dump( mb_stripos($haystack, $needle, $offset, $encoding) );

echo "Done";
?>
--EXPECTF--
*** Testing mb_stripos() : error conditions ***

Warning: mb_stripos(): Unknown encoding "unknown-encoding" in %s on line %d
bool(false)
Done

http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/tests/mb_stripos_variation1.phpt?view=markup&rev=1.1
Index: php-src/ext/mbstring/tests/mb_stripos_variation1.phpt
+++ php-src/ext/mbstring/tests/mb_stripos_variation1.phpt
--TEST--
Test mb_stripos() function : usage variations - pass different data types to 
$haystack arg
--SKIPIF--
<?php
extension_loaded('mbstring') or die('skip');
function_exists('mb_stripos') or die("skip mb_stripos() is not available in 
this build");
?>
--FILE--
<?php
/* Prototype  : int mb_stripos(string $haystack, string $needle [, int $offset 
[, string $encoding]])
 * Description: Find position of first occurrence of a string within another 
 * Source code: ext/mbstring/mbstring.c
 */

/*
 * Pass mb_stripos different data types as $haystack arg to test behaviour
 */

echo "*** Testing mb_stripos() : usage variations ***\n";

// Initialise function arguments not being substituted
$needle = 'string_val';
$offset = 0;
$encoding = 'utf-8';

//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 $haystack 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*/ "",
       '',

       // string data
/*18*/ "string",
       'string',
       $heredoc,
       
       // object data
/*21*/ new classA(),

       // undefined data
/*22*/ @$undefined_var,

       // unset data
/*23*/ @$unset_var,

       // resource variable
/*24*/ $fp
);

// loop through each element of $inputs to check the behavior of mb_stripos()
$iterator = 1;
foreach($inputs as $input) {
  echo "\n-- Iteration $iterator --\n";
  var_dump( mb_stripos($input, $needle, $offset, $encoding));
  $iterator++;
};

fclose($fp);

echo "Done";
?>
--EXPECTF--
*** Testing mb_stripos() : 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(false)

-- Iteration 20 --
bool(false)

-- Iteration 21 --
bool(false)

-- Iteration 22 --
bool(false)

-- Iteration 23 --
bool(false)

-- Iteration 24 --

Warning: mb_stripos() expects parameter 1 to be string, resource given in %s on 
line %d
bool(false)
Done

http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/tests/mb_stripos_variation2.phpt?view=markup&rev=1.1
Index: php-src/ext/mbstring/tests/mb_stripos_variation2.phpt
+++ php-src/ext/mbstring/tests/mb_stripos_variation2.phpt
--TEST--
Test mb_stripos() function : usage variations - pass different data types as 
$needle arg
--SKIPIF--
<?php
extension_loaded('mbstring') or die('skip');
function_exists('mb_stripos') or die("skip mb_stripos() is not available in 
this build");
?>
--FILE--
<?php
/* Prototype  : int mb_stripos(string $haystack, string $needle [, int $offset 
[, string $encoding]])
 * Description: Find position of first occurrence of a string within another 
 * Source code: ext/mbstring/mbstring.c
 */

/*
 * Pass mb_stripos different data types as $needle arg to test behaviour
 */

echo "*** Testing mb_stripos() : usage variations ***\n";

// Initialise function arguments not being substituted
$haystack = 'string_val';
$offset = 0;
$encoding = 'utf-8';

//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 $needle 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*/ "",
       '',

       // string data
/*18*/ "string",
       'string',
       $heredoc,
       
       // object data
/*21*/ new classA(),

       // undefined data
/*22*/ @$undefined_var,

       // unset data
/*23*/ @$unset_var,

       // resource variable
/*24*/ $fp
);

// loop through each element of $inputs to check the behavior of mb_stripos()
$iterator = 1;
foreach($inputs as $input) {
  echo "\n-- Iteration $iterator --\n";
  var_dump( mb_stripos($haystack, $input, $offset, $encoding));
  $iterator++;
};

fclose($fp);

echo "Done";
?>
--EXPECTF--
*** Testing mb_stripos() : 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 --

Warning: mb_stripos(): Empty delimiter. in %s on line %d
bool(false)

-- Iteration 11 --

Warning: mb_stripos(): Empty delimiter. in %s on line %d
bool(false)

-- Iteration 12 --
bool(false)

-- Iteration 13 --

Warning: mb_stripos(): Empty delimiter. in %s on line %d
bool(false)

-- Iteration 14 --
bool(false)

-- Iteration 15 --

Warning: mb_stripos(): Empty delimiter. in %s on line %d
bool(false)

-- Iteration 16 --

Warning: mb_stripos(): Empty delimiter. in %s on line %d
bool(false)

-- Iteration 17 --

Warning: mb_stripos(): Empty delimiter. in %s on line %d
bool(false)

-- Iteration 18 --
int(0)

-- Iteration 19 --
int(0)

-- Iteration 20 --
bool(false)

-- Iteration 21 --
bool(false)

-- Iteration 22 --

Warning: mb_stripos(): Empty delimiter. in %s on line %d
bool(false)

-- Iteration 23 --

Warning: mb_stripos(): Empty delimiter. in %s on line %d
bool(false)

-- Iteration 24 --

Warning: mb_stripos() expects parameter 2 to be string, resource given in %s on 
line %d
bool(false)
Done

http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/tests/mb_stripos_variation3.phpt?view=markup&rev=1.1
Index: php-src/ext/mbstring/tests/mb_stripos_variation3.phpt
+++ php-src/ext/mbstring/tests/mb_stripos_variation3.phpt
--TEST--
Test mb_stripos() function : usage variations - pass different data types as 
$offset arg
--SKIPIF--
<?php
extension_loaded('mbstring') or die('skip');
function_exists('mb_stripos') or die("skip mb_stripos() is not available in 
this build");
?>
--FILE--
<?php
/* Prototype  : int mb_stripos(string $haystack, string $needle [, int $offset 
[, string $encoding]])
 * Description: Find position of first occurrence of a string within another 
 * Source code: ext/mbstring/mbstring.c
 */

/*
 * Pass mb_stripos different data types as $offset arg to test behaviour
 */

echo "*** Testing mb_stripos() : usage variations ***\n";

// Initialise function arguments not being substituted
$needle = 'a';
$haystack = 'string_val';
$encoding = 'utf-8';

//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 $offest 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*/ "",
       '',

       // string data
/*18*/ "string",
       'string',
       $heredoc,
       
       // object data
/*21*/ new classA(),

       // undefined data
/*22*/ @$undefined_var,

       // unset data
/*23*/ @$unset_var,

       // resource variable
/*24*/ $fp
);

// loop through each element of $inputs to check the behavior of mb_stripos()
$iterator = 1;
foreach($inputs as $input) {
  echo "\n-- Iteration $iterator --\n";
  var_dump( mb_stripos($haystack, $needle, $input, $encoding));
  $iterator++;
};

fclose($fp);

echo "Done";
?>
--EXPECTF--
*** Testing mb_stripos() : usage variations ***

-- Iteration 1 --
int(8)

-- Iteration 2 --
int(8)

-- Iteration 3 --

Warning: mb_stripos(): Offset not contained in string. in %s on line %d
bool(false)

-- Iteration 4 --

Warning: mb_stripos(): Offset not contained in string. in %s on line %d
bool(false)

-- Iteration 5 --
bool(false)

-- Iteration 6 --

Warning: mb_stripos(): Offset not contained in string. in %s on line %d
bool(false)

-- Iteration 7 --

Warning: mb_stripos(): Offset not contained in string. in %s on line %d
bool(false)

-- Iteration 8 --
int(8)

-- Iteration 9 --
int(8)

-- Iteration 10 --
int(8)

-- Iteration 11 --
int(8)

-- Iteration 12 --
int(8)

-- Iteration 13 --
int(8)

-- Iteration 14 --
int(8)

-- Iteration 15 --
int(8)

-- Iteration 16 --

Warning: mb_stripos() expects parameter 3 to be long, string given in %s on 
line %d
bool(false)

-- Iteration 17 --

Warning: mb_stripos() expects parameter 3 to be long, string given in %s on 
line %d
bool(false)

-- Iteration 18 --

Warning: mb_stripos() expects parameter 3 to be long, string given in %s on 
line %d
bool(false)

-- Iteration 19 --

Warning: mb_stripos() expects parameter 3 to be long, string given in %s on 
line %d
bool(false)

-- Iteration 20 --

Warning: mb_stripos() expects parameter 3 to be long, string given in %s on 
line %d
bool(false)

-- Iteration 21 --

Warning: mb_stripos() expects parameter 3 to be long, object given in %s on 
line %d
bool(false)

-- Iteration 22 --
int(8)

-- Iteration 23 --
int(8)

-- Iteration 24 --

Warning: mb_stripos() expects parameter 3 to be long, resource given in %s on 
line %d
bool(false)
Done

http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/tests/mb_stripos_variation4.phpt?view=markup&rev=1.1
Index: php-src/ext/mbstring/tests/mb_stripos_variation4.phpt
+++ php-src/ext/mbstring/tests/mb_stripos_variation4.phpt
--TEST--
Test mb_stripos() function : usage variations - pass different data types as 
$encoding arg
--SKIPIF--
<?php
extension_loaded('mbstring') or die('skip');
function_exists('mb_stripos') or die("skip mb_stripos() is not available in 
this build");
?>
--FILE--
<?php
/* Prototype  : int mb_stripos(string $haystack, string $needle [, int $offset 
[, string $encoding]])
 * Description: Find position of first occurrence of a string within another 
 * Source code: ext/mbstring/mbstring.c
 */

/*
 * Pass mb_stripos different data types as $encoding arg to test behaviour
 * Where possible 'UTF-8' has been entered as a string value
 */

echo "*** Testing mb_stripos() : usage variations ***\n";

// Initialise function arguments not being substituted
$haystack = 'string_val';
$needle = 'val';
$offset = 0;

//get an unset variable
$unset_var = 10;
unset ($unset_var);

// get a class
class classA
{
  public function __toString() {
    return "UTF-8";
  }
}

// heredoc string
$heredoc = <<<EOT
UTF-8
EOT;

// get a resource variable
$fp = fopen(__FILE__, "r");

// unexpected values to be passed to $input 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*/ "",
       '',

       // string data
/*18*/ "UTF-8",
       'UTF-8',
       $heredoc,
       
       // object data
/*21*/ new classA(),

       // undefined data
/*22*/ @$undefined_var,

       // unset data
/*23*/ @$unset_var,

       // resource variable
/*24*/ $fp
);

// loop through each element of $inputs to check the behavior of mb_stripos()
$iterator = 1;
foreach($inputs as $input) {
  echo "\n-- Iteration $iterator --\n";
  var_dump( mb_stripos($haystack, $needle, $offset, $input));
  $iterator++;
};

fclose($fp);

echo "Done";
?>

--EXPECTF--
*** Testing mb_stripos() : usage variations ***

-- Iteration 1 --

Warning: mb_stripos(): Unknown encoding "0" in %s on line %d
bool(false)

-- Iteration 2 --

Warning: mb_stripos(): Unknown encoding "1" in %s on line %d
bool(false)

-- Iteration 3 --

Warning: mb_stripos(): Unknown encoding "12345" in %s on line %d
bool(false)

-- Iteration 4 --

Warning: mb_stripos(): Unknown encoding "-2345" in %s on line %d
bool(false)

-- Iteration 5 --

Warning: mb_stripos(): Unknown encoding "10.5" in %s on line %d
bool(false)

-- Iteration 6 --

Warning: mb_stripos(): Unknown encoding "-10.5" in %s on line %d
bool(false)

-- Iteration 7 --

Warning: mb_stripos(): Unknown encoding "123456789000" in %s on line %d
bool(false)

-- Iteration 8 --

Warning: mb_stripos(): Unknown encoding "1.23456789E-9" in %s on line %d
bool(false)

-- Iteration 9 --

Warning: mb_stripos(): Unknown encoding "0.5" in %s on line %d
bool(false)

-- Iteration 10 --

Warning: mb_stripos(): Unknown encoding "" in %s on line %d
bool(false)

-- Iteration 11 --

Warning: mb_stripos(): Unknown encoding "" in %s on line %d
bool(false)

-- Iteration 12 --

Warning: mb_stripos(): Unknown encoding "1" in %s on line %d
bool(false)

-- Iteration 13 --

Warning: mb_stripos(): Unknown encoding "" in %s on line %d
bool(false)

-- Iteration 14 --

Warning: mb_stripos(): Unknown encoding "1" in %s on line %d
bool(false)

-- Iteration 15 --

Warning: mb_stripos(): Unknown encoding "" in %s on line %d
bool(false)

-- Iteration 16 --

Warning: mb_stripos(): Unknown encoding "" in %s on line %d
bool(false)

-- Iteration 17 --

Warning: mb_stripos(): Unknown encoding "" in %s on line %d
bool(false)

-- Iteration 18 --
int(7)

-- Iteration 19 --
int(7)

-- Iteration 20 --
int(7)

-- Iteration 21 --
int(7)

-- Iteration 22 --

Warning: mb_stripos(): Unknown encoding "" in %s on line %d
bool(false)

-- Iteration 23 --

Warning: mb_stripos(): Unknown encoding "" in %s on line %d
bool(false)

-- Iteration 24 --

Warning: mb_stripos() expects parameter 4 to be string, resource given in %s on 
line %d
bool(false)
Done

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to