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

Reply via email to