[DBD::Pg 5/8] Refactor Unicode test to use anon hashes to describe the tests to run.
[email protected] Wed, 21 May 2014 15:35:14 +0000
| Newsgroups | perl.dbd.pg.changes |
|---|---|
| Message-ID | <[email protected]> |
Committed by Nicholas Clark <[email protected]> Subject: [DBD::Pg 5/8] Refactor Unicode test to use anon hashes to describe the tests to run. Rename the desired return value as $want, and there's no saving in assigning to $t for just one test. --- t/30unicode.t | 47 ++++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/t/30unicode.t b/t/30unicode.t index f4cd457..332f9fd 100644 --- a/t/30unicode.t +++ b/t/30unicode.t @@ -23,8 +23,6 @@ if (! $dbh) { isnt ($dbh, undef, 'Connect to database for unicode testing'); -my $t; - my $name_d = my $name_u = "\N{LATIN CAPITAL LETTER E WITH ACUTE}milie du Ch\N{LATIN SMALL LETTER A WITH CIRCUMFLEX}telet"; utf8::downgrade($name_d); utf8::upgrade($name_u); @@ -39,17 +37,32 @@ foreach ( [mixed => 'text[]' => [$name_d,$name_u]], ) { my ($state, $type, $value) = @$_; - foreach ( - [placeholder => "SELECT ?::$type", $value], + foreach my $test ( + { + qtype => 'placeholder', + sql => "SELECT ?::$type", + args => [$value], + }, (($type eq 'text') ? ( - [interpolated => "SELECT '$value'::$type"], + { + qtype => 'interpolated', + sql => "SELECT '$value'::$type", + }, ):()), ) { foreach my $enable_utf8 (1, 0, -1) { - my ($qtype, $sql, @args) = @$_; - my $desc = "$state UTF-8 $qtype $type (pg_enable_utf8=$enable_utf8)"; - is(utf8::is_utf8($sql), ($state eq 'upgraded'), "$desc query has correct flag") - if $qtype eq 'interpolated'; + my $desc = "$state UTF-8 $test->{qtype} $type (pg_enable_utf8=$enable_utf8)"; + my @args = @{$test->{args} || []}; + my $want; + if ($enable_utf8) { + $want = $value; + } else { + $want = ref $value ? [ map encode_utf8($_), @{$value} ] + : encode_utf8($value); + } + + is(utf8::is_utf8($test->{sql}), ($state eq 'upgraded'), "$desc query has correct flag") + if $test->{qtype} eq 'interpolated'; if ($state ne 'mixed') { foreach my $arg (map { ref($_) ? @{$_} : $_ } @args) { is(utf8::is_utf8($arg), ($state eq 'upgraded'), "$desc arg has correct flag") @@ -57,22 +70,18 @@ foreach ( } $dbh->{pg_enable_utf8} = $enable_utf8; - my $sth = $dbh->prepare($sql); + my $sth = $dbh->prepare($test->{sql}); $sth->execute(@args); my $result = $sth->fetchall_arrayref->[0][0]; - my $return_value = - $enable_utf8 ? $value : - ref $value ? [ map encode_utf8($_), @{$value} ] : - encode_utf8($value); - $t = "$desc returns proper value"; - is_deeply ($result, $return_value, $t); - $t = "$desc returns string with correct UTF-8 flag "; - is(utf8::is_utf8($_), !!$enable_utf8, $t) for (ref $result ? @{$result} : $result); + is_deeply ($result, $want, + "$desc returns proper value"); + is(utf8::is_utf8($_), !!$enable_utf8, "$desc returns string with correct UTF-8 flag") + for (ref $result ? @{$result} : $result); } } } -$t = 'Generated string is not utf8'; +my $t = 'Generated string is not utf8'; my $name = 'Ada Lovelace'; utf8::encode($name); ok (!utf8::is_utf8($name), $t); -- 1.8.4