956cb150534657158f399c7e4c29d0ad8dd3e760
[freeside.git] / rt / t / api / i18n_guess.t
1
2 use strict;
3 use warnings;
4
5 use RT::Test tests => 16;
6
7 use Encode qw(encode);
8
9 use constant HAS_ENCODE_GUESS => do { local $@; eval { require Encode::Guess; 1 } };
10 use constant HAS_ENCODE_DETECT => do { local $@; eval { require Encode::Detect::Detector; 1 } };
11
12 my $string = "\x{442}\x{435}\x{441}\x{442} \x{43f}\x{43e}\x{434}\x{434}\x{435}\x{440}\x{436}\x{43a}\x{430}";
13
14 sub guess {
15     local $Test::Builder::Level = $Test::Builder::Level + 1;
16     is( RT::I18N::_GuessCharset( Encode::encode($_[0], $_[1]) ), $_[2] || $_[0], "$_[0] guesses as @{[$_[2]||$_[0]]}" );
17 }
18
19 RT->Config->Set(EmailInputEncodings => qw(*));
20 SKIP: {
21     skip "No Encode::Detect", 3 unless HAS_ENCODE_DETECT;
22     guess('utf-8', $string);
23     guess('cp1251', $string);
24     guess('koi8-r', $string);
25 }
26
27 RT->Config->Set(EmailInputEncodings => qw(UTF-8 cp1251 koi8-r));
28 SKIP: {
29     skip "No Encode::Guess", 4 unless HAS_ENCODE_GUESS;
30     guess('utf-8', $string);
31     guess('cp1251', $string);
32     guess('windows-1251', $string, 'cp1251');
33     {
34         local $TODO = "Encode::Guess can't distinguish cp1251 from koi8-r";
35         guess('koi8-r', $string);
36     }
37 }
38
39 RT->Config->Set(EmailInputEncodings => qw(UTF-8 koi8-r cp1251));
40 SKIP: {
41     skip "No Encode::Guess", 3 unless HAS_ENCODE_GUESS;
42     guess('utf-8', $string);
43     guess('koi8-r', $string);
44     {
45         local $TODO = "Encode::Guess can't distinguish cp1251 from koi8-r";
46         guess('cp1251', $string);
47     }
48 }
49
50 # windows-1251 is an alias for cp1251, post load check cleanups array for us
51 RT->Config->Set(EmailInputEncodings => qw(UTF-8 windows-1251 koi8-r));
52 RT->Config->PostLoadCheck;
53 SKIP: {
54     skip "No Encode::Guess", 3 unless HAS_ENCODE_GUESS;
55     guess('utf-8', $string);
56     guess('cp1251', $string);
57     {
58         local $TODO = "Encode::Guess can't distinguish cp1251 from koi8-r";
59         guess('koi8-r', $string);
60     }
61 }
62
63 RT->Config->Set(EmailInputEncodings => qw(* UTF-8 cp1251 koi8-r));
64 SKIP: {
65     skip "No Encode::Detect", 3 unless HAS_ENCODE_DETECT;
66     guess('utf-8', $string);
67     guess('cp1251', $string);
68     guess('koi8-r', $string);
69 }
70