]> granicus.if.org Git - php/commitdiff
Add mbstring tests
authorYasuo Ohgaki <yohgaki@php.net>
Sat, 2 Mar 2002 10:44:57 +0000 (10:44 +0000)
committerYasuo Ohgaki <yohgaki@php.net>
Sat, 2 Mar 2002 10:44:57 +0000 (10:44 +0000)
39 files changed:
ext/mbstring/tests/001.phpt [new file with mode: 0644]
ext/mbstring/tests/002.inc [new file with mode: 0644]
ext/mbstring/tests/002.phpt [new file with mode: 0644]
ext/mbstring/tests/003.inc [new file with mode: 0644]
ext/mbstring/tests/003.phpt [new file with mode: 0644]
ext/mbstring/tests/004.inc [new file with mode: 0644]
ext/mbstring/tests/004.phpt [new file with mode: 0644]
ext/mbstring/tests/005.inc [new file with mode: 0644]
ext/mbstring/tests/005.phpt [new file with mode: 0644]
ext/mbstring/tests/006.inc [new file with mode: 0644]
ext/mbstring/tests/006.phpt [new file with mode: 0644]
ext/mbstring/tests/007.inc [new file with mode: 0644]
ext/mbstring/tests/007.phpt [new file with mode: 0644]
ext/mbstring/tests/008.inc [new file with mode: 0644]
ext/mbstring/tests/008.phpt [new file with mode: 0644]
ext/mbstring/tests/009.inc [new file with mode: 0644]
ext/mbstring/tests/009.phpt [new file with mode: 0644]
ext/mbstring/tests/010.inc [new file with mode: 0644]
ext/mbstring/tests/010.phpt [new file with mode: 0644]
ext/mbstring/tests/011.inc [new file with mode: 0644]
ext/mbstring/tests/011.phpt [new file with mode: 0644]
ext/mbstring/tests/012.inc [new file with mode: 0644]
ext/mbstring/tests/012.phpt [new file with mode: 0644]
ext/mbstring/tests/013.inc [new file with mode: 0644]
ext/mbstring/tests/013.phpt [new file with mode: 0644]
ext/mbstring/tests/014.inc [new file with mode: 0644]
ext/mbstring/tests/014.phpt [new file with mode: 0644]
ext/mbstring/tests/015.inc [new file with mode: 0644]
ext/mbstring/tests/015.phpt [new file with mode: 0644]
ext/mbstring/tests/016.inc [new file with mode: 0644]
ext/mbstring/tests/016.phpt [new file with mode: 0644]
ext/mbstring/tests/017.inc [new file with mode: 0644]
ext/mbstring/tests/017.phpt [new file with mode: 0644]
ext/mbstring/tests/018.inc [new file with mode: 0644]
ext/mbstring/tests/018.phpt [new file with mode: 0644]
ext/mbstring/tests/019.inc [new file with mode: 0644]
ext/mbstring/tests/019.phpt [new file with mode: 0644]
ext/mbstring/tests/common.php [new file with mode: 0644]
ext/mbstring/tests/skipif.inc [new file with mode: 0644]

diff --git a/ext/mbstring/tests/001.phpt b/ext/mbstring/tests/001.phpt
new file mode 100644 (file)
index 0000000..1eb68a3
--- /dev/null
@@ -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 (file)
index 0000000..241b783
--- /dev/null
@@ -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 (file)
index 0000000..a0c8c25
--- /dev/null
@@ -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 (file)
index 0000000..944058c
--- /dev/null
@@ -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 (file)
index 0000000..7073be6
--- /dev/null
@@ -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 (file)
index 0000000..271a348
--- /dev/null
@@ -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 (file)
index 0000000..31ccd4a
--- /dev/null
@@ -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 (file)
index 0000000..2aaaf88
--- /dev/null
@@ -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 (file)
index 0000000..7c0dd7a
--- /dev/null
@@ -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 (file)
index 0000000..7da2af0
--- /dev/null
@@ -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 (file)
index 0000000..da4f543
--- /dev/null
@@ -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 (file)
index 0000000..87e46da
--- /dev/null
@@ -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 (file)
index 0000000..447243a
--- /dev/null
@@ -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 (file)
index 0000000..5a52473
--- /dev/null
@@ -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 (file)
index 0000000..b84a027
--- /dev/null
@@ -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 (file)
index 0000000..aabc8da
--- /dev/null
@@ -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 (file)
index 0000000..5e1ae42
--- /dev/null
@@ -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 (file)
index 0000000..f4493a5
--- /dev/null
@@ -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 (file)
index 0000000..880176d
--- /dev/null
@@ -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 (file)
index 0000000..ae8b75d
--- /dev/null
@@ -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 (file)
index 0000000..e6ef9c6
--- /dev/null
@@ -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 (file)
index 0000000..18a9b6d
--- /dev/null
@@ -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 (file)
index 0000000..250e4a0
--- /dev/null
@@ -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 (file)
index 0000000..ed64066
--- /dev/null
@@ -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 (file)
index 0000000..6c3624e
--- /dev/null
@@ -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 (file)
index 0000000..14e6163
--- /dev/null
@@ -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 (file)
index 0000000..bc27326
--- /dev/null
@@ -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 (file)
index 0000000..ac497ed
--- /dev/null
@@ -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 = 'ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£';
+
+// 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 (file)
index 0000000..cc7b228
--- /dev/null
@@ -0,0 +1,36 @@
+--TEST--
+mb_convert_variables()
+--SKIPIF--
+<?php include('skipif.inc'); ?>
+--POST--
+--GET--
+--FILE--
+<?php include('015.inc'); ?>
+--EXPECT--
+== SCALER TEST ==
+SJIS
+ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£
+JIS
+ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£
+EUC-JP
+k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg==
+EUC-JP
+GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg==
+EUC-JP
+ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£
+== ARRAY TEST ==
+EUC-JP
+ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£
+EUC-JP
+ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£
+== OBJECT TEST ==
+EUC-JP
+ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£
+EUC-JP
+ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£
+== SCALER, ARRAY AND OBJECT TEST ==
+EUC-JP
+ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£
+ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£
+ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£
+
diff --git a/ext/mbstring/tests/016.inc b/ext/mbstring/tests/016.inc
new file mode 100644 (file)
index 0000000..321bbeb
--- /dev/null
@@ -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 = 'ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£';
+
+// 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 (file)
index 0000000..21baa3c
--- /dev/null
@@ -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: ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£
+EUC-JP: ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£
+SJIS: k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg==
+JIS: GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg==
+== ARRAY ENCODING LIST ==
+EUC-JP: ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£
+SJIS: k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg==
+JIS: GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg==
+== DETECT ORDER ==
+EUC-JP: ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£
+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 (file)
index 0000000..c897c93
--- /dev/null
@@ -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 = 'ÆüËܸì¥Æ¥­¥¹¥È¤Ç¤¹¡£01234£µ£¶£·£¸£¹¡£';
+
+// 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 (file)
index 0000000..5f8528e
--- /dev/null
@@ -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 (file)
index 0000000..b328a71
--- /dev/null
@@ -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 (file)
index 0000000..b212b84
--- /dev/null
@@ -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 (file)
index 0000000..556d02d
--- /dev/null
@@ -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 (file)
index 0000000..3c23431
--- /dev/null
@@ -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 (file)
index 0000000..d4d1d9a
--- /dev/null
@@ -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 (file)
index 0000000..5ce1bbb
--- /dev/null
@@ -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");
+}
+?>