1--TEST--
2mb_ucfirst(), mb_lcfirst functions tests
3--EXTENSIONS--
4mbstring
5--FILE--
6<?php
7mb_internal_encoding("UTF-8");
8
9function test_ascii_mb_ucfirst() {
10	for ($i = 0; $i < 128; $i++) {
11		if ($i >= 97 && $i <= 122) { /* a to z */
12			if (mb_ucfirst(chr($i)) !== chr($i - (97 - 65))) {
13				echo "mb_ucfirst compare failed: " . chr($i) . "\n";
14			}
15		} else {
16			if (mb_ucfirst(chr($i)) !== chr($i)) {
17				echo "mb_ucfirst compare failed: " . chr($i) . "\n";
18			}
19		}
20	}
21	echo "Done mb_ucfirst\n";
22}
23
24function test_ascii_mb_lcfirst() {
25	for ($i = 0; $i < 128; $i++) {
26		if ($i >= 65 && $i <= 90) { /* A to Z */
27			if (mb_lcfirst(chr($i)) !== chr($i + (97 - 65))) {
28				echo "mb_lcfirst compare failed: " . chr($i) . "\n";
29				return;
30			}
31		} else {
32			if (mb_lcfirst(chr($i)) !== chr($i)) {
33				echo "mb_lcfirst compare failed: " . chr($i) . "\n";
34				return;
35			}
36		}
37	}
38	echo "Done mb_lcfirst\n";
39}
40
41echo "== Empty String ==\n";
42var_dump(mb_ucfirst(""));
43var_dump(mb_lcfirst(""));
44echo "== ASCII ==\n";
45test_ascii_mb_ucfirst();
46test_ascii_mb_lcfirst();
47echo "== mb_ucfirst ==\n";
48var_dump(mb_ucfirst("ab"));
49var_dump(mb_ucfirst("ABS"));
50var_dump(mb_ucfirst("đắt quá!"));
51var_dump(mb_ucfirst("აბგ"));
52var_dump(mb_ucfirst("lj"));
53echo "== mb_lcfirst ==\n";
54var_dump(mb_lcfirst("ABS"));
55var_dump(mb_lcfirst("Xin chào"));
56var_dump(mb_lcfirst("Đẹp quá!"));
57echo "== SJIS ==\n";
58var_dump(bin2hex(mb_ucfirst(mb_convert_encoding("ebi", "SJIS", "UTF-8"), "SJIS")));
59var_dump(bin2hex(mb_lcfirst(mb_convert_encoding("EBI", "SJIS", "UTF-8"), "SJIS")));
60var_dump(bin2hex(mb_ucfirst(hex2bin("8471"), "SJIS"))); /* б */
61var_dump(bin2hex(mb_lcfirst(hex2bin("8441"), "SJIS"))); /* Б */
62var_dump(bin2hex(mb_ucfirst(hex2bin("83bf"), "SJIS"))); /* α */
63var_dump(bin2hex(mb_lcfirst(hex2bin("839f"), "SJIS"))); /* Α */
64var_dump(bin2hex(mb_lcfirst(hex2bin("82a0"), "SJIS"))); /* あ */
65var_dump(bin2hex(mb_ucfirst(hex2bin("83bf8471"), "SJIS")));
66var_dump(bin2hex(mb_lcfirst(hex2bin("839f8441"), "SJIS")));
67echo "== EUC-JP ==\n";
68var_dump(bin2hex(mb_ucfirst(hex2bin("a6d8"), "EUC-JP"))); /* Ω */
69var_dump(bin2hex(mb_lcfirst(hex2bin("a6b8"), "EUC-JP"))); /* ω */
70var_dump(bin2hex(mb_ucfirst(hex2bin("a4a2a4a2"), "EUC-JP"))); /* あ */
71echo "== Longer strings ==\n";
72var_dump(mb_ucfirst("э" . str_repeat("A", 65536)) === "Э" . str_repeat("A", 65536));
73var_dump(mb_lcfirst("Э" . str_repeat("A", 65536)) === "э" . str_repeat("A", 65536));
74?>
75--EXPECT--
76== Empty String ==
77string(0) ""
78string(0) ""
79== ASCII ==
80Done mb_ucfirst
81Done mb_lcfirst
82== mb_ucfirst ==
83string(6) "Ab"
84string(9) "ABS"
85string(12) "Đắt quá!"
86string(9) "აბგ"
87string(2) "Lj"
88== mb_lcfirst ==
89string(9) "aBS"
90string(9) "xin chào"
91string(12) "đẹp quá!"
92== SJIS ==
93string(12) "826482828289"
94string(12) "828582618268"
95string(4) "8441"
96string(4) "8471"
97string(4) "839f"
98string(4) "83bf"
99string(4) "82a0"
100string(8) "839f8471"
101string(8) "83bf8441"
102== EUC-JP ==
103string(4) "a6b8"
104string(4) "a6d8"
105string(8) "a4a2a4a2"
106== Longer strings ==
107bool(true)
108bool(true)
109