summaryrefslogtreecommitdiff
path: root/ext/mbstring/tests/mb_stripos_basic.phpt
blob: bb33bb10763390864c0ba0cf7d5c74c962c2dea0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
--TEST--
Test mb_stripos() function : basic functionality
--SKIPIF--
<?php
extension_loaded('mbstring') or die('skip');
function_exists('mb_stripos') or die("skip mb_stripos() is not available in this build");
?>
--FILE--
<?php
/* Prototype  : int mb_stripos(string haystack, string needle [, int offset [, string encoding]])
 * Description: Finds position of first occurrence of a string within another, case insensitive 
 * Source code: ext/mbstring/mbstring.c
 * Alias to functions: 
 */

/*
 * Test basic functionality of mb_stripos with ASCII and multibyte characters
 */

echo "*** Testing mb_stripos() : basic functionality***\n";

mb_internal_encoding('UTF-8');

//ascii strings
$ascii_haystacks = array(
   b'abc defabc   def',
   b'ABC DEFABC   DEF',
   b'Abc dEFaBC   Def',
);

$ascii_needles = array(
   // 4 good ones
   b'DE',
   b'de',
   b'De',
   b'dE',
   
   //flag a swap between good and bad
   '!', 
   
   // 4 bad ones
   b'df',
   b'Df',
   b'dF', 
   b'DF'
);

//greek strings in UTF-8
$greek_lower = base64_decode('zrHOss6zzrTOtc62zrfOuM65zrrOu868zr3Ovs6/z4DPgc+Dz4TPhc+Gz4fPiM+J');
$greek_upper = base64_decode('zpHOks6TzpTOlc6WzpfOmM6ZzprOm86czp3Ons6fzqDOoc6jzqTOpc6mzqfOqM6p');
$greek_mixed = base64_decode('zrHOss6TzpTOlc6WzpfOmM65zrrOu868zr3Ovs6fzqDOoc6jzqTOpc+Gz4fPiM+J');
$greek_haystacks = array($greek_lower, $greek_upper, $greek_mixed);

$greek_nlower = base64_decode('zrzOvc6+zr8=');
$greek_nupper = base64_decode('zpzOnc6ezp8=');
$greek_nmixed1 = base64_decode('zpzOnc6+zr8=');
$greek_nmixed2 = base64_decode('zrzOvc6+zp8=');

$greek_blower = base64_decode('zpzOns6f');
$greek_bupper = base64_decode('zrzOvs6/');
$greek_bmixed1 = base64_decode('zpzOvs6/');
$greek_bmixed2 = base64_decode('zrzOvs6f');
$greek_needles = array(
   // 4 good ones
   $greek_nlower, $greek_nupper, $greek_nmixed1, $greek_nmixed2,
   
   '!', // used to flag a swap between good and bad
   
   // 4 bad ones
   $greek_blower, $greek_bupper, $greek_bmixed1, $greek_bmixed2,   
);

// try the basic options
echo "\n -- ASCII Strings, needle should be found --\n";
foreach ($ascii_needles as $needle) {
   if ($needle == '!') {
      echo "\n -- ASCII Strings, needle should not be found --\n";
   }
   else {
      foreach ($ascii_haystacks as $haystack) {
         var_dump(mb_stripos($haystack, $needle));
      }
   }   
}

echo "\n -- Greek Strings, needle should be found --\n";
foreach ($greek_needles as $needle) {
   if ($needle == '!') {
      echo "\n -- ASCII Strings, needle should not be found --\n";
   }
   else {
      foreach ($greek_haystacks as $haystack) {
         var_dump(mb_stripos($haystack, $needle));
      }
   }   
}

echo "Done";
?>
--EXPECTF--
*** Testing mb_stripos() : basic functionality***

 -- ASCII Strings, needle should be found --
int(4)
int(4)
int(4)
int(4)
int(4)
int(4)
int(4)
int(4)
int(4)
int(4)
int(4)
int(4)

 -- ASCII Strings, needle should not be found --
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)

 -- Greek Strings, needle should be found --
int(11)
int(11)
int(11)
int(11)
int(11)
int(11)
int(11)
int(11)
int(11)
int(11)
int(11)
int(11)

 -- ASCII Strings, needle should not be found --
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
Done