diff options
author | Yasuo Ohgaki <yohgaki@php.net> | 2002-03-02 10:44:57 +0000 |
---|---|---|
committer | Yasuo Ohgaki <yohgaki@php.net> | 2002-03-02 10:44:57 +0000 |
commit | 7ce7a73095b03201797959891d63f99b078931f1 (patch) | |
tree | 9898853a6b27f7e3c2612838f39c72740491cbeb /ext/mbstring | |
parent | 7ff5e156c2d80ca385511b2f0dff283f631a3577 (diff) | |
download | php-git-7ce7a73095b03201797959891d63f99b078931f1.tar.gz |
Add mbstring tests
Diffstat (limited to 'ext/mbstring')
39 files changed, 1505 insertions, 0 deletions
diff --git a/ext/mbstring/tests/001.phpt b/ext/mbstring/tests/001.phpt new file mode 100644 index 0000000000..1eb68a3d4d --- /dev/null +++ b/ext/mbstring/tests/001.phpt @@ -0,0 +1,34 @@ +--TEST-- +Simple multi-byte print test (EUC-JP) +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +--GET-- +--FILE-- +<?php +/* + * Test basic PHP functions to check if it works with multi-byte chars + */ + +// EUC-JP strings +$s1 = "マルチバイト関数が使えます。"; +$s2 = "この文字が連結されているはず。"; + +// print directly +echo "echo: ".$s1.$s2."\n"; +print("print: ".$s1.$s2."\n"); +printf("printf: %s%s\n",$s1, $s2); +echo sprintf("sprintf: %s%s\n",$s1, $s2); + +// Assign to var +$s3 = $s1.$s2."\n"; +echo "echo: ".$s3; + +?> +--EXPECT-- +echo: マルチバイト関数が使えます。この文字が連結されているはず。 +print: マルチバイト関数が使えます。この文字が連結されているはず。 +printf: マルチバイト関数が使えます。この文字が連結されているはず。 +sprintf: マルチバイト関数が使えます。この文字が連結されているはず。 +echo: マルチバイト関数が使えます。この文字が連結されているはず。 + diff --git a/ext/mbstring/tests/002.inc b/ext/mbstring/tests/002.inc new file mode 100644 index 0000000000..241b78393e --- /dev/null +++ b/ext/mbstring/tests/002.inc @@ -0,0 +1,44 @@ +<?php +// TODO: +//$debug = true; +ini_set('include_path','.'); +include_once('common.php'); + +// EUC-JP +$r = mb_internal_encoding('EUC-JP'); +($r === TRUE) ? print "OK_EUC-JP_SET\n" : print "NG_EUC-JP_SET\n"; +$enc = mb_internal_encoding(); +print "$enc\n"; + +// UTF-8 +$r = mb_internal_encoding('UTF-8'); +($r === TRUE) ? print "OK_UTF-8_SET\n" : print "NG_UTF-8_SET\n"; +$enc = mb_internal_encoding(); +print "$enc\n"; + +// ASCII +$r = mb_internal_encoding('ASCII'); +($r === TRUE) ? print "OK_ASCII_SET\n" : print "NG_ASCII_SET\n"; +$enc = mb_internal_encoding(); +print "$enc\n"; + +// Invalid Parameter +print "== INVALID PARAMETER ==\n"; + +// Note: Other than string type, PHP raise both Notice and Warning +$r = mb_internal_encoding('BAD'); +($r === FALSE) ? print "OK_BAD_SET\n" : print "NG_BAD_SET\n"; +$enc = mb_internal_encoding(); +print "$enc\n"; + +$r = mb_internal_encoding($t_ary); +($r === FALSE) ? print "OK_BAD_ARY_SET\n" : print "NG_BAD_ARY_SET\n"; +$enc = mb_internal_encoding(); +print "$enc\n"; + +$r = mb_internal_encoding($t_obj); +($r === FALSE) ? print "OK_BAD_OBJ_SET\n" : print "NG_BAD_OBJ_SET\n"; +$enc = mb_internal_encoding(); +print "$enc\n"; + +?> diff --git a/ext/mbstring/tests/002.phpt b/ext/mbstring/tests/002.phpt new file mode 100644 index 0000000000..a0c8c2555c --- /dev/null +++ b/ext/mbstring/tests/002.phpt @@ -0,0 +1,28 @@ +--TEST-- +mb_internal_encoding() test +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +--GET-- +--FILE-- +<?php include('002.inc'); ?> +--EXPECT-- +OK_EUC-JP_SET +EUC-JP +OK_UTF-8_SET +UTF-8 +OK_ASCII_SET +ASCII +== INVALID PARAMETER == +ERR: Warning +OK_BAD_SET +ASCII +ERR: Notice +ERR: Warning +OK_BAD_ARY_SET +ASCII +ERR: Notice +ERR: Warning +OK_BAD_OBJ_SET +ASCII + diff --git a/ext/mbstring/tests/003.inc b/ext/mbstring/tests/003.inc new file mode 100644 index 0000000000..944058cae3 --- /dev/null +++ b/ext/mbstring/tests/003.inc @@ -0,0 +1,32 @@ +<?php +// TODO: This is not a real test.... Need to change so that it does real testing +//$debug = true; +ini_set('include_path','.'); +include_once('common.php'); + +$ini = ini_get('mbstring.http_input'); + +// It must be url encoded.... +// echo vars +echo "$a\n"; +echo "$b\n"; + +// Get encoding +$enc = mb_http_input('P'); + +// check +if (empty($ini)) { + // Must be pass + if ($enc === 'pass') { + echo "OK\n"; + } + else { + echo "NG\n"; + } +} +else { + // Some encoding + echo "This heppens when php.ini-dist is not used\n"; +} + +?> diff --git a/ext/mbstring/tests/003.phpt b/ext/mbstring/tests/003.phpt new file mode 100644 index 0000000000..7073be688f --- /dev/null +++ b/ext/mbstring/tests/003.phpt @@ -0,0 +1,15 @@ +--TEST-- +mb_http_input() +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +a=日本語0123456789日本語カタカナひらがな +--GET-- +b=日本語0123456789日本語カタカナひらがな +--FILE-- +<?php include('003.inc'); ?> +--EXPECT-- +日本語0123456789日本語カタカナひらがな +日本語0123456789日本語カタカナひらがな +OK + diff --git a/ext/mbstring/tests/004.inc b/ext/mbstring/tests/004.inc new file mode 100644 index 0000000000..271a348b58 --- /dev/null +++ b/ext/mbstring/tests/004.inc @@ -0,0 +1,56 @@ +<?php +//TODO: Add more encoding. Wrong paramter type test. +//$debug = true; +ini_set('include_path','.'); +include_once('common.php'); + +// Set HTTP output encoding to ASCII +$r = mb_http_output('ASCII'); +($r === TRUE) ? print "OK_ASCII_SET\n" : print "NG_ASCII_SET\n"; +$enc = mb_http_output(); +print "$enc\n"; + +// Set HTTP output encoding to SJIS +$r = mb_http_output('SJIS'); +($r === TRUE) ? print "OK_SJIS_SET\n" : print "NG_SJIS_SET\n"; +$enc = mb_http_output(); +print "$enc\n"; + +// Set HTTP output encoding to JIS +$r = mb_http_output('JIS'); +($r === TRUE) ? print "OK_JIS_SET\n" : print "NG_JIS_SET\n"; +$enc = mb_http_output(); +print "$enc\n"; + +// Set HTTP output encoding to UTF8 +$r = mb_http_output('UTF-8'); +($r === TRUE) ? print "OK_UTF-8_SET\n" : print "NG_UTF-8_SET\n"; +$enc = mb_http_output(); +print "$enc\n"; + +// Set HTTP output encoding to EUC-JP +$r = mb_http_output('EUC-JP'); +($r === TRUE) ? print "OK_EUC-JP_SET\n" : print "NG_EUC-JP_SET\n"; +$enc = mb_http_output(); +print "$enc\n"; + +// Invalid parameters +print "== INVALID PARAMETER ==\n"; + +// Note: Bad string raise Warning. Bad Type raise Notice (Type Conversion) and Warning.... +$r = mb_http_output('BAD_NAME'); +($r === FALSE) ? print "OK_BAD_SET\n" : print "NG_BAD_SET\n"; +$enc = mb_http_output(); +print "$enc\n"; + +$r = mb_http_output($t_ary); +($r === FALSE) ? print "OK_BAD_ARY_SET\n" : print "NG_BAD_ARY_SET\n"; +$enc = mb_http_output(); +print "$enc\n"; + +$r = mb_http_output($t_obj); +($r === FALSE) ? print "OK_BAD_OBJ_SET\n" : print "NG_BAD_OBJ_SET\n"; +$enc = mb_http_output(); +print "$enc\n"; + +?> diff --git a/ext/mbstring/tests/004.phpt b/ext/mbstring/tests/004.phpt new file mode 100644 index 0000000000..31ccd4a1e9 --- /dev/null +++ b/ext/mbstring/tests/004.phpt @@ -0,0 +1,32 @@ +--TEST-- +mb_http_output() +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +--GET-- +--FILE-- +<?php include('004.inc'); ?> +--EXPECT-- +OK_ASCII_SET +ASCII +OK_SJIS_SET +SJIS +OK_JIS_SET +JIS +OK_UTF-8_SET +UTF-8 +OK_EUC-JP_SET +EUC-JP +== INVALID PARAMETER == +ERR: Warning +OK_BAD_SET +EUC-JP +ERR: Notice +ERR: Warning +OK_BAD_ARY_SET +EUC-JP +ERR: Notice +ERR: Warning +OK_BAD_OBJ_SET +EUC-JP + diff --git a/ext/mbstring/tests/005.inc b/ext/mbstring/tests/005.inc new file mode 100644 index 0000000000..2aaaf8866d --- /dev/null +++ b/ext/mbstring/tests/005.inc @@ -0,0 +1,40 @@ +<?php +//$debug = true; +ini_set('include_path','.'); +include_once('common.php'); + + +// Set order to "auto" +$r = mb_detect_order('auto'); +($r === TRUE) ? print "OK_AUTO\n" : print "NG_AUTO\n"; +print implode(', ', mb_detect_order()) . "\n"; + + +// Set order by string +$r = mb_detect_order('SJIS,EUC-JP,JIS,UTF-8'); +($r === TRUE) ? print "OK_STR\n" : print "NG_STR\n"; +print implode(', ', mb_detect_order()) . "\n"; + + +// Set order by array +$a[] = 'ASCII'; +$a[] = 'JIS'; +$a[] = 'EUC-JP'; +$a[] = 'UTF-8'; +$r = mb_detect_order($a); +($r === TRUE) ? print "OK_ARRAY\n" : print "NG_ARRAY\n"; +print implode(', ', mb_detect_order()) . "\n"; + +// Set invalid encoding. Should fail. +print "== INVALID PARAMETER ==\n"; + +$r = mb_detect_order('BAD_NAME'); +($r === FALSE) ? print "OK_BAD_STR\n" : print "NG_BAD_STR\n"; +print implode(', ', mb_detect_order()) . "\n"; + +$a[] = 'BAD_NAME'; +$r = mb_detect_order($a); +($r === FALSE) ? print "OK_BAD_ARRAY\n" : print "NG_BAD_ARRAY\n"; +print implode(', ', mb_detect_order()) . "\n"; + +?> diff --git a/ext/mbstring/tests/005.phpt b/ext/mbstring/tests/005.phpt new file mode 100644 index 0000000000..7c0dd7ab66 --- /dev/null +++ b/ext/mbstring/tests/005.phpt @@ -0,0 +1,21 @@ +--TEST-- +mb_detect_order() +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +--GET-- +--FILE-- +<?php include('005.inc'); ?> +--EXPECT-- +OK_AUTO +ASCII, JIS, UTF-8, EUC-JP, SJIS +OK_STR +SJIS, EUC-JP, JIS, UTF-8 +OK_ARRAY +ASCII, JIS, EUC-JP, UTF-8 +== INVALID PARAMETER == +OK_BAD_STR +ASCII, JIS, EUC-JP, UTF-8 +OK_BAD_ARRAY +ASCII, JIS, EUC-JP, UTF-8 + diff --git a/ext/mbstring/tests/006.inc b/ext/mbstring/tests/006.inc new file mode 100644 index 0000000000..7da2af0708 --- /dev/null +++ b/ext/mbstring/tests/006.inc @@ -0,0 +1,33 @@ +<?php +//$debug = true; +ini_set('include_path','.'); +include_once('common.php'); + +// Note: It does not return TRUE/FALSE for setting char + +// Use Unicode val +$r = mb_substitute_character(0x3013); +//$r = mb_substitute_character('U+3013'); +($r === TRUE) ? print "OK_UTF\n" : print("NG_UTF: ".gettype($r)." $r\n"); +print mb_substitute_character() . "\n"; + + +// Use "long" +$r = mb_substitute_character('long'); +($r === TRUE) ? print "OK_LONG\n" : print("NG_LONG: ".gettype($r)." $r\n"); +print mb_substitute_character() . "\n"; + + +// Use "none" +$r = mb_substitute_character('none'); +($r === TRUE) ? print "OK_NONE\n" : print("NG_NONE: ".gettype($r)." $r\n"); +print mb_substitute_character() . "\n"; + + +// Set invalid string. Should fail. +print "== INVALID PARAMETER ==\n"; +$r = mb_substitute_character('BAD_NAME'); +($r === FALSE) ? print "OK_BAD_NAME\n" : print("NG_BAD_NAME: ".gettype($r)." $r\n"); +print mb_substitute_character() . "\n"; + +?> diff --git a/ext/mbstring/tests/006.phpt b/ext/mbstring/tests/006.phpt new file mode 100644 index 0000000000..da4f543f21 --- /dev/null +++ b/ext/mbstring/tests/006.phpt @@ -0,0 +1,19 @@ +--TEST-- +mb_substitute_character() +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +--GET-- +--FILE-- +<?php include('006.inc'); ?> +--EXPECT-- +OK_UTF +12307 +OK_LONG +long +OK_NONE +none +== INVALID PARAMETER == +ERR: +OK_BAD_NAME + diff --git a/ext/mbstring/tests/007.inc b/ext/mbstring/tests/007.inc new file mode 100644 index 0000000000..87e46da920 --- /dev/null +++ b/ext/mbstring/tests/007.inc @@ -0,0 +1,11 @@ +<?php +// TODO: Do real test + +// EUC-JP +$euc_jp = "テスト用日本語文字列。このモジュールはPHPにマルチバイト関数を提供します。"; +mb_http_output('EUC-JP') or print("mb_http_output() failed\n"); +ob_start('mb_output_handler'); +echo $euc_jp; +ob_end_flush(); + +?> diff --git a/ext/mbstring/tests/007.phpt b/ext/mbstring/tests/007.phpt new file mode 100644 index 0000000000..447243ab15 --- /dev/null +++ b/ext/mbstring/tests/007.phpt @@ -0,0 +1,11 @@ +--TEST-- +mb_output_handler() (EUC-JP) +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +--GET-- +--FILE-- +<?php include('skipif.inc'); ?> +--EXPECT-- +テスト用日本語文字列。このモジュールはPHPにマルチバイト関数を提供します。 + diff --git a/ext/mbstring/tests/008.inc b/ext/mbstring/tests/008.inc new file mode 100644 index 0000000000..5a52473dd4 --- /dev/null +++ b/ext/mbstring/tests/008.inc @@ -0,0 +1,41 @@ +<?php +// TODO: Add more encoding names + +//$debug=true; +ini_set('include_path','.'); +include_once('common.php'); + + +$str = mb_preferred_mime_name('sjis-win'); +echo "$str\n"; + +$str = mb_preferred_mime_name('SJIS'); +echo "$str\n"; + +$str = mb_preferred_mime_name('EUC-JP'); +echo "$str\n"; + +$str = mb_preferred_mime_name('UTF-8'); +echo "$str\n"; + +$str = mb_preferred_mime_name('ISO-2022-JP'); +echo "$str\n"; + +$str = mb_preferred_mime_name('JIS'); +echo "$str\n"; + +$str = mb_preferred_mime_name('ISO-8859-1'); +echo "$str\n"; + +$str = mb_preferred_mime_name('UCS2'); +echo "$str\n"; + +$str = mb_preferred_mime_name('UCS4'); +echo "$str\n"; + +echo "== INVALID PARAMETER ==\n"; +// Invalid name +$r = mb_preferred_mime_name('BAD_NAME'); +($r === FALSE) ? print("OK_BAD_NAME\n") : print("NG_BAD_NAME\n"); + +?> diff --git a/ext/mbstring/tests/008.phpt b/ext/mbstring/tests/008.phpt new file mode 100644 index 0000000000..b84a027b0a --- /dev/null +++ b/ext/mbstring/tests/008.phpt @@ -0,0 +1,22 @@ +--TEST-- +mb_preferred_mime_name() +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +--GET-- +--FILE-- +<?php include('008.inc'); ?> +--EXPECT-- +Shift_JIS +Shift_JIS +EUC-JP +UTF-8 +ISO-2022-JP +ISO-2022-JP +ISO-8859-1 +UCS-2 +UCS-4 +== INVALID PARAMETER == +ERR: Warning +OK_BAD_NAME + diff --git a/ext/mbstring/tests/009.inc b/ext/mbstring/tests/009.inc new file mode 100644 index 0000000000..aabc8daed0 --- /dev/null +++ b/ext/mbstring/tests/009.inc @@ -0,0 +1,68 @@ +<?php +// TODO: Add more encodings + +//$debug=true; +ini_set('include_path','.'); +include_once('common.php'); + +// restore detect_order to 'auto' +mb_detect_order('auto'); + +// Test string +$euc_jp = '0123この文字列は日本語です。EUC-JPを使っています。0123日本語は面倒臭い。'; +$ascii = 'abcdefghijklmnopqrstuvwxyz;]=#0123456789'; + +// ASCII +echo "== ASCII ==\n"; +print mb_strlen($ascii,'ASCII') . "\n"; +print mb_strlen($ascii) . "\n"; + +// EUC-JP +echo "== EUC-JP ==\n"; +print mb_strlen($euc_jp,'EUC-JP') . "\n"; +mb_internal_encoding('EUC-JP') or print("mb_internal_encoding() failed\n"); +print mb_strlen($euc_jp) . "\n"; + +// SJIS +echo "== SJIS ==\n"; +$sjis = mb_convert_encoding($euc_jp, 'SJIS'); +print mb_strlen($sjis,'SJIS') . "\n"; +mb_internal_encoding('SJIS') or print("mb_internal_encoding() failed\n"); +print mb_strlen($sjis) . "\n"; + +// JIS +// Note: either convert_encoding or strlen has problem +echo "== JIS ==\n"; +$jis = mb_convert_encoding($euc_jp, 'JIS'); +print mb_strlen($jis,'JIS') . "\n"; +mb_internal_encoding('JIS') or print("mb_internal_encoding() failed\n"); +print mb_strlen($jis) . "\n"; + +// UTF-8 +// Note: either convert_encoding or strlen has problem +echo "== UTF-8 ==\n"; +$utf8 = mb_convert_encoding($euc_jp, 'UTF-8'); +print mb_strlen($utf8,'UTF-8') . "\n"; +mb_internal_encoding('UTF-8') or print("mb_internal_encoding() failed\n"); +print mb_strlen($utf8) . "\n"; + + +// Wrong Parameters +echo "== WRONG PARAMETERS ==\n"; +// Array +// Note: PHP Notice, but returns some value +$r = mb_strlen($t_ary); +echo $r."\n"; +// Object +// Note: PHP Notice, but returns some value +$r = mb_strlen($t_obj); +echo $r."\n"; +// Wrong encoding +mb_internal_encoding('EUC-JP'); +$r = mb_strlen($euc_jp, 'BAD_NAME'); +echo $r."\n"; + + + + +?> diff --git a/ext/mbstring/tests/009.phpt b/ext/mbstring/tests/009.phpt new file mode 100644 index 0000000000..5e1ae42330 --- /dev/null +++ b/ext/mbstring/tests/009.phpt @@ -0,0 +1,33 @@ +--TEST-- +mb_strlen() +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +--GET-- +--FILE-- +<?php include('009.inc'); ?> +--EXPECT-- +== ASCII == +40 +40 +== EUC-JP == +43 +43 +== SJIS == +43 +43 +== JIS == +43 +43 +== UTF-8 == +43 +43 +== WRONG PARAMETERS == +ERR: Notice + +ERR: Notice + +ERR: Warning + + + diff --git a/ext/mbstring/tests/010.inc b/ext/mbstring/tests/010.inc new file mode 100644 index 0000000000..f4493a5482 --- /dev/null +++ b/ext/mbstring/tests/010.inc @@ -0,0 +1,102 @@ +<?php +// TODO: Add more encodings + +//$debug=true; +ini_set('include_path','.'); +include_once('common.php'); + + +// 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_strpos($euc_jp,'日本語', 0, 'EUC-JP') . "\n"; +print mb_strpos($euc_jp, '0', 0, 'EUC-JP') . "\n"; +print mb_strpos($euc_jp, 3, 0, 'EUC-JP') . "\n"; +print mb_strpos($euc_jp, 0, 0, 'EUC-JP') . "\n"; +print mb_strpos($euc_jp,'日本語', 15, 'EUC-JP') . "\n"; +print mb_strpos($euc_jp, '0', 15, 'EUC-JP') . "\n"; +print mb_strpos($euc_jp, 3, 15, 'EUC-JP') . "\n"; +print mb_strpos($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"; +print mb_strpos($euc_jp,'日本語', -15, 'EUC-JP') . "\n"; +print mb_strpos($euc_jp, '0', -15, 'EUC-JP') . "\n"; +print mb_strpos($euc_jp, 3, -15, 'EUC-JP') . "\n"; +print mb_strpos($euc_jp, 0, -15, 'EUC-JP') . "\n"; +print mb_strpos($euc_jp,'日本語', -50, 'EUC-JP') . "\n"; +print mb_strpos($euc_jp, '0', -50, 'EUC-JP') . "\n"; +print mb_strpos($euc_jp, 3, -50, 'EUC-JP') . "\n"; +print mb_strpos($euc_jp, 0, -50, 'EUC-JP') . "\n"; + +// Out of range - should return false +print ("== OUT OF RANGE ==\n"); +$r = mb_strpos($euc_jp,'日本語', 40, 'EUC-JP') . "\n"; +($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n"; +$r = mb_strpos($euc_jp, '0', 40, 'EUC-JP') . "\n"; +($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n"; +$r = mb_strpos($euc_jp, 3, 40, 'EUC-JP') . "\n"; +($r === FALSE) ? print "OK_OUT_RANGE\n" : print "NG_OUT_RANGE\n"; +$r = mb_strpos($euc_jp, 0, 40, 'EUC-JP') . "\n"; +($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_strpos($euc_jp, '韓国語', 'EUC-JP'); +($r === FALSE) ? print "OK_STR\n" : print "NG_STR\n"; +$r = mb_strpos($euc_jp, "\n", '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_strpos($euc_jp,'日本語', 0) . "\n"; +print mb_strpos($euc_jp, '0', 0) . "\n"; +print mb_strpos($euc_jp, 3, 0) . "\n"; +print mb_strpos($euc_jp, 0, 0) . "\n"; + +$r = mb_strpos($euc_jp,'韓国語', 0); +($r === FALSE) ? print "OK_STR\n" : print "NG_STR\n"; +$r = mb_strpos($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_strpos($euc_jp,'日本語') . "\n"; +print mb_strpos($euc_jp, '0') . "\n"; +print mb_strpos($euc_jp, 3) . "\n"; +print mb_strpos($euc_jp, 0) . "\n"; + +$r = mb_strpos($euc_jp,'韓国語'); +($r === FALSE) ? print "OK_STR\n" : print "NG_STR\n"; +$r = mb_strpos($euc_jp,"\n"); +($r === FALSE) ? print "OK_NEWLINE\n" : print "NG_NEWLINE\n"; + + +// Invalid Parameters +echo "== INVALID PARAMETER TEST ==\n"; + +$r = mb_strpos($euc_jp,'','EUC-JP'); +($r === FALSE) ? print("OK_NULL\n") : print("NG_NULL\n"); +$r = mb_strpos($euc_jp, $t_ary, 'EUC-JP'); +($r === FALSE) ? print("OK_ARRAY\n") : print("NG_ARRAY\n"); +$r = mb_strpos($euc_jp, $t_obj, 'EUC-JP'); +($r === FALSE) ? print("OK_OBJECT\n") : print("NG_OBJECT\n"); +$r = mb_strpos($euc_jp, $t_obj, 'BAD_ENCODING'); +($r === FALSE) ? print("OK_BAD_ENCODING\n") : print("NG_BAD_ENCODING\n"); + + +?> diff --git a/ext/mbstring/tests/010.phpt b/ext/mbstring/tests/010.phpt new file mode 100644 index 0000000000..880176dfa3 --- /dev/null +++ b/ext/mbstring/tests/010.phpt @@ -0,0 +1,59 @@ +--TEST-- +mb_strpos() +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +--GET-- +--FILE-- +<?php include('010.inc'); ?> +--EXPECT-- +== POSITIVE OFFSET == +10 +0 +3 +0 +34 +30 +33 +30 +== NEGATIVE OFFSET == +34 +30 +33 +30 +10 +0 +3 +0 +== 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: Notice +OK_ARRAY +ERR: Notice +OK_OBJECT +ERR: Notice +OK_BAD_ENCODING + diff --git a/ext/mbstring/tests/011.inc b/ext/mbstring/tests/011.inc new file mode 100644 index 0000000000..ae8b75d5da --- /dev/null +++ b/ext/mbstring/tests/011.inc @@ -0,0 +1,57 @@ +<?php +// TODO: Add more encodings + +//$debug=true; +ini_set('include_path','.'); +include_once('common.php'); + + +// 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 "== WITH ENCODING PARAMETER ==\n"; + +print mb_strrpos($euc_jp,'日本語', 'EUC-JP') . "\n"; +print mb_strrpos($euc_jp, '0', 'EUC-JP') . "\n"; +print mb_strrpos($euc_jp, 3, 'EUC-JP') . "\n"; +print mb_strrpos($euc_jp, 0, 'EUC-JP') . "\n"; + + +$r = mb_strrpos($euc_jp, '韓国語', 'EUC-JP'); +($r === FALSE) ? print "OK_STR\n" : print "NG_STR\n"; +$r = mb_strrpos($euc_jp, "\n", '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_strrpos($euc_jp,'日本語') . "\n"; +print mb_strrpos($euc_jp, '0') . "\n"; +print mb_strrpos($euc_jp, 3) . "\n"; +print mb_strrpos($euc_jp, 0) . "\n"; + +$r = mb_strrpos($euc_jp,'韓国語'); +($r === FALSE) ? print "OK_STR\n" : print "NG_STR\n"; +$r = mb_strrpos($euc_jp,"\n"); +($r === FALSE) ? print "OK_NEWLINE\n" : print "NG_NEWLINE\n"; + + +// Invalid Parameters +echo "== INVALID PARAMETER TEST ==\n"; + +$r = mb_strrpos($euc_jp,'','EUC-JP'); +($r === FALSE) ? print("OK_NULL\n") : print("NG_NULL\n"); +$r = mb_strrpos($euc_jp, $t_ary, 'EUC-JP'); +($r === FALSE) ? print("OK_ARRAY\n") : print("NG_ARRAY\n"); +$r = mb_strrpos($euc_jp, $t_obj, 'EUC-JP'); +($r === FALSE) ? print("OK_OBJECT\n") : print("NG_OBJECT\n"); + +//Note: Notice msg for NULL string might be better. + + +?> diff --git a/ext/mbstring/tests/011.phpt b/ext/mbstring/tests/011.phpt new file mode 100644 index 0000000000..e6ef9c68bf --- /dev/null +++ b/ext/mbstring/tests/011.phpt @@ -0,0 +1,31 @@ +--TEST-- +mb_strrpos() +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +--GET-- +--FILE-- +<?php include('011.inc'); ?> +--EXPECT-- +== WITH ENCODING PARAMETER == +34 +30 +33 +30 +OK_STR +OK_NEWLINE +== NO ENCODING PARAMETER == +34 +30 +33 +30 +OK_STR +OK_NEWLINE +== INVALID PARAMETER TEST == +ERR: Warning +OK_NULL +ERR: Notice +OK_ARRAY +ERR: Notice +OK_OBJECT + diff --git a/ext/mbstring/tests/012.inc b/ext/mbstring/tests/012.inc new file mode 100644 index 0000000000..18a9b6d91f --- /dev/null +++ b/ext/mbstring/tests/012.inc @@ -0,0 +1,19 @@ +<?php +// TODO: Add more encodings +ini_set('include_path','.'); +include_once('common.php'); + +// EUC-JP +$euc_jp = '0123この文字列は日本語です。EUC-JPを使っています。日本語は面倒臭い。'; + +print "1: ". mb_substr($euc_jp, 10, 10,'EUC-JP') . "\n"; +print "2: ". mb_substr($euc_jp, 0, 100,'EUC-JP') . "\n"; + +$str = mb_substr($euc_jp, 100, 10,'EUC-JP'); +// Note: returns last character +($str === "") ? print "3 OK\n" : print "NG: $str\n"; + +$str = mb_substr($euc_jp, -100, 10,'EUC-JP'); +($str !== "") ? print "4 OK: $str\n" : print "NG: $str\n"; + +?> diff --git a/ext/mbstring/tests/012.phpt b/ext/mbstring/tests/012.phpt new file mode 100644 index 0000000000..250e4a0ec4 --- /dev/null +++ b/ext/mbstring/tests/012.phpt @@ -0,0 +1,15 @@ +--TEST-- +mb_substr() +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +--GET-- +--FILE-- +<?php include('012.inc'); ?> +--EXPECT-- +1: 日本語です。EUC- +2: 0123この文字列は日本語です。EUC-JPを使っています。日本語は面倒臭い。 +3 OK +4 OK: 0123この文字列は + + diff --git a/ext/mbstring/tests/013.inc b/ext/mbstring/tests/013.inc new file mode 100644 index 0000000000..ed6406687e --- /dev/null +++ b/ext/mbstring/tests/013.inc @@ -0,0 +1,19 @@ +<?php +// TODO: Add more encodings +ini_set('include_path','.'); +include_once('common.php'); + +// EUC-JP +$euc_jp = '0123この文字列は日本語です。EUC-JPを使っています。日本語は面倒臭い。'; + +print mb_strcut($euc_jp, 6, 5,'EUC-JP') . "\n"; +print mb_strcut($euc_jp, 0, 100,'EUC-JP') . "\n"; + +$str = mb_strcut($euc_jp, 100, 10,'EUC-JP'); +($str === "") ? print "OK\n" : print "NG: $str\n"; + +$str = mb_strcut($euc_jp, -100, 10,'EUC-JP'); +($str !== "") ? print "OK: $str\n" : print "NG:\n"; + + +?> diff --git a/ext/mbstring/tests/013.phpt b/ext/mbstring/tests/013.phpt new file mode 100644 index 0000000000..6c3624ee1b --- /dev/null +++ b/ext/mbstring/tests/013.phpt @@ -0,0 +1,15 @@ +--TEST-- +mb_strcut() +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +--GET-- +--FILE-- +<?php include('013.inc'); ?> +--EXPECT-- +の文 +0123この文字列は日本語です。EUC-JPを使っています。日本語は面倒臭い。 +OK +OK: 0123この文 + + diff --git a/ext/mbstring/tests/014.inc b/ext/mbstring/tests/014.inc new file mode 100644 index 0000000000..14e61633a3 --- /dev/null +++ b/ext/mbstring/tests/014.inc @@ -0,0 +1,22 @@ +<?php +// TODO: Add more encoding +//$debug = true; +ini_set('include_path','.'); +include_once('common.php'); + +// EUC-JP +$euc_jp = '0123この文字列は日本語です。EUC-JPを使っています。日本語は面倒臭い。'; + +print "1: ". mb_strimwidth($euc_jp, 0, 15,'...','EUC-JP') . "\n"; +print "2: ". mb_strimwidth($euc_jp, 0, 100,'...','EUC-JP') . "\n"; +print "3: ". mb_strimwidth($euc_jp, 15, 100,'...','EUC-JP') . "\n"; +// Note: Did not start form -22 offset. Staring from 0. +print "4: ". mb_strimwidth($euc_jp,-22, 100,'...','EUC-JP') . "\n"; + +$str = mb_strimwidth($euc_jp, 100, -10,'...','EUC-JP'); +($str === "") ? print "5 OK\n" : print "NG: $str\n"; + +$str = mb_strimwidth($euc_jp, -100, 10,'...','EUC-JP'); +($str !== "") ? print "6 OK: $str\n" : print "NG: $str\n"; + +?> diff --git a/ext/mbstring/tests/014.phpt b/ext/mbstring/tests/014.phpt new file mode 100644 index 0000000000..bc27326b32 --- /dev/null +++ b/ext/mbstring/tests/014.phpt @@ -0,0 +1,17 @@ +--TEST-- +mb_strimwidth() +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +--GET-- +--FILE-- +<?php include('014.inc'); ?> +--EXPECT-- +1: 0123この文字... +2: 0123この文字列は日本語です。EUC-JPを使っています。日本語は面倒臭い。 +3: 。EUC-JPを使っています。日本語は面倒臭い。 +4: EUC-JPを使っています。日本語は面倒臭い。 +5 OK +6 OK: 0123こ... + + diff --git a/ext/mbstring/tests/015.inc b/ext/mbstring/tests/015.inc new file mode 100644 index 0000000000..ac497edef3 --- /dev/null +++ b/ext/mbstring/tests/015.inc @@ -0,0 +1,127 @@ +<?php +// TODO: Add more tests +//$debug = true; // Uncomment this line to view error/warning/notice message in *.out file +ini_set('include_path','.'); +include_once('common.php'); + +// SJIS string (BASE64 encoded) +$sjis = base64_decode('k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg=='); +// JIS string (BASE64 encoded) +$jis = base64_decode('GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg=='); +// EUC-JP string +$euc_jp = '日本語テキストです。0123456789。'; + +// Test for single scaler +echo "== SCALER TEST ==\n"; +$s = $sjis; +$encoding = mb_convert_variables('EUC-JP', 'SJIS', $s); +print("$encoding\n"); // SJIS +print("$s\n"); // Converted to EUC-JP + +$s = $jis; +$encoding = mb_convert_variables('EUC-JP', 'JIS', $s); +print("$encoding\n"); // JIS +print("$s\n"); // Converted to EUC-JP + +$s = $euc_jp; +$encoding = mb_convert_variables('SJIS', 'EUC-JP', $s); +print("$encoding\n"); // EUC-JP +print(base64_encode($s)."\n"); // Converted to SJIS (base64 encoded) + +$s = $euc_jp; +$encoding = mb_convert_variables('JIS', 'EUC-JP', $s); +print("$encoding\n"); // EUC-JP +print(base64_encode($s)."\n"); // Converted to JIS (base64 encoded) + +// Test for multiple slcaler +$s1 = $euc_jp; +$s2 = $euc_jp; +$s3 = $euc_jp; +$encoding = mb_convert_variables('EUC-JP', 'auto', $s1, $s2, $s3); +print("$encoding\n"); // EUC-JP +print("$s1$s2$s3\n"); // Converted to EUC-JP + + + +// Note: Mixing encoding in array/object is not supported? +// Test for array +echo "== ARRAY TEST ==\n"; +$a = array($s3, $s2, $s1); +$aa = $a; +$encoding = mb_convert_variables('EUC-JP', 'auto', $aa); +print("$encoding\n"); // EUC-JP +print("{$aa[0]}{$aa[1]}{$aa[2]}\n"); // Converted to EUC-JP + +$a = array($s1, $s2, $s3); +$aa = $a; +$encoding = mb_convert_variables('EUC-JP', 'auto', $aa); +print("$encoding\n"); // EUC-JP +print("{$aa[0]}{$aa[1]}{$aa[2]}\n"); // Converted to EUC-JP + + + +// Test for object +echo "== OBJECT TEST ==\n"; +class foo +{ + var $s1; + var $s2; + var $s3; + + function foo() + { + global $sjis, $jis, $euc_jp; + + $this->s1 = $euc_jp; + $this->s2 = $euc_jp; + $this->s3 = $euc_jp; + } +} + +class bar +{ + var $s1; + var $s2; + var $s3; + + function bar() + { + global $sjis, $jis, $euc_jp; + + $this->s1 = $euc_jp; + $this->s2 = $euc_jp; + $this->s3 = $euc_jp; + } +} + + +$o = new foo; +$oo = $o; +$encoding = mb_convert_variables('EUC-JP', 'auto', $oo); +print("$encoding\n"); // EUC-JP +print("{$oo->s1}{$oo->s2}{$oo->s3}\n"); // Converted to EUC-JP + +$o = new bar; +$oo = $o; +$encoding = mb_convert_variables('EUC-JP', 'auto', $oo); +print("$encoding\n"); // EUC-JP +print("{$oo->s1}{$oo->s2}{$oo->s3}\n"); // Converted to EUC-JP + + +// Test for scaler, array and object +echo "== SCALER, ARRAY AND OBJECT TEST ==\n"; + +$s1 = $euc_jp; +$s2 = $euc_jp; +$s3 = $euc_jp; +$aa = $a; +$oo = $o; + +$encoding = mb_convert_variables('EUC-JP', 'auto', $s1, $s2, $s3, $aa, $oo); +print("$encoding\n"); // EUC-JP +print("$s1$s2$s3\n"); // Converted to EUC-JP +print("{$aa[0]}{$aa[1]}{$aa[2]}\n"); // Converted to EUC-JP +print("{$oo->s1}{$oo->s2}{$oo->s3}\n"); // Converted to EUC-JP + + +?> diff --git a/ext/mbstring/tests/015.phpt b/ext/mbstring/tests/015.phpt new file mode 100644 index 0000000000..cc7b228688 --- /dev/null +++ b/ext/mbstring/tests/015.phpt @@ -0,0 +1,36 @@ +--TEST-- +mb_convert_variables() +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +--GET-- +--FILE-- +<?php include('015.inc'); ?> +--EXPECT-- +== SCALER TEST == +SJIS +日本語テキストです。0123456789。 +JIS +日本語テキストです。0123456789。 +EUC-JP +k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg== +EUC-JP +GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg== +EUC-JP +日本語テキストです。0123456789。日本語テキストです。0123456789。日本語テキストです。0123456789。 +== ARRAY TEST == +EUC-JP +日本語テキストです。0123456789。日本語テキストです。0123456789。日本語テキストです。0123456789。 +EUC-JP +日本語テキストです。0123456789。日本語テキストです。0123456789。日本語テキストです。0123456789。 +== OBJECT TEST == +EUC-JP +日本語テキストです。0123456789。日本語テキストです。0123456789。日本語テキストです。0123456789。 +EUC-JP +日本語テキストです。0123456789。日本語テキストです。0123456789。日本語テキストです。0123456789。 +== SCALER, ARRAY AND OBJECT TEST == +EUC-JP +日本語テキストです。0123456789。日本語テキストです。0123456789。日本語テキストです。0123456789。 +日本語テキストです。0123456789。日本語テキストです。0123456789。日本語テキストです。0123456789。 +日本語テキストです。0123456789。日本語テキストです。0123456789。日本語テキストです。0123456789。 + diff --git a/ext/mbstring/tests/016.inc b/ext/mbstring/tests/016.inc new file mode 100644 index 0000000000..321bbeba83 --- /dev/null +++ b/ext/mbstring/tests/016.inc @@ -0,0 +1,90 @@ +<?php +// TODO: Add more tests +//$debug = true; // Uncomment this line to view error/warning/notice message in *.out file +ini_set('include_path','.'); +include_once('common.php'); + +// SJIS string (BASE64 encoded) +$sjis = base64_decode('k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg=='); +// JIS string (BASE64 encoded) +$jis = base64_decode('GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg=='); +// EUC-JP string +$euc_jp = '日本語テキストです。0123456789。'; + +// Test with sigle "form encoding" +// Note: For some reason it complains, results are differ. Not reserched. +echo "== BASIC TEST ==\n"; +$s = $sjis; +$s = mb_convert_encoding($s, 'EUC-JP', 'SJIS'); +print("EUC-JP: $s\n"); // EUC-JP + +$s = $jis; +$s = mb_convert_encoding($s, 'EUC-JP', 'JIS'); +print("EUC-JP: $s\n"); // EUC-JP + +$s = $euc_jp; +$s = mb_convert_encoding($s, 'SJIS', 'EUC-JP'); +print("SJIS: ".base64_encode($s)."\n"); // SJIS + +$s = $euc_jp; +$s = mb_convert_encoding($s, 'JIS', 'EUC-JP'); +print("JIS: ".base64_encode($s)."\n"); // JIS + + + +// Using Encoding List Array +echo "== ARRAY ENCODING LIST ==\n"; + +$a = array(0=>'UTF-8',1=>'EUC-JP', 2=>'SJIS', 3=>'JIS'); + +$s = $jis; +$s = mb_convert_encoding($s, 'EUC-JP', $a); +print("EUC-JP: $s\n"); // EUC-JP + +$s = $euc_jp; +$s = mb_convert_encoding($s, 'SJIS', $a); +print("SJIS: ".base64_encode($s)."\n"); // SJIS + +$s = $euc_jp; +$s = mb_convert_encoding($s, 'JIS', $a); +print("JIS: ".base64_encode($s)."\n"); // JIS + + +// Using Detect Order +echo "== DETECT ORDER ==\n"; + +mb_detect_order('auto'); + + +$s = $jis; +$s = mb_convert_encoding($s, 'EUC-JP'); +print("EUC-JP: $s\n"); // EUC-JP + +$s = $euc_jp; +$s = mb_convert_encoding($s, 'SJIS'); +print("SJIS: ".base64_encode($s)."\n"); // SJIS + +$s = $euc_jp; +$s = mb_convert_encoding($s, 'JIS'); +print("JIS: ".base64_encode($s)."\n"); // JIS + + +// Invalid(?) Parameters +echo "== INVALID PARAMETER ==\n"; + +$s = mb_convert_encoding(1234, 'EUC-JP'); +print("INT: $s\n"); // EUC-JP + +$s = mb_convert_encoding('', 'EUC-JP'); +print("EUC-JP: $s\n"); // SJIS + +$s = $euc_jp; +$s = mb_convert_encoding($s, 'BAD'); +print("BAD: $s\n"); // BAD + +$s = $euc_jp; +$s = mb_convert_encoding($s); +print("MP: $s\n"); // Missing parameter + + +?> diff --git a/ext/mbstring/tests/016.phpt b/ext/mbstring/tests/016.phpt new file mode 100644 index 0000000000..21baa3ce7c --- /dev/null +++ b/ext/mbstring/tests/016.phpt @@ -0,0 +1,31 @@ +--TEST-- +mb_convert_encoding() +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +--GET-- +--FILE-- +<?php include('016.inc'); ?> +--EXPECT-- +== BASIC TEST == +EUC-JP: 日本語テキストです。0123456789。 +EUC-JP: 日本語テキストです。0123456789。 +SJIS: k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg== +JIS: GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg== +== ARRAY ENCODING LIST == +EUC-JP: 日本語テキストです。0123456789。 +SJIS: k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg== +JIS: GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg== +== DETECT ORDER == +EUC-JP: 日本語テキストです。0123456789。 +SJIS: k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg== +JIS: GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg== +== INVALID PARAMETER == +INT: 1234 +EUC-JP: +ERR: Warning +BAD: +ERR: Warning +MP: + + diff --git a/ext/mbstring/tests/017.inc b/ext/mbstring/tests/017.inc new file mode 100644 index 0000000000..c897c93b39 --- /dev/null +++ b/ext/mbstring/tests/017.inc @@ -0,0 +1,91 @@ +<?php +// TODO: Add more tests +//$debug = true; // Uncomment this line to view error/warning/notice message in *.out file +ini_set('include_path','.'); +include_once('common.php'); + +// SJIS string (BASE64 encoded) +$sjis = base64_decode('k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg=='); +// JIS string (BASE64 encoded) +$jis = base64_decode('GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg=='); +// EUC-JP string +$euc_jp = '日本語テキストです。0123456789。'; + +// Test with sigle "form encoding" +// Note: For some reason it complains, results are differ. Not reserched. +echo "== BASIC TEST ==\n"; +$s = $sjis; +$s = mb_detect_encoding($s, 'SJIS'); +print("SJIS: $s\n"); + +$s = $jis; +$s = mb_detect_encoding($s, 'JIS'); +print("JIS: $s\n"); + +$s = $euc_jp; +$s = mb_detect_encoding($s, 'UTF-8,EUC-JP,JIS'); +print("EUC-JP: $s\n"); + +$s = $euc_jp; +$s = mb_detect_encoding($s, 'JIS,EUC-JP'); +print("EUC-JP: $s\n"); + + + +// Using Encoding List Array +echo "== ARRAY ENCODING LIST ==\n"; + +$a = array(0=>'UTF-8',1=>'EUC-JP', 2=>'SJIS', 3=>'JIS'); + +// Note: Due to detect order, detected as UTF-8 +$s = $jis; +$s = mb_detect_encoding($s, $a); +print("JIS: $s\n"); + +$s = $euc_jp; +$s = mb_detect_encoding($s, $a); +print("EUC-JP: $s\n"); + +$s = $sjis; +$s = mb_detect_encoding($s, $a); +print("SJIS: $s\n"); + + +// Using Detect Order +echo "== DETECT ORDER ==\n"; + +mb_detect_order('auto'); + + +$s = $jis; +$s = mb_detect_encoding($s); +print("JIS: $s\n"); + +$s = $euc_jp; +$s = mb_detect_encoding($s); +print("EUC-JP: $s\n"); + +$s = $sjis; +$s = mb_detect_encoding($s); +print("SJIS: $s\n"); + + +// Invalid(?) Parameters +echo "== INVALID PARAMETER ==\n"; + +$s = mb_detect_encoding(1234, 'EUC-JP'); +print("INT: $s\n"); // EUC-JP + +$s = mb_detect_encoding('', 'EUC-JP'); +print("EUC-JP: $s\n"); // SJIS + +$s = $euc_jp; +$s = mb_detect_encoding($s, 'BAD'); +print("BAD: $s\n"); // BAD + +$s = $euc_jp; +$s = mb_detect_encoding(); +print("MP: $s\n"); // Missing parameter + + +?> diff --git a/ext/mbstring/tests/017.phpt b/ext/mbstring/tests/017.phpt new file mode 100644 index 0000000000..5f8528e5f7 --- /dev/null +++ b/ext/mbstring/tests/017.phpt @@ -0,0 +1,30 @@ +--TEST-- +mb_detect_encoding() +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +--GET-- +--FILE-- +<?php include('017.inc'); ?> +--EXPECT-- +== BASIC TEST == +SJIS: SJIS +JIS: JIS +EUC-JP: EUC-JP +EUC-JP: EUC-JP +== ARRAY ENCODING LIST == +JIS: UTF-8 +EUC-JP: EUC-JP +SJIS: SJIS +== DETECT ORDER == +JIS: JIS +EUC-JP: EUC-JP +SJIS: SJIS +== INVALID PARAMETER == +INT: EUC-JP +EUC-JP: EUC-JP +ERR: Warning +BAD: EUC-JP +ERR: Warning +MP: + diff --git a/ext/mbstring/tests/018.inc b/ext/mbstring/tests/018.inc new file mode 100644 index 0000000000..b328a71ea1 --- /dev/null +++ b/ext/mbstring/tests/018.inc @@ -0,0 +1,24 @@ +<?php +// TODO: Add more encoding, strings..... +//$debug = true; +ini_set('include_path','.'); +include_once('common.php'); + +// EUC-JP +$euc_jp = '0123この文字列は日本語です。EUC-JPを使っています。日本語は面倒臭い。'; + +print "1: ". mb_strwidth($euc_jp, 'EUC-JP') . "\n"; +/* + +print "2: ". mb_strwidth($euc_jp, 'EUC-JP') . "\n"; +print "3: ". mb_strwidth($euc_jp, 'EUC-JP') . "\n"; +// Note: Did not start form -22 offset. Staring from 0. +print "4: ". mb_strwidth($euc_jp, 'EUC-JP') . "\n"; + +$str = mb_strwidth($euc_jp, 100, -10,'...','EUC-JP'); +($str === "") ? print "5 OK\n" : print "NG: $str\n"; + +$str = mb_strwidth($euc_jp, -100, 10,'...','EUC-JP'); +($str !== "") ? print "6 OK: $str\n" : print "NG: $str\n"; +*/ +?> diff --git a/ext/mbstring/tests/018.phpt b/ext/mbstring/tests/018.phpt new file mode 100644 index 0000000000..b212b84934 --- /dev/null +++ b/ext/mbstring/tests/018.phpt @@ -0,0 +1,10 @@ +--TEST-- +mb_strwidth() +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +--GET-- +--FILE-- +<?php include('018.inc'); ?> +--EXPECT-- +1: 68 diff --git a/ext/mbstring/tests/019.inc b/ext/mbstring/tests/019.inc new file mode 100644 index 0000000000..556d02d6aa --- /dev/null +++ b/ext/mbstring/tests/019.inc @@ -0,0 +1,68 @@ +<?php +// TODO: Add more encodings + +//$debug=true; +ini_set('include_path','.'); +include_once('common.php'); + +// restore detect_order to 'auto' +mb_detect_order('auto'); + +// Test string +$euc_jp = '0123この文字列は日本語です。EUC-JPを使っています。0123日本語は面倒臭い。'; +$ascii = 'abcdefghijklmnopqrstuvwxyz;]=#0123456789'; + +// ASCII +echo "== ASCII ==\n"; +print strlen($ascii,'ASCII') . "\n"; +print strlen($ascii) . "\n"; + +// EUC-JP +echo "== EUC-JP ==\n"; +print strlen($euc_jp,'EUC-JP') . "\n"; +mb_internal_encoding('EUC-JP') or print("mb_internal_encoding() failed\n"); +print strlen($euc_jp) . "\n"; + +// SJIS +echo "== SJIS ==\n"; +$sjis = mb_convert_encoding($euc_jp, 'SJIS'); +print strlen($sjis,'SJIS') . "\n"; +mb_internal_encoding('SJIS') or print("mb_internal_encoding() failed\n"); +print strlen($sjis) . "\n"; + +// JIS +// Note: either convert_encoding or strlen has problem +echo "== JIS ==\n"; +$jis = mb_convert_encoding($euc_jp, 'JIS'); +print strlen($jis,'JIS') . "\n"; +mb_internal_encoding('JIS') or print("mb_internal_encoding() failed\n"); +print strlen($jis) . "\n"; + +// UTF-8 +// Note: either convert_encoding or strlen has problem +echo "== UTF-8 ==\n"; +$utf8 = mb_convert_encoding($euc_jp, 'UTF-8'); +print strlen($utf8,'UTF-8') . "\n"; +mb_internal_encoding('UTF-8') or print("mb_internal_encoding() failed\n"); +print strlen($utf8) . "\n"; + + +// Wrong Parameters +echo "== WRONG PARAMETERS ==\n"; +// Array +// Note: PHP Notice, but returns some value +$r = strlen($t_ary); +echo $r."\n"; +// Object +// Note: PHP Notice, but returns some value +$r = strlen($t_obj); +echo $r."\n"; +// Wrong encoding +mb_internal_encoding('EUC-JP'); +$r = strlen($euc_jp, 'BAD_NAME'); +echo $r."\n"; + + + + +?> diff --git a/ext/mbstring/tests/019.phpt b/ext/mbstring/tests/019.phpt new file mode 100644 index 0000000000..3c23431595 --- /dev/null +++ b/ext/mbstring/tests/019.phpt @@ -0,0 +1,38 @@ +--TEST-- +strlen() +--SKIPIF-- +<?php include('skipif.inc'); ?> +--POST-- +--GET-- +--FILE-- +<?php include('019.inc'); ?> +--EXPECT-- +== ASCII == +ERR: Warning + +40 +== EUC-JP == +ERR: Warning + +72 +== SJIS == +ERR: Warning + +72 +== JIS == +ERR: Warning + +121 +== UTF-8 == +ERR: Warning + +174 +== WRONG PARAMETERS == +ERR: Notice +5 +ERR: Notice +6 +ERR: Warning + + + diff --git a/ext/mbstring/tests/common.php b/ext/mbstring/tests/common.php new file mode 100644 index 0000000000..d4d1d9a495 --- /dev/null +++ b/ext/mbstring/tests/common.php @@ -0,0 +1,53 @@ +<?php +/* + * Common definition and Settings + */ + +// Custom Error Hanlder for testing +function test_error_handler($err_no, $err_msg, $filename, $linenum, $vars) { + global $debug; + + $err_type = array ( + 1 => "Error", // E_ERROR + 2 => "Warning", // E_WARINING + 4 => "Parsing Error", // E_PARSE + 8 => "Notice", // E_NOTICE + 16 => "Core Error", // E_CORE_ERROR + 32 => "Core Warning", // E_CORE_WARNING + 64 => "Compile Error", // E_COMPILE_ERROR + 128 => "Compile Warning", // E_COMPILE_WARNING + 256 => "User Error", // E_USER_ERROR + 512 => "User Warning", // E_USER_WARMING + 1024=> "User Notice" // E_USER_NOTICE + ); + + if (!empty($debug)) { + printf("%s: %s (%d)\n", $err_type[$err_no], $err_msg, $linenum); + } + else { + printf("ERR: %s\n",$err_type[$err_no]); + } +} + +set_error_handler('test_error_handler'); + + +// Var def for testing +$t_ary = array( + 's1' => '日本語EUC-JPの文字列', + 's2' => 'English Text' + ); + +class tc +{ + var $s1 = '日本語EUC-JPの文字列'; + var $s2 = 'English Text'; + + function tc() + { + } +} + +$t_obj = new tc; + +?>
\ No newline at end of file diff --git a/ext/mbstring/tests/skipif.inc b/ext/mbstring/tests/skipif.inc new file mode 100644 index 0000000000..5ce1bbb537 --- /dev/null +++ b/ext/mbstring/tests/skipif.inc @@ -0,0 +1,11 @@ +<?php +// This script prints "skip" if condition does not meet. + +if (!extension_loaded("mbstring") && ini_get("enable_dl")) { + $dlext = (substr(PHP_OS, 0, 3) == "WIN") ? ".dll" : ".so"; + @dl("iconv$dlext"); +} +if (!extension_loaded("mbstring")) { + die("skip\n"); +} +?> |