diff options
Diffstat (limited to 'ext/mbstring/tests/mb_stripos.phpt')
| -rw-r--r-- | ext/mbstring/tests/mb_stripos.phpt | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/ext/mbstring/tests/mb_stripos.phpt b/ext/mbstring/tests/mb_stripos.phpt new file mode 100644 index 000000000..c21cdf3a5 --- /dev/null +++ b/ext/mbstring/tests/mb_stripos.phpt @@ -0,0 +1,178 @@ +--TEST-- +mb_stripos() +--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 +// TODO: Add more encodings + +//$debug=true; +ini_set('include_path','.'); +include_once('common.inc'); + + +// Test string +$euc_jp = b'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,b'日本語', 0, 'EUC-JP') . "\n"; +print mb_stripos($euc_jp, b'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,b'日本語', 15, 'EUC-JP') . "\n"; +print mb_stripos($euc_jp, b'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,b'日本語', -15, 'EUC-JP'); +($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n"; +$r = mb_stripos($euc_jp, b'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,b'日本語', -50, 'EUC-JP'); +($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n"; +$r = mb_stripos($euc_jp, b'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,b'日本語', 40, 'EUC-JP'); +($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n"; +$r = mb_stripos($euc_jp, b'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, b'韓国語', 0, 'EUC-JP'); +($r === FALSE) ? print "OK_STR\n" : print "NG_STR\n"; +$r = mb_stripos($euc_jp, b"\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,b'日本語', 0) . "\n"; +print mb_stripos($euc_jp, b'0', 0) . "\n"; +print mb_stripos($euc_jp, 3, 0) . "\n"; +print mb_stripos($euc_jp, 0, 0) . "\n"; + +$r = mb_stripos($euc_jp,b'韓国語', 0); +($r === FALSE) ? print "OK_STR\n" : print "NG_STR\n"; +$r = mb_stripos($euc_jp,b"\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,b'日本語') . "\n"; +print mb_stripos($euc_jp, b'0') . "\n"; +print mb_stripos($euc_jp, 3) . "\n"; +print mb_stripos($euc_jp, 0) . "\n"; + +$r = mb_stripos($euc_jp,b'韓国語'); +($r === FALSE) ? print "OK_STR\n" : print "NG_STR\n"; +$r = mb_stripos($euc_jp,b"\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 + |
