DBIx-Custom
/
t
/
dbi-custom-basic-sqlite.t
/
1 contributor
use Test::More;
use strict;
use warnings;
use utf8;
use Encode qw/decode encode/;
BEGIN {
eval { require DBD::SQLite; 1 }
or plan skip_all => 'DBD::SQLite required';
eval { DBD::SQLite->VERSION >= 1 }
or plan skip_all => 'DBD::SQLite >= 1.00 required';
plan 'no_plan';
use_ok('DBIx::Custom');
}
# Function for test name
my $test;
sub test {
$test = shift;
}
# Constant varialbes for test
my $CREATE_TABLE = {
0 => 'create table table1 (key1 char(255), key2 char(255));',
1 => 'create table table1 (key1 char(255), key2 char(255), key3 char(255), key4 char(255), key5 char(255));',
2 => 'create table table2 (key1 char(255), key3 char(255));'
};
my $SELECT_TMPL = {
0 => 'select * from table1;'
};
my $DROP_TABLE = {
0 => 'drop table table1'
};
my $NEW_ARGS = {
0 => {data_source => 'dbi:SQLite:dbname=:memory:'}
};
# Variables for test
my $dbi;
my $decoded_str;
my $encoded_str;
my $array;
use DBIx::Custom::Basic;
test 'Filter';
$dbi = DBIx::Custom::Basic->new($NEW_ARGS->{0});
ok($dbi->filters->{encode_utf8}, "$test : exists default_bind_filter");
ok($dbi->filters->{decode_utf8}, "$test : exists default_fetch_filter");
$dbi->utf8_filter_on;
is($dbi->bind_filter, $dbi->filters->{encode_utf8}, 'default bind filter');
is($dbi->fetch_filter, $dbi->filters->{decode_utf8}, 'default fetch filter');
$decoded_str = 'あ';
$encoded_str = $dbi->bind_filter->($decoded_str);
is($encoded_str, encode('UTF-8', $decoded_str), "$test : encode utf8");
is($decoded_str, $dbi->fetch_filter->($encoded_str), "$test : fetch_filter");
$decoded_str = 'a';
$encoded_str = $dbi->bind_filter->($decoded_str);
is($encoded_str, encode('UTF-8', $decoded_str), "$test : upgrade and encode utf8");
is($decoded_str, $dbi->fetch_filter->($encoded_str), "$test : fetch_filter");