1--TEST--
2mb_convert_variables()
3--SKIPIF--
4<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
5--INI--
6output_handler=
7mbstring.language=Japanese
8--FILE--
9<?php
10// TODO: Add more tests
11//$debug = true; // Uncomment this line to view error/warning/notice message in *.out file
12ini_set('include_path', __DIR__);
13include_once('common.inc');
14
15// SJIS string (BASE64 encoded)
16$sjis = base64_decode('k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg==');
17// JIS string (BASE64 encoded)
18$jis = base64_decode('GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg==');
19// EUC-JP string
20$euc_jp = '���ܸ�ƥ����ȤǤ���01234������������';
21
22// Test for single scalar
23echo "== SCALAR TEST ==\n";
24$s = $sjis;
25$encoding = mb_convert_variables('EUC-JP', 'SJIS', $s);
26print("$encoding\n"); // SJIS
27print("$s\n"); // Converted to EUC-JP
28
29$s = $jis;
30$encoding = mb_convert_variables('EUC-JP', 'JIS', $s);
31print("$encoding\n"); // JIS
32print("$s\n"); // Converted to EUC-JP
33
34$s = $euc_jp;
35$encoding = mb_convert_variables('SJIS', 'EUC-JP', $s);
36print("$encoding\n"); // EUC-JP
37print(base64_encode($s)."\n"); // Converted to SJIS (base64 encoded)
38
39$s = $euc_jp;
40$encoding = mb_convert_variables('JIS', 'EUC-JP', $s);
41print("$encoding\n"); // EUC-JP
42print(base64_encode($s)."\n"); // Converted to JIS (base64 encoded)
43
44// Test for multiple slcaler
45$s1 = $euc_jp;
46$s2 = $euc_jp;
47$s3 = $euc_jp;
48$encoding = mb_convert_variables('EUC-JP', 'auto', $s1, $s2, $s3);
49print("$encoding\n"); // EUC-JP
50print("$s1$s2$s3\n"); // Converted to EUC-JP
51
52
53
54// Note: Mixing encoding in array/object is not supported?
55// Test for array
56echo "== ARRAY TEST ==\n";
57$a = array($s3, $s2, $s1);
58$aa = $a;
59$encoding = mb_convert_variables('EUC-JP', 'auto', $aa);
60print("$encoding\n"); // EUC-JP
61print("{$aa[0]}{$aa[1]}{$aa[2]}\n"); // Converted to EUC-JP
62
63$a = array($s1, $s2, $s3);
64$aa = $a;
65$encoding = mb_convert_variables('EUC-JP', 'auto', $aa);
66print("$encoding\n"); // EUC-JP
67print("{$aa[0]}{$aa[1]}{$aa[2]}\n"); // Converted to EUC-JP
68
69
70
71// Test for object
72echo "== OBJECT TEST ==\n";
73class foo
74{
75    public $s1;
76    public $s2;
77    public $s3;
78
79    function __construct()
80    {
81        global $sjis, $jis, $euc_jp;
82
83        $this->s1 = $euc_jp;
84        $this->s2 = $euc_jp;
85        $this->s3 = $euc_jp;
86    }
87}
88
89class bar
90{
91    public $s1;
92    public $s2;
93    public $s3;
94
95    function __construct()
96    {
97        global $sjis, $jis, $euc_jp;
98
99        $this->s1 = $euc_jp;
100        $this->s2 = $euc_jp;
101        $this->s3 = $euc_jp;
102    }
103}
104
105
106$o = new foo;
107$oo = $o;
108$encoding = mb_convert_variables('EUC-JP', 'auto', $oo);
109print("$encoding\n");   // EUC-JP
110print("{$oo->s1}{$oo->s2}{$oo->s3}\n"); // Converted to EUC-JP
111
112$o = new bar;
113$oo = $o;
114$encoding = mb_convert_variables('EUC-JP', 'auto', $oo);
115print("$encoding\n"); // EUC-JP
116print("{$oo->s1}{$oo->s2}{$oo->s3}\n"); // Converted to EUC-JP
117
118
119// Test for scalar, array and object
120echo "== SCALAR, ARRAY AND OBJECT TEST ==\n";
121
122$s1 = $euc_jp;
123$s2 = $euc_jp;
124$s3 = $euc_jp;
125$aa = $a;
126$oo = $o;
127
128$encoding = mb_convert_variables('EUC-JP', 'auto', $s1, $s2, $s3, $aa, $oo);
129print("$encoding\n"); // EUC-JP
130print("$s1$s2$s3\n"); // Converted to EUC-JP
131print("{$aa[0]}{$aa[1]}{$aa[2]}\n"); // Converted to EUC-JP
132print("{$oo->s1}{$oo->s2}{$oo->s3}\n"); // Converted to EUC-JP
133
134
135?>
136--EXPECT--
137== SCALAR TEST ==
138SJIS
139���ܸ�ƥ����ȤǤ���01234������������
140JIS
141���ܸ�ƥ����ȤǤ���01234������������
142EUC-JP
143k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg==
144EUC-JP
145GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg==
146EUC-JP
147���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������
148== ARRAY TEST ==
149EUC-JP
150���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������
151EUC-JP
152���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������
153== OBJECT TEST ==
154EUC-JP
155���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������
156EUC-JP
157���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������
158== SCALAR, ARRAY AND OBJECT TEST ==
159EUC-JP
160���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������
161���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������
162���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������
163