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', dirname(__FILE__));
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 scaler
23echo "== SCALER 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 scaler, array and object
120echo "== SCALER, 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
137--EXPECT--
138== SCALER TEST ==
139SJIS
140���ܸ�ƥ����ȤǤ���01234������������
141JIS
142���ܸ�ƥ����ȤǤ���01234������������
143EUC-JP
144k/qWe4zqg2WDTINYg2eCxYK3gUIwMTIzNIJUglWCVoJXgliBQg==
145EUC-JP
146GyRCRnxLXDhsJUYlLSU5JUgkRyQ5ISMbKEIwMTIzNBskQiM1IzYjNyM4IzkhIxsoQg==
147EUC-JP
148���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������
149== ARRAY TEST ==
150EUC-JP
151���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������
152EUC-JP
153���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������
154== OBJECT TEST ==
155EUC-JP
156���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������
157EUC-JP
158���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������
159== SCALER, ARRAY AND OBJECT TEST ==
160EUC-JP
161���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������
162���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������
163���ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234���������������ܸ�ƥ����ȤǤ���01234������������
164
165