Annotation of embedaddon/php/ext/mbstring/tests/mb_strpos.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: mb_strpos() 
                      3: --SKIPIF--
                      4: <?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
                      5: --FILE--
                      6: <?php
                      7: // TODO: Add more encodings
                      8: 
                      9: //$debug=true;
                     10: ini_set('include_path','.');
                     11: include_once('common.inc');
                     12: 
                     13: 
                     14: // Test string
                     15: $euc_jp = b'0123この文字列は日本語です。EUC-JPを使っています。0123日本語は面倒臭い。';
                     16: 
                     17: // EUC-JP - With encoding parameter
                     18: mb_internal_encoding('UTF-8') or print("mb_internal_encoding() failed\n");
                     19: 
                     20: echo  "== POSITIVE OFFSET ==\n";
                     21: print  mb_strpos($euc_jp, b'日本語', 0, 'EUC-JP') . "\n";
                     22: print  mb_strpos($euc_jp, b'0', 0,     'EUC-JP') . "\n";
                     23: print  mb_strpos($euc_jp, 3, 0,       'EUC-JP') . "\n";
                     24: print  mb_strpos($euc_jp, 0, 0,       'EUC-JP') . "\n";
                     25: print  mb_strpos($euc_jp, b'日本語', 15, 'EUC-JP') . "\n";
                     26: print  mb_strpos($euc_jp, b'0', 15,     'EUC-JP') . "\n";
                     27: print  mb_strpos($euc_jp, 3, 15,       'EUC-JP') . "\n";
                     28: print  mb_strpos($euc_jp, 0, 15,       'EUC-JP') . "\n";
                     29: 
                     30: // Negative offset
                     31: // Note: PHP Warning - offset is negative.
                     32: // Note: For offset(-15). It does not return position of latter string. (ie the same result as -50)
                     33: echo "== NEGATIVE OFFSET ==\n";
                     34: $r = mb_strpos($euc_jp, b'日本語', -15, 'EUC-JP');
                     35: ($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
                     36: $r = mb_strpos($euc_jp, b'0', -15,     'EUC-JP');
                     37: ($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
                     38: $r = mb_strpos($euc_jp, 3, -15,       'EUC-JP');
                     39: ($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
                     40: $r = mb_strpos($euc_jp, 0, -15,       'EUC-JP');
                     41: ($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
                     42: $r = mb_strpos($euc_jp, b'日本語', -50, 'EUC-JP');
                     43: ($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
                     44: $r = mb_strpos($euc_jp, b'0', -50,     'EUC-JP');
                     45: ($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
                     46: $r = mb_strpos($euc_jp, 3, -50,       'EUC-JP');
                     47: ($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
                     48: $r = mb_strpos($euc_jp, 0, -50,       'EUC-JP');
                     49: ($r === FALSE) ? print "OK_NEGATIVE_OFFSET\n" : print "NG_NEGATIVE_OFFSET\n";
                     50: 
                     51: // Out of range - should return false
                     52: print ("== OUT OF RANGE ==\n");
                     53: $r =  mb_strpos($euc_jp, b'日本語', 40, 'EUC-JP');
                     54: ($r === FALSE) ? print "OK_OUT_RANGE\n"     : print "NG_OUT_RANGE\n";
                     55: $r =  mb_strpos($euc_jp, b'0', 40,     'EUC-JP');
                     56: ($r === FALSE) ? print "OK_OUT_RANGE\n"     : print "NG_OUT_RANGE\n";
                     57: $r =  mb_strpos($euc_jp, 3, 40,       'EUC-JP');
                     58: ($r === FALSE) ? print "OK_OUT_RANGE\n"     : print "NG_OUT_RANGE\n";
                     59: $r =   mb_strpos($euc_jp, 0, 40,       'EUC-JP');
                     60: ($r === FALSE) ? print "OK_OUT_RANGE\n"     : print "NG_OUT_RANGE\n";
                     61: // Note: Returned NULL string
                     62: // echo gettype($r). ' val '. $r ."\n"; 
                     63: 
                     64: 
                     65: // Non-existent
                     66: echo "== NON-EXISTENT ==\n";
                     67: $r = mb_strpos($euc_jp, b'韓国語', 0, 'EUC-JP');
                     68: ($r === FALSE) ? print "OK_STR\n"     : print "NG_STR\n";
                     69: $r = mb_strpos($euc_jp, b"\n",     0, 'EUC-JP');
                     70: ($r === FALSE) ? print "OK_NEWLINE\n" : print "NG_NEWLINE\n";
                     71: 
                     72: 
                     73: // EUC-JP - No encoding parameter
                     74: echo "== NO ENCODING PARAMETER ==\n";
                     75: mb_internal_encoding('EUC-JP')  or print("mb_internal_encoding() failed\n");
                     76: 
                     77: print  mb_strpos($euc_jp, b'日本語', 0) . "\n";
                     78: print  mb_strpos($euc_jp, b'0', 0) . "\n";
                     79: print  mb_strpos($euc_jp, 3, 0) . "\n";
                     80: print  mb_strpos($euc_jp, 0, 0) . "\n";
                     81: 
                     82: $r = mb_strpos($euc_jp, b'韓国語', 0);
                     83: ($r === FALSE) ? print "OK_STR\n"     : print "NG_STR\n";
                     84: $r = mb_strpos($euc_jp, b"\n", 0);
                     85: ($r === FALSE) ? print "OK_NEWLINE\n" : print "NG_NEWLINE\n";
                     86: 
                     87: // EUC-JP - No offset and encoding parameter
                     88: echo "== NO OFFSET AND ENCODING PARAMETER ==\n";
                     89: mb_internal_encoding('EUC-JP')  or print("mb_internal_encoding() failed\n");
                     90: 
                     91: print  mb_strpos($euc_jp, b'日本語') . "\n";
                     92: print  mb_strpos($euc_jp, b'0') . "\n";
                     93: print  mb_strpos($euc_jp, 3) . "\n";
                     94: print  mb_strpos($euc_jp, 0) . "\n";
                     95: 
                     96: $r = mb_strpos($euc_jp, b'韓国語');
                     97: ($r === FALSE) ? print "OK_STR\n"     : print "NG_STR\n";
                     98: $r = mb_strpos($euc_jp, b"\n");
                     99: ($r === FALSE) ? print "OK_NEWLINE\n" : print "NG_NEWLINE\n";
                    100: 
                    101: 
                    102: // Invalid Parameters
                    103: echo "== INVALID PARAMETER TEST ==\n";
                    104: 
                    105: $r = mb_strpos($euc_jp,'','EUC-JP');
                    106: ($r === FALSE) ? print("OK_NULL\n") : print("NG_NULL\n");
                    107: $r = mb_strpos($euc_jp, $t_ary, 'EUC-JP');
                    108: ($r === FALSE) ? print("OK_ARRAY\n") : print("NG_ARRAY\n");
                    109: $r = mb_strpos($euc_jp, $t_obj, 'EUC-JP');
                    110: ($r === FALSE) ? print("OK_OBJECT\n") : print("NG_OBJECT\n");
                    111: $r = mb_strpos($euc_jp, $t_obj, 'BAD_ENCODING');
                    112: ($r === FALSE) ? print("OK_BAD_ENCODING\n") : print("NG_BAD_ENCODING\n");
                    113: 
                    114: 
                    115: ?>
                    116: 
                    117: --EXPECT--
                    118: == POSITIVE OFFSET ==
                    119: 10
                    120: 0
                    121: 3
                    122: 0
                    123: 34
                    124: 30
                    125: 33
                    126: 30
                    127: == NEGATIVE OFFSET ==
                    128: ERR: Warning
                    129: OK_NEGATIVE_OFFSET
                    130: ERR: Warning
                    131: OK_NEGATIVE_OFFSET
                    132: ERR: Warning
                    133: OK_NEGATIVE_OFFSET
                    134: ERR: Warning
                    135: OK_NEGATIVE_OFFSET
                    136: ERR: Warning
                    137: OK_NEGATIVE_OFFSET
                    138: ERR: Warning
                    139: OK_NEGATIVE_OFFSET
                    140: ERR: Warning
                    141: OK_NEGATIVE_OFFSET
                    142: ERR: Warning
                    143: OK_NEGATIVE_OFFSET
                    144: == OUT OF RANGE ==
                    145: OK_OUT_RANGE
                    146: OK_OUT_RANGE
                    147: OK_OUT_RANGE
                    148: OK_OUT_RANGE
                    149: == NON-EXISTENT ==
                    150: OK_STR
                    151: OK_NEWLINE
                    152: == NO ENCODING PARAMETER ==
                    153: 10
                    154: 0
                    155: 3
                    156: 0
                    157: OK_STR
                    158: OK_NEWLINE
                    159: == NO OFFSET AND ENCODING PARAMETER ==
                    160: 10
                    161: 0
                    162: 3
                    163: 0
                    164: OK_STR
                    165: OK_NEWLINE
                    166: == INVALID PARAMETER TEST ==
                    167: ERR: Warning
                    168: OK_NULL
                    169: ERR: Warning
                    170: OK_ARRAY
                    171: ERR: Warning
                    172: OK_OBJECT
                    173: ERR: Warning
                    174: OK_BAD_ENCODING
                    175: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>