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