Commit | Line | Data |
7e19fb92 |
1 | # |
a37eaad4 |
2 | # $Id: mime-header.t,v 2.4 2009/01/21 22:55:07 dankogai Exp $ |
7e19fb92 |
3 | # This script is written in utf8 |
4 | # |
af1f55d9 |
5 | BEGIN { |
6 | if ($ENV{'PERL_CORE'}){ |
7 | chdir 't'; |
8 | unshift @INC, '../lib'; |
9 | } |
10 | require Config; import Config; |
11 | if ($Config{'extensions'} !~ /\bEncode\b/) { |
12 | print "1..0 # Skip: Encode was not built\n"; |
13 | exit 0; |
14 | } |
982a4085 |
15 | if (ord("A") == 193) { |
d1256cb1 |
16 | print "1..0 # Skip: EBCDIC\n"; |
17 | exit 0; |
982a4085 |
18 | } |
af1f55d9 |
19 | $| = 1; |
20 | } |
21 | |
b7d70e14 |
22 | no utf8; |
23 | |
af1f55d9 |
24 | use strict; |
7e19fb92 |
25 | #use Test::More qw(no_plan); |
64bc6d54 |
26 | use Test::More tests => 13; |
af1f55d9 |
27 | use_ok("Encode::MIME::Header"); |
28 | |
7e19fb92 |
29 | my $eheader =<<'EOS'; |
30 | From: =?US-ASCII?Q?Keith_Moore?= <moore@cs.utk.edu> |
31 | To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk> |
32 | CC: =?ISO-8859-1?Q?Andr=E9?= Pirard <PIRARD@vm1.ulg.ac.be> |
33 | Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?= |
34 | =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?= |
35 | EOS |
af1f55d9 |
36 | |
7e19fb92 |
37 | my $dheader=<<"EOS"; |
38 | From: Keith Moore <moore\@cs.utk.edu> |
39 | To: Keld J\xF8rn Simonsen <keld\@dkuug.dk> |
40 | CC: Andr\xE9 Pirard <PIRARD\@vm1.ulg.ac.be> |
41 | Subject: If you can read this you understand the example. |
42 | EOS |
43 | |
ab3374e4 |
44 | is(Encode::decode('MIME-Header', $eheader), $dheader, "decode ASCII (RFC2047)"); |
7e19fb92 |
45 | |
46 | use utf8; |
47 | |
ab3374e4 |
48 | my $uheader =<<'EOS'; |
49 | From: =?US-ASCII?Q?Keith_Moore?= <moore@cs.utk.edu> |
50 | To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk> |
51 | CC: =?ISO-8859-1?Q?Andr=E9?= Pirard <PIRARD@vm1.ulg.ac.be> |
52 | Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?= |
53 | =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?= |
54 | EOS |
55 | |
56 | is(Encode::decode('MIME-Header', $uheader), $dheader, "decode UTF-8 (RFC2047)"); |
57 | |
41c240f5 |
58 | my $lheader =<<'EOS'; |
59 | From: =?US-ASCII*en-US?Q?Keith_Moore?= <moore@cs.utk.edu> |
60 | To: =?ISO-8859-1*da-DK?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk> |
61 | CC: =?ISO-8859-1*fr-BE?Q?Andr=E9?= Pirard <PIRARD@vm1.ulg.ac.be> |
62 | Subject: =?ISO-8859-1*en?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?= |
63 | =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?= |
64 | EOS |
65 | |
66 | is(Encode::decode('MIME-Header', $lheader), $dheader, "decode language tag (RFC2231)"); |
67 | |
ab3374e4 |
68 | |
7e19fb92 |
69 | $dheader=<<'EOS'; |
70 | From: 小飼 弾 <dankogai@dan.co.jp> |
71 | To: dankogai@dan.co.jp (小飼=Kogai, 弾=Dan) |
72 | Subject: 漢字、カタカナ、ひらがなを含む、非常に長いタイトル行が一体全体どのようにしてEncodeされるのか? |
73 | EOS |
74 | |
75 | my $bheader =<<'EOS'; |
76 | From:=?UTF-8?B?IOWwj+mjvCDlvL4g?=<dankogai@dan.co.jp> |
77 | To: dankogai@dan.co.jp (=?UTF-8?B?5bCP6aO8?==Kogai,=?UTF-8?B?IOW8vg==?==Dan |
78 | ) |
79 | Subject: |
80 | =?UTF-8?B?IOa8ouWtl+OAgeOCq+OCv+OCq+ODiuOAgeOBsuOCieOBjOOBquOCkuWQq+OCgA==?= |
81 | =?UTF-8?B?44CB6Z2e5bi444Gr6ZW344GE44K/44Kk44OI44Or6KGM44GM5LiA5L2T5YWo?= |
82 | =?UTF-8?B?5L2T44Gp44Gu44KI44GG44Gr44GX44GmRW5jb2Rl44GV44KM44KL44Gu44GL?= |
83 | =?UTF-8?B?77yf?= |
84 | EOS |
85 | |
86 | my $qheader=<<'EOS'; |
87 | From:=?UTF-8?Q?=20=E5=B0=8F=E9=A3=BC=20=E5=BC=BE=20?=<dankogai@dan.co.jp> |
88 | To: dankogai@dan.co.jp (=?UTF-8?Q?=E5=B0=8F=E9=A3=BC?==Kogai, |
89 | =?UTF-8?Q?=20=E5=BC=BE?==Dan) |
90 | Subject: |
91 | =?UTF-8?Q?=20=E6=BC=A2=E5=AD=97=E3=80=81=E3=82=AB=E3=82=BF=E3=82=AB?= |
92 | =?UTF-8?Q?=E3=83=8A=E3=80=81=E3=81=B2=E3=82=89=E3=81=8C=E3=81=AA=E3=82=92?= |
93 | =?UTF-8?Q?=E5=90=AB=E3=82=80=E3=80=81=E9=9D=9E=E5=B8=B8=E3=81=AB=E9=95=B7?= |
94 | =?UTF-8?Q?=E3=81=84=E3=82=BF=E3=82=A4=E3=83=88=E3=83=AB=E8=A1=8C=E3=81=8C?= |
95 | =?UTF-8?Q?=E4=B8=80=E4=BD=93=E5=85=A8=E4=BD=93=E3=81=A9=E3=81=AE=E3=82=88?= |
96 | =?UTF-8?Q?=E3=81=86=E3=81=AB=E3=81=97=E3=81=A6Encode=E3=81=95?= |
97 | =?UTF-8?Q?=E3=82=8C=E3=82=8B=E3=81=AE=E3=81=8B=EF=BC=9F?= |
98 | EOS |
99 | |
100 | is(Encode::decode('MIME-Header', $bheader), $dheader, "decode B"); |
101 | is(Encode::decode('MIME-Header', $qheader), $dheader, "decode Q"); |
102 | is(Encode::encode('MIME-B', $dheader)."\n", $bheader, "encode B"); |
103 | is(Encode::encode('MIME-Q', $dheader)."\n", $qheader, "encode Q"); |
bedba681 |
104 | |
105 | $dheader = "What is =?UTF-8?B?w4RwZmVs?= ?"; |
106 | $bheader = "What is =?UTF-8?B?PT9VVEYtOD9CP3c0UndabVZzPz0=?= ?"; |
107 | $qheader = "What is =?UTF-8?Q?=3D=3FUTF=2D8=3FB=3Fw4RwZmVs=3F=3D?= ?"; |
108 | is(Encode::encode('MIME-B', $dheader), $bheader, "Double decode B"); |
109 | is(Encode::encode('MIME-Q', $dheader), $qheader, "Double decode Q"); |
b786ee6f |
110 | { |
111 | # From: Dave Evans <dave@rudolf.org.uk> |
112 | # Subject: Bug in Encode::MIME::Header |
113 | # Message-Id: <3F43440B.7060606@rudolf.org.uk> |
114 | use charnames ":full"; |
115 | my $pound_1024 = "\N{POUND SIGN}1024"; |
116 | is(Encode::encode('MIME-Q' => $pound_1024), '=?UTF-8?Q?=C2=A31024?=', |
117 | 'pound 1024'); |
118 | } |
51e4e64d |
119 | |
120 | is(Encode::encode('MIME-Q', "\x{fc}"), '=?UTF-8?Q?=C3=BC?=', 'Encode latin1 characters'); |
121 | |
64bc6d54 |
122 | # RT42627 |
123 | |
124 | my $rt42627 = Encode::decode_utf8("\x{c2}\x{a3}xxxxxxxxxxxxxxxxxxx0"); |
125 | is(Encode::encode('MIME-Q', $rt42627), |
126 | '=?UTF-8?Q?=C2=A3xxxxxxxxxxxxxxxxxxx?==?UTF-8?Q?0?=', |
127 | 'MIME-Q encoding does not truncate trailing zeros'); |
af1f55d9 |
128 | __END__; |