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>