summaryrefslogtreecommitdiff
path: root/rt/t/api/i18n_guess.t
blob: 0a99011f2ccd0fd228506316b93cb82e934ef437 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68

use strict;
use warnings;

use RT::Test tests => 16;

use constant HAS_ENCODE_GUESS => Encode::Guess->require;
use constant HAS_ENCODE_DETECT => Encode::Detect::Detector->require;

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}";

sub guess {
    local $Test::Builder::Level = $Test::Builder::Level + 1;
    is( RT::I18N::_GuessCharset( Encode::encode($_[0], $_[1]) ), $_[2] || $_[0], "$_[0] guesses as @{[$_[2]||$_[0]]}" );
}

RT->Config->Set(EmailInputEncodings => qw(*));
SKIP: {
    skip "No Encode::Detect", 3 unless HAS_ENCODE_DETECT;
    guess('utf-8', $string);
    guess('cp1251', $string);
    guess('koi8-r', $string);
}

RT->Config->Set(EmailInputEncodings => qw(UTF-8 cp1251 koi8-r));
SKIP: {
    skip "No Encode::Guess", 4 unless HAS_ENCODE_GUESS;
    guess('utf-8', $string);
    guess('cp1251', $string);
    guess('windows-1251', $string, 'cp1251');
    {
        local $TODO = "Encode::Guess can't distinguish cp1251 from koi8-r";
        guess('koi8-r', $string);
    }
}

RT->Config->Set(EmailInputEncodings => qw(UTF-8 koi8-r cp1251));
SKIP: {
    skip "No Encode::Guess", 3 unless HAS_ENCODE_GUESS;
    guess('utf-8', $string);
    guess('koi8-r', $string);
    {
        local $TODO = "Encode::Guess can't distinguish cp1251 from koi8-r";
        guess('cp1251', $string);
    }
}

# windows-1251 is an alias for cp1251, post load check cleanups array for us
RT->Config->Set(EmailInputEncodings => qw(UTF-8 windows-1251 koi8-r));
RT->Config->PostLoadCheck;
SKIP: {
    skip "No Encode::Guess", 3 unless HAS_ENCODE_GUESS;
    guess('utf-8', $string);
    guess('cp1251', $string);
    {
        local $TODO = "Encode::Guess can't distinguish cp1251 from koi8-r";
        guess('koi8-r', $string);
    }
}

RT->Config->Set(EmailInputEncodings => qw(* UTF-8 cp1251 koi8-r));
SKIP: {
    skip "No Encode::Detect", 3 unless HAS_ENCODE_DETECT;
    guess('utf-8', $string);
    guess('cp1251', $string);
    guess('koi8-r', $string);
}