File: not_utf8.t

package info (click to toggle)
libcdb-file-perl 1.05-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 764 kB
  • sloc: perl: 257; makefile: 11
file content (45 lines) | stat: -rw-r--r-- 1,278 bytes parent folder | download | duplicates (2)
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
#!perl

use strict;
use warnings;

use FindBin;
use lib "$FindBin::Bin/lib";
use Helpers;    # Local helper routines used by the test suite.

use Test::More;

plan tests => 5;

use CDB_File;

my ( $db, $db_tmp ) = get_db_file_pair(1);

# He breaks everyone else's database, let's make sure he doesn't break ours :P
my $avar = my $latin_avar = "\306var";
utf8::upgrade($avar);

# Dang accents!
my $leon                          = my $latin_leon = "L\350on";
my $leon_not_encoded_but_not_utf8 = "L\303\250on";
utf8::upgrade($leon);

my %a = qw(one Hello two Goodbye);
eval {
    my $t = CDB_File->new( $db->filename, $db_tmp->filename, utf8 => 0 ) or die "Failed to create cdb: $!";
    $t->insert(%a);
    $t->insert( $avar,       $leon );
    $t->insert( $latin_avar, 12345 );
    $t->finish;
};
is( "$@", '', "Create cdb" );

my %h;

# Test that good file works.
tie( %h, "CDB_File", $db->filename, 'utf8' => 0 ) and pass("Test that good file works");
is $h{$avar}, $leon_not_encoded_but_not_utf8, "Access a utf8 key and get back the utf8 sequence but without the utf8 flag.";
is( utf8::is_utf8( $h{$avar} ), '', "\$latin_avar is does not have the utf8 flag on." );
is $h{$latin_avar}, 12345, "Access of the latin1 key is not normalized so we get the alternate value.";

exit;